RAG 进阶指南:15 种高级技术优化检索与生成
检索增强生成(Retrieval-Augmented Generation, RAG)是一种强大的技术架构,它将外部信息检索与生成式 AI 模型相结合,旨在产生更准确、上下文更丰富且事实依据更充分的响应。尽管基础 RAG 系统已能解决部分知识时效性问题,但在实际生产环境中,传统 RAG 常面临信息密度低、检索准确性不足以及生成质量不稳定等挑战。
本文将深入探讨 15 种高级 RAG 技术,涵盖从预检索到生成的全链路优化策略。这些技术旨在提高生成式 AI 系统的输出质量、鲁棒性及整体性能。优化的核心流程通常涉及四个阶段:预检索优化、检索/召回策略优化、检索后优化以及生成优化。
一、预检索优化
预检索优化的核心在于提高数据索引或知识库中信息的质量和可检索性。由于不同业务场景对数据的依赖性质各异,预检索策略往往需要定制化设计。
1. 使用 LLM 提高信息密度
在将数据存储至向量数据库前,利用大语言模型(LLM)对原始数据进行清洗、处理和打标至关重要。非结构化数据源(如 PDF、网页抓取内容、音频转录稿)往往包含大量噪声,导致信息密度低下。
问题影响:
- Token 浪费:低密度迫使系统在 LLM 的上下文窗口中插入更多块以覆盖有效信息,增加成本。
- 相关性稀释:过多无关信息可能干扰 LLM 的判断,导致幻觉或错误回答。
解决方案:
使用 GPT-4 等强模型作为事实提取器,从文档中提取关键信息。例如,针对网页数据,原始 HTML 包含大量 CSS 类、导航栏和标签。通过 Prompt 指令让 LLM 仅保留客户查询可能涉及的核心内容,可大幅降低 Token 消耗并提升信噪比。
示例 Prompt 思路:
You are a data processing assistant. Extract meaningful information from the provided text... Output should be text-only separated by paragraphs.
风险提示: 过度压缩可能导致关键细微信息的丢失,需权衡压缩率与信息完整性。
2. 使用分层索引检索
为了解决大规模数据库下的检索效率问题,可采用分层索引策略。这类似于无损压缩与有损压缩的结合。
实施方法:
创建两个索引:
- 摘要索引:由 LLM 生成的文档摘要组成,用于快速过滤。
- 块索引:由原始文档块组成,用于精确匹配。
流程:
首先通过摘要索引筛选出相关文档组,缩小搜索范围;随后在该组内使用块索引进行精细检索。这种方法在大型知识库中能显著提升检索速度。
3. 创建假设性问答对 (Hypothetical Questions)
传统 RAG 中,Embedding 对象存在不对称性:存储时是文档(Answer),查询时是用户 Query。这导致语义匹配偏差。
优化策略:
在数据准备阶段,使用 LLM 为每个文档片段生成一系列假设性问题及对应答案。检索时,系统将嵌入生成的'问题'而非原始文本。这样,用户 Query 的 Embedding 与生成的'问题'Embedding 之间的余弦相似度会更高,从而提升召回准确率。
案例: 若文档介绍了某技术特点但未显式提及优缺点,用户问'优缺点'时难以匹配。若预先生成了'该技术优缺点是什么?'的假设问题,则能精准命中。
4. 使用 LLM 对信息进行去重
数据索引中的重复信息既可能有益也可能有害。适量的重复有助于强化记忆,但过度重复会挤占上下文窗口。
实施步骤:
- 在 Embedding 空间中对块进行 K-Means 聚类。
- 确保每个聚类的总 Token 数在 LLM 有效上下文窗口内。
- 任务 LLM 从原始聚类中提炼新块,去除冗余信息。
注意: 此方法可能导致从块回溯到原文引用的能力下降,需评估引用需求的重要性。
5. 测试并优化最优分块 (Chunking)
分块策略直接影响检索效果,最优策略取决于具体场景。建议通过 A/B 测试确定最佳参数。
关键考量因素:
- Embedding 模型输入长度:不同模型(如 Sentence Transformers vs Text-Embedding-Ada-002)对输入长度敏感度不同。
- 文档语义完整性:Chunk 大小需包含足够上下文。过大会稀释信息,过小会切断逻辑。对于无自然分割点的文档,建议使用重叠(Overlap)策略(如 50% 重叠)。
- 模型总结能力:小模型处理大块内容能力较弱,且推理成本高。
- 存储与计算成本:较小的块意味着更多的向量,增加存储和搜索计算开销。
实验结论: 在特定场景下,1000 字符分块配合 200 字符重叠通常表现略优于其他策略,但需结合实际应用验证。
二、检索/召回优化
检索优化旨在推理阶段提高搜索性能和结果质量,主要关注如何更精准地定位相关信息。
6. 使用 LLM 优化搜索请求
搜索系统对查询格式敏感。LLM 可作为查询优化器,将自然语言转换为适合搜索引擎的语法。
应用场景:
- 简单查询:将
Articles about Bill Gates or Steve Jobs 优化为 Google 高级搜索语法 "Bill Gates" OR "Steve Jobs" -site:example.com。
- 对话系统:在多轮对话中,用户当前问题可能指代不明(如'那个利率是多少')。LLM 需结合对话历史生成完整的搜索查询,避免检索无关信息。
变体: 查询扩展(Query Expansion),由 LLM 生成多个子查询,适用于混合检索系统(SQL + Vector)。
7. HyDE:假设性文档 Embedding
HyDE 旨在解决查询与文档 Embedding 的不对称问题。与预检索阶段的'假设性问题'不同,HyDE 在检索阶段生成'假设性文档'。
原理:
为用户的问题生成一个假设性的回答片段(约 1000 字符),然后对该片段进行 Embedding 并与知识库中的文档进行比对。假设性文档在语义上通常比简短的用户 Query 更接近真实文档的内容分布。
优势: 在缺乏高质量训练数据的情况下,能显著提升语义检索的召回率。
8. 使用查询路由 (Query Router)
当系统拥有多个数据源时,查询路由利用 LLM 决定将查询发送到哪个数据库或是否需要进行检索。
决策模式:
并非所有查询都需要 RAG。LLM 可判断:
- 无需检索:如果答案存在于对话历史或 LLM 内部知识中(如翻译、解释概念),直接生成回复,节省成本。
- 定向检索:根据意图将查询路由至特定的知识库(如产品库 vs 政策库)。
实现: 在 Prompt 中预定义路由选项,解析 LLM 的输出以执行代码分支。
三、检索后优化
检索后优化发生在获取候选文档之后、生成最终响应之前。此时目标是剔除噪声,确保输入给 LLM 的信息纯净且相关。
9. 使用重排模型 (Rerank Models)
研究表明,不相关但看似相关的文档(Related but Irrelevant)对 RAG 系统危害最大,甚至可能降低准确率超过 67%。
优化策略:
使用交叉编码器(Cross-Encoder)等重排模型对召回的 Top-K 文档进行重新排序。重排模型能更细致地理解 Query 与 Document 之间的细粒度相关性。
位置效应: 将最相关的文档放置在提示词中最靠近查询的位置,可进一步提升 LLM 的性能。
10. Prompt Compression
为了适应有限的上下文窗口,需对检索到的内容进行压缩。
工具:
- LLMLingua:使用小型语言模型检测并移除提示中不重要的 Tokens,可实现高达 20 倍的压缩率且性能损失最小。
- LongLLMLingua:进一步考虑输入查询,移除对当前查询不重要的通用信息。
逆向解压: 即使压缩后的提示对人类不可读,GPT-4 等模型仍具备逆向理解或解压的能力。
11. Corrective RAG
Corrective RAG 引入一个分类模型(如 T5-Large),在生成前识别检索结果的质量。
工作流程:
- 检查检索结果是否正确、相关或模棱两可。
- 若未通过阈值,丢弃该结果或触发修正机制。
- 相比微调 Llama-2 等方法,T5-Large 更轻量且兼容任何 LLM。
四、生成优化
生成优化关注改进 LLM 调用过程,使其能更好地利用检索到的上下文。
12. 思维链 (Chain-of-Thought, CoT)
CoT 提示通过引导模型展示推理过程,增加了在噪声环境下得出正确响应的可能性。
进阶:Chain-of-Noting
微调模型生成'阅读笔记',对每个检索文档进行连续评估。这允许模型深入分析文档与问题的相关性,再综合构建答案。
13. Self-RAG (自我反思)
Self-RAG 训练模型在生成过程中输出特殊标记(Reflection Tokens)。
机制:
- 检索标记:判断是否需要检索。
- 批评标记:评估生成的内容质量。
- 选择机制:并行处理多个段落,选择事实性和质量最好的输出。
14. 微调忽略不相关内容
针对 LLM 容易受无关上下文干扰的问题,可通过微调提升其鲁棒性。
实验发现:
仅需约 1000 个样本即可训练模型在面对无关上下文时保持高性能。结合自然语言推理(NLI)模型,可先过滤掉不被前提蕴涵的检索内容,再送入 LLM。
五、其他 Advanced RAG 策略
随着技术发展,以下新兴策略也值得关注:
- 微调 Embedding 模型:针对特定领域微调向量模型,提升领域内语义匹配精度。
- 知识图谱 (GraphRAG):利用图结构存储实体关系,解决复杂推理和多跳查询问题。
- 长上下文 LLM:直接使用支持 128k+ 上下文的模型(如 Gemini 1.5, GPT-4 Turbo),减少分块和检索的必要性。
六、总结与展望
检索增强生成(RAG)系统的发展为对话式 AI 提供了巨大机遇。通过上述 15 种高级技术的组合应用,企业可以显著改善信息密度、检索准确性和用户响应质量。
核心价值:
- 成本效益:通过优化检索减少 Token 消耗。
- 用户体验:提供更准确、可信的回答。
- 鲁棒性:降低幻觉风险,提升系统稳定性。
实施建议:
软件工程师和数据科学家应建立持续的 A/B 测试机制,针对不同业务场景调整上述策略。同时,关注长上下文模型和 GraphRAG 等前沿方向,以保持技术竞争力。
注:本文基于《15 Advanced RAG Techniques from Pre-Retrieval to Generation》及相关研究整理,旨在提供技术参考。