高级RAG优化:预检索、检索与后检索策略
Vanilla RAG的局限与优化方向
检索增强生成(RAG)已成为生成式AI应用中注入外部数据的核心范式。Vanilla RAG通过“检索-增强-生成”三阶段流水线,解决了大模型(LLM)的幻觉和知识过时问题。然而,在实际工程中,朴素RAG的检索相关性、上下文利用率和生成质量仍存在明显瓶颈。优化通常沿着三个维度展开:
- 预检索(Pre-retrieval):提升数据质量和查询表达,使检索从一开始就更精准。
- 检索(Retrieval):改进嵌入模型和搜索算法,扩大候选集的相关性。
- 后检索(Post-retrieval):压缩和重排序检索结果,减轻LLM的上下文负担。
以下逐一分析各阶段的优化策略及其适用场景。
预检索优化:数据索引与查询处理
数据索引优化
RAG系统的数据索引质量直接决定后续检索的上限。常见的优化手段包括:
- 优化分块策略:在RAG ingestion pipeline中,chunking模块将原始文档切分为语义连贯的小段。合理的分块大小(如256-512 tokens)和重叠窗口能够保持段落间的上下文连续性,避免关键信息被割裂。
- 增强元数据:loading模块将每个文档块附加上元数据(如来源URL、发布时间、章节标题)。在检索时利用元数据进行预过滤(例如只检索最近一周的文档),可大幅提升效率。
查询处理优化
Vanilla RAG对用户输入的处理与索引处理必须一致(训练-服务偏差)。在此基础上,可通过以下方式改善查询质量:
- 查询重写:对模糊或过短的问题进行改写,例如将“它的作者是谁”扩展为更明确的表述