# Making Retrieval Better: Filters, MMR, Reranking — LangChain / LlamaIndex

Source: https://www.geekswithgeeks.com/en/langchain-llamaindex/r-quality

> Improve what reaches the prompt.

## Quality in, quality out

Most RAG failures are retrieval failures. Improvements available in LangChain and its integrations: **metadata filters** to restrict by tenant, date or permissions; **MMR** (`search_type="mmr"`) to diversify near-duplicate results; **hybrid search** combining keyword and vector scores where the store supports it; **multi-query retrieval** that asks the model to rewrite the question several ways; **contextual compression and rerankers** that re-order or trim retrieved passages; and a **parent-document** retriever that matches small chunks but returns larger sections. Measure with a set of real questions (recall@k) before and after each change.

## Change one thing, re-measure

Chunk size, k, embeddings and reranking interact. Test them one at a time on the same questions.

**Quiz:** What does MMR add to retrieval?

- [x] More diverse results by reducing near-duplicates
- [ ] Faster GPUs
- [ ] Free embeddings
- [ ] Automatic fine-tuning

*Answer:* More diverse results by reducing near-duplicates. Maximal marginal relevance balances relevance with diversity.
