RAG is more than just embedding
90% of time when people say "Retrieval-augmented generation" they mean that the index is built using an embedding model like OpenAI's text-embedding-002
and a vector database like Chroma, but it doesn't have to be this way. Retrieval is a long-standing problem in computer science -- a couple of PhD students made a breakthrough in the field in the 90s and turned this into Google -- and there are many approaches to it.
A very simple one would be to build an index based on counting keywords, which is what tf-idf does with some bells and whistles. Or you could literally use Algolia, or ElasticSearch, or another search/retrieval framework to do RAG. Heck, in some domains, grep
might be the best retriever possible.
I think the "old" retrieval methods are undervalued and embedding-plus-vector-DB approach is way overused. If I had to guess, most use cases would benefit from some form of hybrid between different methods. It's decades since Google was a single algorithm... so why should your app's retrieval be any different?