RAG Production: Why Vector DBs Aren't Enough
Connecting an LLM to a vector database is a 10-minute demo, but it's almost never a production-ready retrieval system. The gap between a "it works on my machine" PoC and a reliable AI workflow is massive, mostly because semantic search is surprisingly noisy.
In my experience, the "naive RAG" approach fails the moment you hit real-world data. You run into the classic retrieval failure: the vector database returns chunks that are mathematically similar (cosine similarity) but contextually useless, leading to hallucinations or "I don't know" responses even when the answer is in the docs.
To actually move toward a production-grade deployment, you have to solve for these specific bottlenecks:
- Chunking Strategy: Fixed-size windows usually break the meaning of the text. Moving to semantic chunking or recursive character splitting is mandatory.
- Retrieval Noise: Top-K retrieval is too blunt. You need a re-ranking step (using a Cross-Encoder) to filter out the garbage before the prompt hits the LLM.
- Query Transformation: Users are bad at searching. Implementing query expansion or HyDE (Hypothetical Document Embeddings) helps align the user's natural language with the stored embeddings.
- Context Window Management: Just because a model has a 128k window doesn't mean you should stuff it. Irrelevant noise in the middle of the prompt degrades the quality of the output.
All Replies (3)
Frustrated after a month of tuning chunks. Is metadata filtering the only way to fix this?
Curious if reranking actually improves results or if the latency spike is too high.

Hybrid search saves me every time embeddings miss a keyword. Which ranking algorithm are you using?