【RAG】LongRAG:利用长上下文LLMs增强检索增强生成
来源:互联网
时间:2026-08-27 14:08:11
前言
现有的RAG框架大多依赖100词左右的短段落作为检索单元——这个设计看似精细,却让检索器在庞大的语料库中疲于奔命。搜索范围大、干扰项多,性能自然受影响。LongRAG框架给出了一种更聪明的解法:直接把检索单元拉长到最多4K词,语料库规模从2200万骤降到60万。检索器负担轻了,检索质量反而上去了。

一、方法
LongRAG由两大核心组件构成:
长检索器
长阅读器
- :把整个文档或一批相关文档打包成一个检索单元,长度超过4K token。原始文档如果本来就长(比如超过4K),那就直接作为一个单元;短的文档则根据相关性分组,合并成一个长单元。相关分组算法如下——核心逻辑是根据文档间的语义关联进行聚类,保留更多上下文信号。
长检索单元
- :它的任务不是找出最短最精确的那一片段,而是在整个语料库中捞出相关的大块上下文。具体分三步:
长检索器
。相似性搜索用编码器将查询和检索单元映射到向量空间,通过形成长检索单元、相似性搜索、聚合结果
计算相似度。聚合时,把前K个最相似的检索单元拼接起来,形成长上下文。点积
- :编码器EQ把问题映射成d维向量,编码器EC把检索单元也映射成d维向量。问题和检索单元的相似度就是向量的点积。由于检索单元很长,实际采用近似方法——取单元内所有片段得分的最大值来估计。
相似性搜索
- :前k个检索单元直接拼接成长上下文。
聚合检索结果
- :将聚合后的结果(约30K词)喂给现有的长上下文LLM,零样本生成答案——整个过程无需训练。流程如下:
长阅读器
提示设计上采用
,目的是从长上下文中高效提取答案:两步提示法
- :问题和长检索结果拼接后直接输入长语言模型,不带任何示例。模型先产出一个较长的初步答案。
第一步
- :用8个上下文示例引导模型从长答案中提炼出最终的精简短答案。
第二步
- 输入:指令 + 问题 + 长检索结果。
- 初始答案生成:模型输出一个包含几句话的长答案。
- 答案精炼:通过二次提示,从长答案中提取简洁的最终答案。
二、实验
在基于维基百科的数据集上,LongRAG无需任何训练,就达到了与最先进的全训练RAG模型相当的性能。在非维基百科数据集上,它同样表现优异,显著优于传统RAG框架。
消融实验进一步验证了长检索单元和长阅读器的有效性。结果显示,检索单元的大小和阅读器变体对性能影响明显。
总结
LongRAG通过引入长检索器和长阅读器,成功减轻了检索器的负担,同时提升了检索质量和全文问答的性能。在零训练的条件下,它足以比肩那些经过充分训练的最优模型。简单说,这是一种让检索和生成更加平衡的思路——值得关注。
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名