RAG 检索优化与进阶算法:性能篇
前言:检索质量是 RAG 的'生命线'
在生产环境下,单纯的'向量检索'往往会遇到瓶颈。检索优化不仅是技术的堆叠,更是对语义表示的重构。本阶段目标是解决'搜不到'、'搜不准'和'搜不全'这三大核心痛点,从索引时、架构设计、查询变换、检索方式和后处理五个维度全面提升系统性能。
1. 检索前的'语义表示增强' (索引阶段)
这一阶段发生在文档进入向量库之前,目的是在'向量化'之前就赋予数据更强的表达能力。
1.1 Contextual Retrieval (上下文增强) —— 解决'语义碎片化'
- 深度原理解析:这是由 Anthropic 提出的核心方案。在传统 RAG 中,将长文档切分为 Chunk 会导致每个 Chunk 变成'孤岛'。如果一个 Chunk 里写着'其 2024 年营收增长 15%',由于失去了主语(比如'英伟达'),向量检索很难通过'英伟达 财报'找到它。
- 工程实现:在索引阶段,调用 LLM(如 GPT-4o-mini)先读全篇文档,为每一个 Chunk 自动生成一段简洁的'环境描述'。
- 注入公式:
Enhanced_Chunk = [Global_Context] + Original_Chunk
- 注入公式:
- 价值:显著提升了针对'代词'或'特定细节'检索的召回率(Recall)。
1.2 Late Chunking (延迟切分) —— 解决'边界效应'
- 技术细节:传统做法是'物理切分 -> 独立编码',每个块的向量互不感知。延迟切分则是利用长文本 Embedding 模型(如 Jina-v3)的特性:
- 全篇输入:将整篇文章(如 8k tokens)一次性输入模型。
- 获取 Token 向量:获取全篇每个 Token 的 Hidden States。
- 池化切分:按照物理边界对这些已包含全局信息的 Token 向量进行 Mean Pooling。
- 优势:此时每个切片的向量里天然携带了全篇的注意力(Attention)权重,彻底消除了切分点处的语义断层。
2. 检索架构的进化:全局与多跳 (结构)
当问题不再是简单的'事实查阅',而是'总结归纳'或'链条推理'时,我们需要改变索引的拓扑结构。
2.1 RAPTOR (递归摘要树检索) —— 解决'全局总结'
- 层级化表示:RAPTOR 构建的是一棵'自下而上'的树。
- L0(叶子层):原始高精度文本块。
- L1-Ln(摘要层):对下层语义相似的块进行聚类,并用 LLM 生成摘要。
- 检索策略:当用户问'公司的发展战略是什么?'这种宏观问题,检索器会命中树的高层(摘要节点);当问'某项目具体金额',则命中底层。它让系统具备了'从林到木'的全面视野。
2.2 GraphRAG (图增强) —— 解决'多跳推理'
- 图谱的力量:向量搜索是寻找'空间相近点',而图搜索是寻找'逻辑连接线'。
- 多跳 (Multi-hop) 场景:如'A 的创始人的导师是谁?'。
- 向量局限:A 与 导师 C 可能完全不相关,搜不到。
- 图谱方案:提取实体
A -> Founder -> B -> Mentor -> C。通过图遍历,即便语义不相近,只要逻辑相连,就能精准定位。
- 工业趋势:目前领先的方案是将向量索引与图索引结合,形成'Graph + Vector'双索引架构。

