The current documentation for CFrame.fromMatrix says that it “Creates a CFrame from a translation and the columns of a rotation matrix.”
For clarity, it should be added that
vX is the right vector,
vY is the up vector, and
vZ is the negative look vector. My reasoning is that I can never recall in which order they go and would prefer to not derive it every time.