5 ms·
The vectors are literally constructed so that cosine similarity is semantic similarity. > second unstated assumption is that the vector index can accurately id
by brigadier132 3y ago
The vectors are literally constructed so that cosine similarity is semantic similarity.
> second unstated assumption is that the vector index can accurately identify the top K vectors by cosine similarity, and that's not true either
Its not unstated, its called ANN for a reason
- spott 3y agoTo be fair… semantic similarity isn’t the same as relevance either. They are related, and we frequently assume they are close enough that it doesn’t matter, but they are different.
- brigadier132 3y agoI disagree, the embeddings are what are used by the llms themselves to produce relevant output and the output is relevant ergo the embeddings do produce relevant output via similarity search
- viscanti 3y agoNot if you're using ANN. In some cases that will be very similar to exhaustive search but in other cases you'll get results that you don't want. You also need embeddings that distribute things mostly evenly across the embedding space (not all will).
- spott 3y agoYou probably aren’t using an LLM for your text embeddings for document retrieval (they don’t perform as well as specialist embedding models[0]), and even if they did, you have an embedding about a bare document, without any context of what you are trying to get out of it. If you were to add your context in and then get an embedding, you would get a different answer. As your query gets specific, irrelevant aspects of the embedding space can overwhelm the similarity function, leading to irrelevant answers that are still semantically similar. [0] https://huggingface.co/spaces/mteb/leaderboard https://huggingface.co/spaces/mteb/leaderboard
- regularfry 3y agoThe recent SILO-LM paper has a slightly different approach: rather than using input embeddings and prompting the LLM with documents, it searches the database according to the LLM's output embedding and uses KNN search to skew the output embedding vector before token generation. Done that way round, using LLM embeddings outperforms RAG, allegedly. They did it with a custom language model. I really want to give this a try with llama2 embeddings but haven't had the bandwidth yet (and llama2's embedding vectors are inconveniently huge, but that's a different problem).
- spott 3y agoInteresting! I’ll have to look into that.
- viraptor 3y agoConsider the extreme case: when I ask a question about X, then a page with just the questions about X will get the highest similarity. But what I want in terms of relevance for the answer is a page with a little bit about X and lots of surrounding context that answers the question. By definition the extra context will likely lower the similarity.
- petra 3y agoThat's interesting. Are there any good sources to learn more about that?
- BoorishBears 3y agoThis is kind of a moot argument, semantic similarity is higher dimensionality than cosine similarity can capture. If I'm using vectors for question/answer, then: "What is a cat" and "What is a dog" Should be more dissimilar than the documents answering either. If I'm using it for FAQ filtering then they should be more similar.
- reissbaker 3y agoI've had decent results using a doc2query style approach: 1. Ask an LLM to return a list of questions answered by the document 2. Store the embeddings of the questions along with a document ID 3. On user query, get the embedding of the user query 4. KNN cosine similarity search the user embedding vs. the corpus of question embeddings 5. Return the highest ranked documents You can tweak this approach depending on your use case, so that in step 1 you generate embeddings that are more similar to the types of things you want returned in step 5. If you want the answer to "What is a cat" to be similar to "What is a dog," you'd prompt/finetune the LLM in step 1 to generate broad questions that would encompass both; if you want them to be very different, you'd do the opposite and avoid generalities.
- BoorishBears 3y agoYou just reinvented a 2 year old technique with a more expensive pipeline and missed performance gains (from the cross-encoder step): https://www.sbert.net/examples/domain_adaptation/README.html https://www.sbert.net/examples/domain_adaptation/README.html https://arxiv.org/abs/2112.07577 https://arxiv.org/abs/2112.07577
- reissbaker 3y agoI'm aware of more efficient ways to do it! (Hence referencing e.g. doc2query.) But you have to train a model, whereas with an LLM you can get a working version in 5mins of work.
- BoorishBears 3y ago
- godelski 3y ago> The vectors are literally constructed so that cosine similarity is semantic similarity. Are they? A learned embedding doesn't guarantee this and a positional embedding certainly doesn't. Our latent embeddings don't either unless you are inferring this through the dot product in the attention mechanism. But that too is learned. There are no guarantees that the similarities that they learn are the same things we consider as similarities. High dimensional space is really weird. And while we're at it, we should mention that methods like t-SNE and UMAP are clustering algorithms not dimensional reduction. Just because they can find ways to cluster the data in a lower dimensional projection (epic mapping) doesn't mean that they are similar in the higher dimensional space. It all depends on the ability to unknot in the higher dimensional space. It is extremely important to do what the OP is doing and consider the assumptions of the model, data, and measurements. Good results do not necessarily mean good methods. I like to say that you don't need to know math to make a good model, but you do need to know math to know why your model is wrong. Your comment just comes off as dismissive rather than actually countering the claims. There's plenty more assumptions than OP listed too. But their assumptions don't mean the model won't work, it just means what constraints the model is working under. We want to understand the constraints/assumptions if we want to make better models. Large models have advantages because they can have larger latent spaces and that gives them a lot of freedom to unknot data and move them around as they please. But that doesn't mean the methods are efficient.
- zwaps 3y agoDo you know how embedding models are trained?
- godelski 3y agoYes. My comment is about the geometry of higher dimensions and their meanings. These are not the same as in {2,3}D
- rolisz 3y agoThere are embeddings that are trained to reflect similarity, for example SentenceBERT, where the training process pushes pairs of similar sentences (as defined by whoever built the dataset) to have closer embeddings and dissimilar sentences to be further apart.
- sgt101 3y agoyes - but calculating the consine similarity for all the candidates is prohibitively expensive. hence heuristic.