该技能用于构建生产可用的检索增强生成(RAG)管道,核心理念是不盲目检索,而是先筛选再送入模型。管道阶段为:文档→分块→嵌入→索引→[查询]→检索→重排序→增强→生成。
分块策略:固定大小适用于日志、转录等统一文档(256–512 tokens,约10%重叠);语义分块适用于文章、手册、代码,按标题/段落切分;层次分块适用于书籍、wiki 等嵌套内容,用父+子块;句子窗口适用于密集文本问答,取3–5句滑动窗口。规则:始终携带元数据(来源、章节、页码、时间戳);重叠可避免上下文在边界被切断;块越小精度越高,块越大上下文越完整。
嵌入:同一模型必须同时用于索引和查询,否则检索失效;索引前归一化向量(余弦相似度需单位向量);更换模型需重新嵌入,旧向量不兼容。常见模型包括 text-embedding-3-small、text-embedding-ada-002、all-MiniLM-L6-v2。
检索:稠密检索(语义,余弦相似度)适合改写匹配;稀疏检索(BM25)适合精确词、名称、编码;混合检索用 RRF(Reciprocal Rank Fusion)组合两者,适合生产环境。候选 Top-K 建议从 K=20 起,再重排到前3–5。查询扩展可先生成2–3个查询变体以提高覆盖。
重排序:不要只信检索顺序,送入 LLM 前先重排。可用 cross-encoder 重排器(如 cross-encoder/ms-marco-MiniLM-L-6-v2),慢但准确;也可用 LLM 重排器对候选项按1–5打分;或用 RRF 组合多次检索,无需重排器。
上下文增强:系统提示中要求仅使用所给上下文,最相关内容放最前(LLM 更关注开头),块内加入来源引用(如 [Source: doc.pdf, p.12]),设置硬性 token 预算(如2000),超出从底部裁剪。
调试清单:检索是否找到正确块(记录重排前 Top-K);索引与查询是否用同一模型;块是否连贯、无句子中间截断;是否出现幻觉(模型忽略检索上下文,可加接地指令);延迟哪个阶段最慢(分析分块→嵌入→检索→重排各阶段)。
输出为 RAG 报告,包含阶段、索引块总数、检索候选数、送入 LLM 的块数、各阶段延迟毫秒、失败时的根因。