For example, consider the gradient vector of a function
Obviously, $\nabla f(x_o,y_o)$ on the above figure is not attached to the origin. But attached to the point for which it is evaluated at.
But shouldn't it be attached to the origin instead? Isn't that the correct interpretation of a vector on $\mathbb{R}^2$


A vector from point $p_1=(x_1,y_1)$ to point $p_2=(x_2,y_2)$ can be found by subtracting the corresponding coordinates of $p_1$ from $p_2$. That is,
$$ \vec{p_1p_2} = \langle x_2-x_1, y_2-y_1\rangle $$
This follows from the fact that we move $x_2-x_1$ units on the $x$-axis from $x_1$ to get to $x_2$, and we move $y_2-y_1$ units on the $y$-axis from $y_1$ to get to get $y_2$.
As an example, consider the points $(1,2)$ and $(4,6)$. Then, the vector between them would be $\langle 3,4 \rangle$, because we moved three units to the right of $1$ and up $4$ units from $2$.
But now consider the points $(10,11)$ and $(13,16)$. The vector between these points is also $\langle 3, 4 \rangle$.
Now consider the points $(0,0)$ and $(3,4)$. The vector between these points is $\langle 3,4 \rangle$.
As mentioned in the comments, vectors only have magnitudes and directions. They don't have a position because it doesn't matter where we start our vector -- we'd always get the same vector, like above.