RAG & Search Engineering — Complete Reference
Build production-grade retrieval systems with hybrid search, grounded generation, and measurable quality.
This skill covers:
- RAG: Chunking, contextual retrieval, grounding, adaptive/self-correcting systems
- Search: BM25, vector search, hybrid fusion, ranking pipelines
- Evaluation: recall@k, nDCG, MRR, groundedness metrics
Modern Best Practices (Jan 2026):
Default posture: deterministic pipeline, bounded context, explicit failure handling, and telemetry for every stage.
Scope note: For prompt structure and output contracts used in the generation phase, see ai-prompt-engineering.
Quick Reference
| Task |
Tool/Framework |
Command/Pattern |
When to Use |
| Decide RAG vs alternatives |
Decision framework |
RAG if: freshness + citations + corpus size; else: fine-tune/caching |
Avoid unnecessary retrieval latency/complexity |
| Chunking & parsing |
Chunker + parser |
Start simple; add structure-aware chunking per doc type |
Ingestion for docs, code, tables, PDFs |
| Retrieval |
Sparse + dense (hybrid) |
Fusion (e.g., RRF) + metadata filters + top-k tuning |
Mixed query styles; high recall requirements |
| Precision boost |
Reranker |
Cross-encoder/LLM rerank of top-k candidates |
When top-k contains near-misses/noise |
| Grounding |
Output contract + citations |
Quote/ID citations; answerability gate; refuse on missing evidence |
Compliance, trust, and auditability |
| Evaluation |
Offline + online eval |
Retrieval metrics + answer metrics + regression tests |
Prevent silent regressions and staleness failures |
Decision Tree: RAG Architecture Selection
Building RAG system: [Architecture Path]
├─ Document type?
│ ├─ Page/section-structured? → Structure-aware chunking (pages/sections + metadata)
│ ├─ Technical docs/code? → Structure-aware + code-aware chunking (symbols, headers)
│ └─ Simple content? → Fixed-size token chunking with overlap (baseline)
│
├─ Retrieval accuracy low?
│ ├─ Query ambiguity? → Query rewriting + multi-query expansion + filters
│ ├─ Noisy results? → Add reranker + better metadata filters
│ └─ Mixed queries? → Hybrid retrieval (sparse + dense) + reranking
│
├─ Dataset size?
│ ├─ <100k chunks? → Flat index (exact search)
│ ├─ 100k-10M? → HNSW (low latency)
│ └─ >10M? → IVF/ScaNN/DiskANN (scalable)
│
└─ Production quality?
└─ Add: ACLs, freshness/invalidation, eval gates, and telemetry (end-to-end)
Core Concepts (Vendor-Agnostic)
- Pipeline stages: ingest → chunk → embed → index → retrieve → rerank → pack context → generate → verify.
- Two evaluation planes: retrieval relevance (did we fetch the right evidence?) vs generation fidelity (did we use it correctly?).
- Freshness model: staleness budget, invalidation triggers, and rebuild strategy (incremental vs full).
- Trust boundaries: retrieved content is untrusted; apply the same rigor as user input (OWASP LLM Top 10: https://owasp.org/www-project-top-10-for-large-language-model-applications/).
Implementation Practices (Tooling Examples)
- Use a retrieval API contract: query, filters, top_k, trace_id, and returned evidence IDs.
- Instrument each stage with tracing/metrics (OpenTelemetry GenAI semantic conventions: https://opentelemetry.io/docs/specs/semconv/gen-ai/).
- Add caches deliberately: embeddings cache, retrieval cache (query+filters), and response cache (with invalidation).
Do / Avoid
Do
- Do keep retrieval deterministic: fixed top_k, stable ranking, explicit filters.
- Do enforce document-level ACLs at retrieval time (not only at generation time).
- Do include citations with stable IDs and verify citation coverage in tests.
Avoid
- Avoid shipping RAG without a test set and regression gate.
- Avoid "stuff everything" context packing; it increases cost and can reduce accuracy.
- Avoid mixing corpora without metadata and tenant isolation.
When to Use This Skill
Use this skill when the user asks:
- "Help me design a RAG pipeline."
- "How should I chunk this document?"
- "Optimize retrieval for my use case."
- "My RAG system is hallucinating — fix it."
- "Choose the right vector database / index type."
- "Create a RAG evaluation framework."
- "Debug why retrieval gives irrelevant results."
Tool/Model Recommendation Protocol
When users ask for vendor/model/framework recommendations, validate claims against current primary sources.
Triggers
- "What's the best vector database for [use case]?"
- "What should I use for [chunking/embedding/reranking]?"
- "What's the latest in RAG development?"
- "Current best practices for [retrieval/grounding/evaluation]?"
- "Is [Pinecone/Qdrant/Chroma] still relevant in 2026?"
- "[Vector DB A] vs [Vector DB B]?"
- "Best embedding model for [use case]?"
- "What RAG framework should I use?"
Required Checks
- Read
data/sources.json and start from sources with "add_as_web_search": true.
- Verify 1-2 primary docs per recommendation (release notes, benchmarks, docs).
- If browsing isn't available, state assumptions and give a verification checklist.
What to Report
After checking, provide:
- Current landscape: What vector DBs/embeddings are popular NOW (not 6 months ago)
- Emerging trends: Techniques gaining traction (late interaction, agentic RAG, graph RAG)
- Deprecated/declining: Approaches or tools losing relevance
- Recommendation: Based on fresh data, not just static knowledge
Example Topics (verify with current sources)
- Vector databases (Pinecone, Qdrant, Weaviate, Milvus, pgvector, LanceDB)
- Embedding models (OpenAI, Cohere, Voyage AI, Jina, Sentence Transformers)
- Reranking (Cohere Rerank, Jina Reranker, FlashRank, RankGPT)
- RAG frameworks (LlamaIndex, LangChain, Haystack, txtai)
- Advanced RAG (contextual retrieval, agentic RAG, graph RAG, CRAG)
- Evaluation (RAGAS, TruLens, DeepEval, BEIR)
Related Skills
For adjacent topics, reference these skills:
- ai-llm - Prompting, fine-tuning, instruction datasets
- ai-agents - Agentic RAG workflows and tool routing
- ai-llm-inference - Serving performance, quantization, batching
- ai-mlops - Deployment, monitoring, security, privacy, and governance
- ai-prompt-engineering - Prompt patterns for RAG generation phase
Templates
System Design (Start Here)
Chunking & Ingestion
- Basic Chunking
- Code Chunking
- Long Document Chunking
Embedding & Indexing
- Index Configuration
- Metadata Schema
Retrieval & Reranking
- Retrieval Pipeline
- Hybrid Search
- Reranking
- Ranking Pipeline
- Reranker
Context Packaging & Grounding
- Context Packing
- Grounding
Evaluation
- RAG Evaluation
- RAG Test Set
- Search Evaluation
- Search Test Set
Search Configuration
- BM25 Configuration
- HNSW Configuration
- IVF Configuration
- Hybrid Configuration
Query Rewriting
Navigation
Resources
- references/advanced-rag-patterns.md
- references/agentic-rag-patterns.md
- references/bm25-tuning.md
- references/chunking-patterns.md
- references/chunking-strategies.md
- references/rag-evaluation-guide.md
- references/rag-troubleshooting.md
- references/contextual-retrieval-guide.md
- references/distributed-search-slos.md
- references/grounding-checklists.md
- references/hybrid-fusion-patterns.md
- references/index-selection-guide.md
- references/multilingual-domain-patterns.md
- references/pipeline-architecture.md
- references/query-rewriting-patterns.md
- references/ranking-pipeline-guide.md
- references/retrieval-patterns.md
- references/search-debugging.md
- references/search-evaluation-guide.md
- references/user-feedback-learning.md
- references/vector-search-patterns.md
- references/graph-rag-patterns.md
- references/embedding-model-guide.md
- references/rag-caching-patterns.md
Templates
- assets/context/template-context-packing.md
- assets/context/template-grounding.md
- assets/design/rag-system-design.md
- assets/chunking/template-basic-chunking.md
- assets/chunking/template-code-chunking.md
- assets/chunking/template-long-doc-chunking.md
- assets/retrieval/template-retrieval-pipeline.md
- assets/retrieval/template-hybrid-search.md
- assets/retrieval/template-reranking.md
- assets/eval/template-rag-eval.md
- assets/eval/template-rag-testset.jsonl
- assets/eval/template-search-eval.md
- assets/eval/template-search-testset.jsonl
- assets/indexing/template-index-config.md
- assets/indexing/template-metadata-schema.md
- assets/query/template-query-rewrite.md
- assets/ranking/template-ranking-pipeline.md
- assets/ranking/template-reranker.md
- assets/search/template-bm25-config.md
- assets/search/template-hnsw-config.md
- assets/search/template-ivf-config.md
- assets/search/template-hybrid-config.md
Data
- data/sources.json — Curated external references
Use this skill whenever the user needs retrieval-augmented system design or debugging, not prompt work or deployment.
Fact-Checking
- Use web search/web fetch to verify current external facts, versions, pricing, deadlines, regulations, or platform behavior before final answers.
- Prefer primary sources; report source links and dates for volatile information.
- If web access is unavailable, state the limitation and mark guidance as unverified.
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: ai-rag3description: RAG and search engineering — chunking, hybrid retrieval, reranking, and nDCG evaluation. Use when building retrieval-augmented generation pipelines. Use when this capability is needed.4---56# RAG & Search Engineering — Complete Reference78Build production-grade retrieval systems with **hybrid search**, **grounded generation**, and **measurable quality**.910This skill covers:1112- **RAG**: Chunking, contextual retrieval, grounding, adaptive/self-correcting systems13- **Search**: BM25, vector search, hybrid fusion, ranking pipelines14- **Evaluation**: recall@k, nDCG, MRR, groundedness metrics1516**Modern Best Practices (Jan 2026)**:1718- Separate **retrieval quality** from **answer quality**; evaluate both (RAG: https://arxiv.org/abs/2005.11401).19- Default to **hybrid retrieval** (sparse + dense) with **reranking** when precision matters (DPR: https://arxiv.org/abs/2004.04906).20- Use a failure taxonomy to debug systematically (Seven Failure Points in RAG: https://arxiv.org/abs/2401.05856).21- Treat **freshness/invalidation** as first-class; staleness is a correctness bug, not a UX issue.22- Add **grounding gates**: answerability checks, citation coverage checks, and refusal-on-missing-context defaults.23- Threat-model RAG: retrieved text is untrusted input (OWASP LLM Top 10: https://owasp.org/www-project-top-10-for-large-language-model-applications/).2425**Default posture**: deterministic pipeline, bounded context, explicit failure handling, and telemetry for every stage.2627**Scope note**: For prompt structure and output contracts used in the generation phase, see [ai-prompt-engineering](../ai-prompt-engineering/SKILL.md).2829## Quick Reference3031| Task | Tool/Framework | Command/Pattern | When to Use |32|------|----------------|-----------------|-------------|33| Decide RAG vs alternatives | Decision framework | RAG if: freshness + citations + corpus size; else: fine-tune/caching | Avoid unnecessary retrieval latency/complexity |34| Chunking & parsing | Chunker + parser | Start simple; add structure-aware chunking per doc type | Ingestion for docs, code, tables, PDFs |35| Retrieval | Sparse + dense (hybrid) | Fusion (e.g., RRF) + metadata filters + top-k tuning | Mixed query styles; high recall requirements |36| Precision boost | Reranker | Cross-encoder/LLM rerank of top-k candidates | When top-k contains near-misses/noise |37| Grounding | Output contract + citations | Quote/ID citations; answerability gate; refuse on missing evidence | Compliance, trust, and auditability |38| Evaluation | Offline + online eval | Retrieval metrics + answer metrics + regression tests | Prevent silent regressions and staleness failures |3940## Decision Tree: RAG Architecture Selection4142```text43Building RAG system: [Architecture Path]44 ├─ Document type?45 │ ├─ Page/section-structured? → Structure-aware chunking (pages/sections + metadata)46 │ ├─ Technical docs/code? → Structure-aware + code-aware chunking (symbols, headers)47 │ └─ Simple content? → Fixed-size token chunking with overlap (baseline)48 │49 ├─ Retrieval accuracy low?50 │ ├─ Query ambiguity? → Query rewriting + multi-query expansion + filters51 │ ├─ Noisy results? → Add reranker + better metadata filters52 │ └─ Mixed queries? → Hybrid retrieval (sparse + dense) + reranking53 │54 ├─ Dataset size?55 │ ├─ <100k chunks? → Flat index (exact search)56 │ ├─ 100k-10M? → HNSW (low latency)57 │ └─ >10M? → IVF/ScaNN/DiskANN (scalable)58 │59 └─ Production quality?60 └─ Add: ACLs, freshness/invalidation, eval gates, and telemetry (end-to-end)61```6263## Core Concepts (Vendor-Agnostic)6465- **Pipeline stages**: ingest → chunk → embed → index → retrieve → rerank → pack context → generate → verify.66- **Two evaluation planes**: retrieval relevance (did we fetch the right evidence?) vs generation fidelity (did we use it correctly?).67- **Freshness model**: staleness budget, invalidation triggers, and rebuild strategy (incremental vs full).68- **Trust boundaries**: retrieved content is untrusted; apply the same rigor as user input (OWASP LLM Top 10: https://owasp.org/www-project-top-10-for-large-language-model-applications/).6970## Implementation Practices (Tooling Examples)7172- Use a **retrieval API contract**: query, filters, top_k, trace_id, and returned evidence IDs.73- Instrument each stage with tracing/metrics (OpenTelemetry GenAI semantic conventions: https://opentelemetry.io/docs/specs/semconv/gen-ai/).74- Add **caches** deliberately: embeddings cache, retrieval cache (query+filters), and response cache (with invalidation).7576## Do / Avoid7778**Do**79- Do keep retrieval deterministic: fixed top_k, stable ranking, explicit filters.80- Do enforce document-level ACLs at retrieval time (not only at generation time).81- Do include citations with stable IDs and verify citation coverage in tests.8283**Avoid**84- Avoid shipping RAG without a test set and regression gate.85- Avoid "stuff everything" context packing; it increases cost and can reduce accuracy.86- Avoid mixing corpora without metadata and tenant isolation.8788## When to Use This Skill8990Use this skill when the user asks:9192- "Help me design a RAG pipeline."93- "How should I chunk this document?"94- "Optimize retrieval for my use case."95- "My RAG system is hallucinating — fix it."96- "Choose the right vector database / index type."97- "Create a RAG evaluation framework."98- "Debug why retrieval gives irrelevant results."99100## Tool/Model Recommendation Protocol101102When users ask for vendor/model/framework recommendations, validate claims against current primary sources.103104### Triggers105106- "What's the best vector database for [use case]?"107- "What should I use for [chunking/embedding/reranking]?"108- "What's the latest in RAG development?"109- "Current best practices for [retrieval/grounding/evaluation]?"110- "Is [Pinecone/Qdrant/Chroma] still relevant in 2026?"111- "[Vector DB A] vs [Vector DB B]?"112- "Best embedding model for [use case]?"113- "What RAG framework should I use?"114115### Required Checks1161171. Read `data/sources.json` and start from sources with `"add_as_web_search": true`.1182. Verify 1-2 primary docs per recommendation (release notes, benchmarks, docs).1193. If browsing isn't available, state assumptions and give a verification checklist.120121### What to Report122123After checking, provide:124125- **Current landscape**: What vector DBs/embeddings are popular NOW (not 6 months ago)126- **Emerging trends**: Techniques gaining traction (late interaction, agentic RAG, graph RAG)127- **Deprecated/declining**: Approaches or tools losing relevance128- **Recommendation**: Based on fresh data, not just static knowledge129130### Example Topics (verify with current sources)131132- Vector databases (Pinecone, Qdrant, Weaviate, Milvus, pgvector, LanceDB)133- Embedding models (OpenAI, Cohere, Voyage AI, Jina, Sentence Transformers)134- Reranking (Cohere Rerank, Jina Reranker, FlashRank, RankGPT)135- RAG frameworks (LlamaIndex, LangChain, Haystack, txtai)136- Advanced RAG (contextual retrieval, agentic RAG, graph RAG, CRAG)137- Evaluation (RAGAS, TruLens, DeepEval, BEIR)138139## Related Skills140141For adjacent topics, reference these skills:142143- **[ai-llm](../ai-llm/SKILL.md)** - Prompting, fine-tuning, instruction datasets144- **[ai-agents](../ai-agents/SKILL.md)** - Agentic RAG workflows and tool routing145- **[ai-llm-inference](../ai-llm-inference/SKILL.md)** - Serving performance, quantization, batching146- **[ai-mlops](../ai-mlops/SKILL.md)** - Deployment, monitoring, security, privacy, and governance147- **[ai-prompt-engineering](../ai-prompt-engineering/SKILL.md)** - Prompt patterns for RAG generation phase148149## Templates150151### System Design (Start Here)152153- [RAG System Design](assets/design/rag-system-design.md)154155### Chunking & Ingestion156157- [Basic Chunking](assets/chunking/template-basic-chunking.md)158- [Code Chunking](assets/chunking/template-code-chunking.md)159- [Long Document Chunking](assets/chunking/template-long-doc-chunking.md)160161### Embedding & Indexing162163- [Index Configuration](assets/indexing/template-index-config.md)164- [Metadata Schema](assets/indexing/template-metadata-schema.md)165166### Retrieval & Reranking167168- [Retrieval Pipeline](assets/retrieval/template-retrieval-pipeline.md)169- [Hybrid Search](assets/retrieval/template-hybrid-search.md)170- [Reranking](assets/retrieval/template-reranking.md)171- [Ranking Pipeline](assets/ranking/template-ranking-pipeline.md)172- [Reranker](assets/ranking/template-reranker.md)173174### Context Packaging & Grounding175176- [Context Packing](assets/context/template-context-packing.md)177- [Grounding](assets/context/template-grounding.md)178179### Evaluation180181- [RAG Evaluation](assets/eval/template-rag-eval.md)182- [RAG Test Set](assets/eval/template-rag-testset.jsonl)183- [Search Evaluation](assets/eval/template-search-eval.md)184- [Search Test Set](assets/eval/template-search-testset.jsonl)185186### Search Configuration187188- [BM25 Configuration](assets/search/template-bm25-config.md)189- [HNSW Configuration](assets/search/template-hnsw-config.md)190- [IVF Configuration](assets/search/template-ivf-config.md)191- [Hybrid Configuration](assets/search/template-hybrid-config.md)192193### Query Rewriting194195- [Query Rewrite](assets/query/template-query-rewrite.md)196197## Navigation198199**Resources**200201- [references/advanced-rag-patterns.md](references/advanced-rag-patterns.md)202- [references/agentic-rag-patterns.md](references/agentic-rag-patterns.md)203- [references/bm25-tuning.md](references/bm25-tuning.md)204- [references/chunking-patterns.md](references/chunking-patterns.md)205- [references/chunking-strategies.md](references/chunking-strategies.md)206- [references/rag-evaluation-guide.md](references/rag-evaluation-guide.md)207- [references/rag-troubleshooting.md](references/rag-troubleshooting.md)208- [references/contextual-retrieval-guide.md](references/contextual-retrieval-guide.md)209- [references/distributed-search-slos.md](references/distributed-search-slos.md)210- [references/grounding-checklists.md](references/grounding-checklists.md)211- [references/hybrid-fusion-patterns.md](references/hybrid-fusion-patterns.md)212- [references/index-selection-guide.md](references/index-selection-guide.md)213- [references/multilingual-domain-patterns.md](references/multilingual-domain-patterns.md)214- [references/pipeline-architecture.md](references/pipeline-architecture.md)215- [references/query-rewriting-patterns.md](references/query-rewriting-patterns.md)216- [references/ranking-pipeline-guide.md](references/ranking-pipeline-guide.md)217- [references/retrieval-patterns.md](references/retrieval-patterns.md)218- [references/search-debugging.md](references/search-debugging.md)219- [references/search-evaluation-guide.md](references/search-evaluation-guide.md)220- [references/user-feedback-learning.md](references/user-feedback-learning.md)221- [references/vector-search-patterns.md](references/vector-search-patterns.md)222- [references/graph-rag-patterns.md](references/graph-rag-patterns.md)223- [references/embedding-model-guide.md](references/embedding-model-guide.md)224- [references/rag-caching-patterns.md](references/rag-caching-patterns.md)225226**Templates**227- [assets/context/template-context-packing.md](assets/context/template-context-packing.md)228- [assets/context/template-grounding.md](assets/context/template-grounding.md)229- [assets/design/rag-system-design.md](assets/design/rag-system-design.md)230- [assets/chunking/template-basic-chunking.md](assets/chunking/template-basic-chunking.md)231- [assets/chunking/template-code-chunking.md](assets/chunking/template-code-chunking.md)232- [assets/chunking/template-long-doc-chunking.md](assets/chunking/template-long-doc-chunking.md)233- [assets/retrieval/template-retrieval-pipeline.md](assets/retrieval/template-retrieval-pipeline.md)234- [assets/retrieval/template-hybrid-search.md](assets/retrieval/template-hybrid-search.md)235- [assets/retrieval/template-reranking.md](assets/retrieval/template-reranking.md)236- [assets/eval/template-rag-eval.md](assets/eval/template-rag-eval.md)237- [assets/eval/template-rag-testset.jsonl](assets/eval/template-rag-testset.jsonl)238- [assets/eval/template-search-eval.md](assets/eval/template-search-eval.md)239- [assets/eval/template-search-testset.jsonl](assets/eval/template-search-testset.jsonl)240- [assets/indexing/template-index-config.md](assets/indexing/template-index-config.md)241- [assets/indexing/template-metadata-schema.md](assets/indexing/template-metadata-schema.md)242- [assets/query/template-query-rewrite.md](assets/query/template-query-rewrite.md)243- [assets/ranking/template-ranking-pipeline.md](assets/ranking/template-ranking-pipeline.md)244- [assets/ranking/template-reranker.md](assets/ranking/template-reranker.md)245- [assets/search/template-bm25-config.md](assets/search/template-bm25-config.md)246- [assets/search/template-hnsw-config.md](assets/search/template-hnsw-config.md)247- [assets/search/template-ivf-config.md](assets/search/template-ivf-config.md)248- [assets/search/template-hybrid-config.md](assets/search/template-hybrid-config.md)249250**Data**251- [data/sources.json](data/sources.json) — Curated external references252253Use this skill whenever the user needs **retrieval-augmented system design or debugging**, not prompt work or deployment.254255## Fact-Checking256257- Use web search/web fetch to verify current external facts, versions, pricing, deadlines, regulations, or platform behavior before final answers.258- Prefer primary sources; report source links and dates for volatile information.259- If web access is unavailable, state the limitation and mark guidance as unverified.260261---262> Converted and distributed by [TomeVault](https://tomevault.io/claim/vasilyu1983) — claim your Tome and manage your conversions.263<!-- tomevault:4.0:skill_md:2026-04-11 -->