原创 皮皮,Brad强 2025-02-10 11:34 上海
问题背景与技术本质
大语言模型(LLMs)在处理长文本时面临两个技术路线的竞争:
检索增强生成(RAG)与长上下文窗口(Long Context LLM)。
二者的核心矛盾在于信息供给策略--是将全量上下文直接输入模型,还是通过检索系统筛选高相关性信息再传递?这一选择直接影响模型的准确性、成本效率及工程复杂度。
召回率与准确率的博弈论视角
从信息检索理论看,两种技术可抽象为以下对比:
- 长上下文LLM:召回率接近100%(全量输入),但准确率低(噪声干扰多)RAG:召回率有限(依赖检索质量),但准确率高(聚焦关键信息)
以医学问答场景为例,
若知识库包含100篇相关论文,长上下文LLM会全部输入(召回率100%),但可能因噪声导致关键结论被稀释;
RAG可能检索到80篇最相关论文(召回率80%),但生成答案的置信度更高。
公式表达(基于混淆矩阵):
TP(真阳性)为检索到的相关文档数,
FN(假阴性)为遗漏的相关文档,
FP(假阳性)为误检的非相关文档。
我们可以把召回率和准确率想象成捕鱼的过程。
假设我们用一个网去捕鱼,其中:
- TP(真阳性):我们捕到的鱼。FN(假阴性):我们漏掉的鱼。FP(假阳性):我们捕到的石头(误以为是鱼)。
那么,召回率就是我们捕到的鱼的数量除以所有鱼的总数(捕到的加上漏掉的),它反映了我们捕鱼的全面性。
准确率就是我们捕到的鱼的数量除以我们捕到的所有东西的总数(鱼加上石头),它反映了我们捕鱼的准确性。
技术路径的底层差异
长上下文LLM | RAG | |
核心依赖 | 模型自身的长文本理解能力 | 外部知识库+检索算法 |
计算成本 | 高(与上下文长度呈指数关系) | 低(仅处理检索结果) |
适用场景 | 需要全局理解的复杂任务(如小说分析) | 知识密集型垂直领域(如法律、医疗) |
下面这张图很好的对比了长上下文(LC)和 RAG之间相关的性能,成本差异,出自论文:
《Retrieval Augmented Generation or Long-Context LLMs? A Comprehensive Study and Hybrid Approach》
https://www.arxiv.org/pdf/2407.16833
虽然长上下文LLMs(LC)在长上下文理解方面超越了RAG,但RAG在成本效益上明显更高。我们的方法SELF-ROUTE将RAG和LC结合,能够以更低的成本实现与LC相当的性能。
性能瓶颈与技术突破
长上下文LLM的三大挑战
- 注意力机制缺陷:Transformer架构的“Lost in the Middle”现象导致模型对中间段落的关注度下降40%-60%。成本壁垒:处理128k tokens的上下文,GPT-4的API成本是RAG方案的3.2倍。幻觉风险:噪声干扰使错误生成概率提升15%-30%(Google DeepMind, 2024)。
RAG系统的优化空间
通过混合检索策略,RAG的召回率可从60%提升至90%以上(腾讯云案例),关键技术包括:
- 多模态索引:结合BM25(关键词匹配)与向量嵌入(语义匹配)重排算法:使用BERT Cross-Encoder对Top100结果二次排序,准确率提升22%查询重写:通过LLM将用户问题转化为结构化查询语句(如SPARQL),召回率提高35%
常见的RAG优化方案包括:
- 数据清理:确保数据干净、正确。分块:选择分块技术,块大小(chunk_size)和块重叠(重叠)。嵌入模型:选择嵌入模型,包括维度,以及是否对其进行微调。元数据:是否使用元数据和选择元数据。多索引:决定是否对不同的数据集合使用多个索引。索引算法:人工神经网络和矢量压缩算法的选择和调整可以调整,但通常不是由应用调整。查询转换:尝试改写、HyDE或子查询。检索参数:搜索技术的选择(如果启用了混合搜索,则为alpha)和检索的搜索结果的数量。高级检索策略:是否使用高级检索策略,如句子窗口或自动合并检索。重排名模型:是否使用重排名模型,重排名模型的选择,输入重排名模型的搜索结果数量,是否对重排名模型进行微调。LLM:LLM的选择以及是否对其进行微调。提示工程:使用不同的措辞和少量的例子进行实验。
混合架构:SELF-ROUTE的实践突破
Google DeepMind等机构提出的SELF-ROUTE框架,通过动态路由机制结合二者优势:
第一阶段(RAG路由):检索Top5相关文档,LLM判断是否可生成可靠答案
第二阶段(长上下文处理):若置信度低于阈值,则启用全量上下文分析
我画了一个时序图来说明这个过程:
- 用户提交查询请求:用户向系统提交一个查询请求。RAG路由检索Top5相关文档:RAG路由模块检索与用户查询最相关的Top5文档。LLM判断是否可生成可靠答案:LLM模块根据检索到的文档判断是否可以生成一个可靠的答案。返回可靠答案:如果LLM判断置信度高于阈值,直接返回可靠答案给用户。启用全量上下文分析:如果LLM判断置信度低于阈值,则启用长上下文处理模块进行全量上下文分析。返回详细答案:长上下文处理模块分析后返回更详细的答案给用户。实验数据展示成本降低和查询效率提升:实验数据显示,该方案在保持97%长上下文性能的同时,实现了成本的降低和查询效率的提升。
实验数据显示,该方案在保持97%长上下文性能的同时,实现:
- Gemini-1.5-Pro:成本降低65%GPT-4:成本降低39%60%查询仅需RAG阶段即可完成
未来趋势:权重标记与认知增强
Prompt权重标记技术
为解决长上下文的噪声问题,业界正探索可编程注意力机制:
- 位置权重:通过特殊标记(如
<客户信息>
姓名:张三
订单号:ORDER12345
</客户信息>
客户投诉内容:
......(一大段背景描述)......
<critical>
我购买的产品在使用一周后出现了严重质量问题,多次联系卖家但没有得到满意的解决。我希望能够全额退款并得到相应的赔偿。
</critical>
......(更多细节和情感表达)......
- 语义权重:基于信息熵计算段落重要性(LongLLMLingua方案使有效信息密度提升2.4倍)
使用基于信息熵的算法来计算邮件中各个段落的重要性。例如:
- "我对你们的服务很失望"(低信息熵,常见表述)"产品的左侧把手在第三天就脱落了"(高信息熵,具体问题描述)
认知架构升级
- 动态缓存:对重复性任务缓存上下文片段,响应速度提升50%
北大和字节最近开源了一个关于RAG动态缓存的论文:https://arxiv.org/abs/2404.12457
RAGCache: Efficient Knowledge Caching for Retrieval-Augmented Generation
当接收到一个用户请求时,RAG Controller首先从外部数据库 (External Database) 检索相关的文档。然后,这些文档被转发到Cache Retriever 以查找匹配的Key Value tensors。如果缓存中没有Key Value tensors,RAGCache会指示LLM推理引擎 (LLM Inference Engine) 生成新的tokens。
相反,如果Key Value tensors可用,则带有Key Value tensors的请求将转发到LLM推理引擎,然后该引擎使用前缀缓存内核来生成标记。
生成第一个标记后,Key Value tensors被转发回RAG Controller,该控制器Key Value tensors并刷新缓存的状态。最后,生成的答案作为响应传递给用户。
- 认知蒸馏:将长上下文理解能力迁移到轻量级模型,存储需求减少75%
最近的大火的DeepSeek Zero, DeepSeek R1就使用了这种方式,也出现了各自蒸馏版本的DeepSeek。
决策框架与临界点预测
技术选型决策树
条件 | 推荐方案 | 典型场景 |
知识库更新频率>1次/天 | RAG | 金融实时资讯分析 |
上下文长度>200k tokens | 混合架构 | 科研论文摘要 |
硬件预算<10万美元/年 | RAG+缓存 | 中小企业知识库 |
成本-性能临界点模型
根据摩尔定律与API降价趋势预测:
- 2026年:处理100k tokens的成本将降至当前1/5临界点:当长上下文单位token成本低于RAG检索成本的1.8倍时,长上下文将成主流方案(MIT CSAIL, 2024)
融合而非替代
当前技术发展阶段,RAG与长上下文LLM呈现互补共生关系。在医疗诊断等高风险领域,RAG的准确性仍是刚需;而在创意写作等开放场景,长上下文的全局理解能力不可替代。
未来的突破点在于可解释性权重分配与自适应路由机制,最终实现智能体的认知效率革命。
喜欢本篇的话就来个三连,点个关注不迷路。
我们下篇文章见