If you want to create embeddings at the sentence level, a good place to start is SBERT: https://www.sbert.net/
I guess what still doesn't add up in my mental model is how people seem to assume that the query embedding vector must somehow automatically be near good answer embedding vectors. I would have assumed that some conditions have to be met to make this true and I would be interested into advice in that regard, or alternatively an explanation why I'm wrong with my assumption.
This not how 99% of embedding models work(though you can train for specific tasks) but as it turns out such a thing is possible and is beneficial.
Instruct tuned embedding model here - https://instructor-embedding.github.io/
Sbert needs to be finetuned to get anwhere near good results if the training objective deviates from the original one. Word2Vec can be estimated from collections of tokens in an unsupervised fashion, so it definitely has its place even today.
If I create more fancy vectors, for example on the sentence level, it is not really clear to me how that is supposed to work.
Why is the vector embedding of a query, which typically has the sentence structure of a question, near the vector embedding of a propositional sentence that answers that query? Sure, it will probably not be completely off, just for the fact that query and answer will contain similar words, but how can that be better than just a fuzzy word search?
And finally: Should I decide on on particular level (like sentences) and store that or should I store word2vec and sentence and paragraph vectors in the same collection?