名称: ai-rag 描述: 完整的RAG与搜索工程技能。涵盖分块策略、混合检索(BM25 + 向量)、交叉编码器重排序、查询重写、排名管道、nDCG/MRR评估以及生产搜索系统。检索增强生成和语义搜索的现代模式。
RAG与搜索工程 — 完全参考
构建生产级检索系统,具备混合搜索、基于证据的生成和可衡量的质量。
本技能涵盖:
- RAG: 分块、上下文检索、基于证据、自适应/自我修正系统
- 搜索: BM25、向量搜索、混合融合、排名管道
- 评估: 召回率@k、nDCG、MRR、基于证据的指标
现代最佳实践(2026年1月):
- 分离检索质量与答案质量;评估两者(RAG: https://arxiv.org/abs/2005.11401)。
- 默认使用混合检索(稀疏 + 密集)和重排序当精度重要时(DPR: https://arxiv.org/abs/2004.04906)。
- 使用失败分类法进行系统调试(RAG中的七个失败点: https://arxiv.org/abs/2401.05856)。
- 将新鲜度/失效视为首要问题;过时是正确性错误,而非用户体验问题。
- 添加基于证据的门控: 可回答性检查、引用覆盖检查以及在缺失上下文时默认拒绝。
- 威胁建模RAG: 检索文本是不可信输入(OWASP LLM Top 10: https://owasp.org/www-project-top-10-for-large-language-model-applications/)。
默认姿态: 确定性管道、有界上下文、显式失败处理和每个阶段的遥测。
范围说明: 关于生成阶段使用的提示结构和输出合约,请参见 ai-prompt-engineering。
快速参考
| 任务 | 工具/框架 | 命令/模式 | 使用时机 |
|---|---|---|---|
| 决定RAG与替代方案 | 决策框架 | 使用RAG如果: 新鲜度 + 引用 + 语料库大小; 否则: 微调/缓存 | 避免不必要的检索延迟/复杂性 |
| 分块与解析 | 分块器 + 解析器 | 从简单开始; 根据文档类型添加结构感知分块 | 文档、代码、表格、PDF的摄取 |
| 检索 | 稀疏 + 密集(混合) | 融合(如RRF)+ 元数据过滤器 + top-k调优 | 混合查询风格; 高召回需求 |
| 精度提升 | 重排序器 | 对top-k候选进行交叉编码器/LLM重排序 | 当top-k包含近失或噪音时 |
| 基于证据 | 输出合约 + 引用 | 引用/ID引用; 可回答性门控; 在缺失证据时拒绝 | 合规性、信任和可审计性 |
| 评估 | 离线 + 在线评估 | 检索指标 + 答案指标 + 回归测试 | 防止静默回归和过时失败 |
决策树: RAG架构选择
构建RAG系统: [架构路径]
├─ 文档类型?
│ ├─ 页面/部分结构? → 结构感知分块(页面/部分 + 元数据)
│ ├─ 技术文档/代码? → 结构感知 + 代码感知分块(符号、标题)
│ └─ 简单内容? → 固定大小令牌分块与重叠(基线)
│
├─ 检索精度低?
│ ├─ 查询歧义? → 查询重写 + 多查询扩展 + 过滤器
│ ├─ 结果噪音大? → 添加重排序器 + 更好的元数据过滤器
│ └─ 混合查询? → 混合检索(稀疏 + 密集)+ 重排序
│
├─ 数据集大小?
│ ├─ <100k分块? → 扁平索引(精确搜索)
│ ├─ 100k-10M? → HNSW(低延迟)
│ └─ >10M? → IVF/ScaNN/DiskANN(可扩展)
│
└─ 生产质量?
└─ 添加: ACLs、新鲜度/失效、评估门控和遥测(端到端)
核心概念(供应商无关)
- 管道阶段: 摄取 → 分块 → 嵌入 → 索引 → 检索 → 重排序 → 打包上下文 → 生成 → 验证。
- 两个评估平面: 检索相关性(我们获取了正确的证据吗?) vs 生成保真度(我们正确使用了吗?)。
- 新鲜度模型: 过时预算、失效触发器和重建策略(增量 vs 完全)。
- 信任边界: 检索内容不可信;应用与用户输入相同的严格性(OWASP LLM Top 10: https://owasp.org/www-project-top-10-for-large-language-model-applications/)。
实现实践(工具示例)
- 使用检索API合约: 查询、过滤器、top_k、trace_id和返回的证据ID。
- 为每个阶段添加追踪/指标(OpenTelemetry GenAI语义约定: https://opentelemetry.io/docs/specs/semconv/gen-ai/)。
- 有意识地添加缓存: 嵌入缓存、检索缓存(查询+过滤器)和响应缓存(带失效)。
做 / 避免
做
- 做保持检索确定性: 固定top_k、稳定排名、显式过滤器。
- 做在检索时强制执行文档级ACLs(不仅在生成时)。
- 做包含带稳定ID的引用,并在测试中验证引用覆盖。
避免
- 避免没有测试集和回归门控就部署RAG。
- 避免“塞入所有内容”的上下文打包;它增加成本并可能降低准确性。
- 避免在没有元数据和租户隔离的情况下混合语料库。
何时使用本技能
当用户询问时使用本技能:
- “帮我设计一个RAG管道。”
- “我应该如何分块这个文档?”
- “为我的用例优化检索。”
- “我的RAG系统产生幻觉 — 修复它。”
- “选择合适的向量数据库 / 索引类型。”
- “创建RAG评估框架。”
- “调试为什么检索给出不相关结果。”
工具/模型推荐协议
当用户请求供应商/模型/框架推荐时,根据当前主要来源验证声明。
触发器
- “对于[用例],最好的向量数据库是什么?”
- “我应该使用什么进行[分块/嵌入/重排序]?”
- “RAG开发的最新进展是什么?”
- “[检索/基于证据/评估]的当前最佳实践?”
- “[Pinecone/Qdrant/Chroma]在2026年仍然相关吗?”
- “[向量数据库 A] vs [向量数据库 B]?”
- “对于[用例]的最佳嵌入模型是什么?”
- “我应该使用什么RAG框架?”
必要检查
- 阅读
data/sources.json并从具有"add_as_web_search": true的来源开始。 - 验证每个推荐1-2个主要文档(发布说明、基准测试、文档)。
- 如果无法浏览,说明假设并提供一个验证清单。
报告内容
检查后提供:
- 当前格局: 当前流行的向量数据库/嵌入模型是什么(不是6个月前)
- 新兴趋势: 获得关注的技巧(后期交互、代理式RAG、图RAG)
- 已弃用/衰退: 失去相关性的方法或工具
- 推荐: 基于新鲜数据,而不仅仅是静态知识
示例主题(使用当前来源验证)
- 向量数据库(Pinecone、Qdrant、Weaviate、Milvus、pgvector、LanceDB)
- 嵌入模型(OpenAI、Cohere、Voyage AI、Jina、Sentence Transformers)
- 重排序(Cohere Rerank、Jina Reranker、FlashRank、RankGPT)
- RAG框架(LlamaIndex、LangChain、Haystack、txtai)
- 高级RAG(上下文检索、代理式RAG、图RAG、CRAG)
- 评估(RAGAS、TruLens、DeepEval、BEIR)
相关技能
对于相邻主题,参考这些技能:
- ai-llm - 提示工程、微调、指令数据集
- ai-agents - 代理式RAG工作流和工具路由
- ai-llm-inference - 服务性能、量化、批处理
- ai-mlops - 部署、监控、安全、隐私和治理
- ai-prompt-engineering - RAG生成阶段的提示模式
模板
系统设计(从此开始)
分块与摄取
嵌入与索引
检索与重排序
上下文打包与基于证据
评估
搜索配置
查询重写
导航
资源
- 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
模板
- 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/sources.json — 精选外部参考
每当用户需要检索增强系统设计或调试时使用本技能,而非提示工程或部署工作。