Here is why the electric dipole moment vector is always directed from negative to positive charge mathematically. (And you can have a dipole moment without having two opposite charges as well.)
When we study the multipole expansion of electric potential for any general electric charge distribution, the definition of electric dipole moment comes out to be
$$
\vec{p} = \int_V \vec{r} \, \rho(\vec{r}) \, dV
$$
for continuous charge distributions as $\rho(\vec{r})$. Other symbols have the usual meaning.
Similarly for discrete charge distributions, the definition is
$$
\vec{p} = \sum_i \vec{r}_i q_i \,.
$$
From the above formula, it is evident that a pure monopole is a single charge at origin. If it's not at origin it can have a dipole moment too.
Next dipole moments are independent of origin if the net charge in the system is zero. Consider the system given below:
1.
Here we have two charges $+q$ and $-q$ separated by a distance $d$. Net charge in the system is zero. Now if we choose them to be on $X$ axis with the positive charge at the origin. Then the dipole moment of the system is $ -q d \hat{i} $. Obviously this is a vector with direction from the negative to positive charge.
Now if we shift the coordinate system, so that the negative charge is now at origin, then
the dipole moment is $qd(-\hat{i})$. Again the same result with same direction.
One last case: Origin lies exactly in the middle:
Here also the dipole moment is $ -q\frac{d}{2}\hat{i} + q\frac{d}{2}(-\hat{i}) = -q d \hat{i}.$ So no matter where you choose your origin you will get the same vector as long as the net charge of the system is zero. If it's not zero then the dipole moment is origin dependent.
And that's why at the elementary level we were taught that the dipole moment is always directed from negative to positive charge.