I had a summer student just finishing who worked on our implementation of gNMI. We struggled a bit with this question as well.
One clue came from the tools that Google provide at https://github.com/google/gnxi, which we were using to test our implementation. In, for example, the gnmi_get tool, the command line parameter "prefix" is a simple string which the help says can take on values like "oc" (for openconfig) or "srl" (for I don't know what). But this parameter is used to set the Origin field of the Prefix message. Setting Path values in the prefix does not appear to be supported by these tools.
Given that we didn't want to mess around with the tools too much, we decided to support Origin as the tool does. Origin values we are looking to support are "openconfig" and "ietf", and the use of these values is to create a mapping from origin and the first element in the path to a particular data model, when there would otherwise be ambiguity because the first element is shared among different models (for example openconfig-interfaces and ietf-interfaces).
This begs a whole lot of questions like what about use_models (as you asked) or what if origin appears elsewhere? This may well be something in real-world implementations that depends on the implementer, but hopefully when working with a particular target you will have enough information to be able to format your messages right.
To answer your other question:
On re-reading this answer I realise that it is fairly difficult to understand. I will try to revisit in case you have follow-up questions.