RAG拓展、变体、增强版(二)
接上篇RAG拓展、变体、增强版(一)。
注:本文整理自ChatGPT和网络资料。
Infinite Retrieval
北师大论文,提出Infinite Retrieval,无需额外训练,即可赋能现有模型理论上就可以处理无限长度的文本。
InfiniRetri的核心在于一个关键发现:LLMs在执行推理任务时展现出的注意力分配模式,与信息检索的过程存在内在的一致性,因此也叫注意力即检索
。就像人类在阅读长篇书籍时,大脑会对关键信息给予更高的关注。在LLMs的深层网络中,注意力机制能够更精准地聚焦于与当前任务相关的上下文片段。
基于这一洞察,采用一种无需额外训练的迭代式处理流程。面对超长文本,它将其划分为若干连续的片段,并逐一输入LLM进行处理。关键的创新在于,InfiniRetri在处理每个文本片段后,会利用LLM最后一层的注意力分布信息,识别并保留那些被模型认为最相关的句子。这些被“重点关注”的句子被存储在一个外部缓存中,如同大脑在阅读过程中记住的关键情节。
在处理后续的文本片段时,InfiniRetri会将缓存中保留的相关句子与当前片段进行合并,共同作为LLM的输入。使得LLM在处理局部文本时,能够“回忆”起先前被认为重要的上下文信息,从而在整体上理解和处理更长的文本。与直接缓存模型内部状态不同,InfiniRetri仅缓存关键的句子文本,这更类似于人类记忆语义信息而非底层的神经元激活。
在模拟大海捞针式信息检索的NIH任务中,该方法使一个轻量级的模型(Qwen2.5-0.5B)在100万tokens的超长文本中实现100%的检索准确率,显著超越了现有技术。在更贴近实际应用的LongBench基准测试中,InfiniRetri同样在多个主流LLMs上取得了显著的性能提升,尤其在多文档问答等需要整合多来源信息的任务中表现突出,Qwen2-7B-Instruct在HotpotQA上的提升高达288%。通过选择性地缓存和处理关键信息,有效降低推理延迟和计算资源消耗。
IterDRAG
论文,
推理缩放策略
- 基于演示的RAG(DRAG):利用上下文学习,将大量文档和上下文示例集成到输入提示中,使模型能在单次推理请求内生成答案。从大型语料库(如Wikipedia)检索文档构建丰富输入上下文,让模型学会提取信息和回答问题,突破传统RAG局限。
- 迭代式基于演示的RAG(IterDRAG):针对复杂多跳查询,将其分解为简单子查询,通过迭代检索和生成中间答案,最后合成最终答案。利用受限解码生成包含子查询和中间答案的上下文示例,在推理过程中不断扩展计算,有效缩小组合性差距,提升知识提取和整体RAG性能。
RAG性能与推理计算规模关系
- 固定预算下最优性能:给定推理计算预算(最大有效上下文长度
L_max
),通过调整DRAG中的检索文档数、上下文示例数和IterDRAG中的迭代次数等参数,寻找最优性能配置。在多跳知识问答数据集上实验,采样不同预算,对比零样本QA、多样本QA、传统RAG等基线方法,评估精确匹配(EM)、F1分数和准确率等指标,发现DRAG和IterDRAG性能随预算增加而提升,且在不同长度下各有优势。 - 总体性能趋势:DRAG和IterDRAG性能增长优于基线方法,RAG在128k后性能停滞,DRAG可达1M tokens,IterDRAG在5M tokens预算下表现更优,表明增加有效上下文长度对RAG有益,二者在不同规模下发挥关键作用。
- 推理缩放定律:绘制性能与有效上下文长度关系图,发现最优性能与推理计算量级呈近线性增长,定义为RAG的推理缩放定律。但在1M tokens后性能增益逐渐减小,可能受长上下文建模限制,总体在合理范围内线性提升。
- 参数特定缩放分析:网格搜索参数组合发现,增加检索文档和演示通常提升性能,但二者贡献不同。如固定配置下增加文档收益更大,而增加示例对IterDRAG更有帮助;不同方法参数饱和点不同,且最优参数受方法、指标和数据集影响,确定超参数组合仍具挑战。
长上下文RAG的推理计算分配模型
- 模型构建与估计:将平均性能指标 P 定义为参数 θ(文档数kkk、演示数mmm、最大迭代次数nnn)的函数,引入iii衡量文档和示例信息量,构建计算分配模型。通过特定任务性能差异计算iii,对模型参数a,b,ca,b,ca,b,c进行估计,实验表明该模型能反映LLM性能变化,且一次估计可应用于不同任务。
- 模型验证与分析:对比预测指标和实际值验证模型,DRAG在不同数据集上预测与实际趋势高度一致,Bamboogle一致性最高。消融研究表明纳入bbb和iii可增强相关性和降低误差,逆sigmoidsigmoidsigmoid缩放PPP显著提升估计效果;在域泛化和长度外推实验中,模型表现出色,在1M tokens以下目标长度外推准确有效,为长上下文RAG计算分配提供有力指导。
讨论与分析
- 检索质量影响:检索文档质量对RAG性能关键,增加文档可提高召回率,但NDCG等指标显示相关性和排名质量未必提升,甚至引入噪声。IterDRAG的迭代检索通过分解查询提高召回和排名性能,凸显动态调整检索方法减少无关内容的重要性。
- 错误原因剖析:对错误分析发现主要有检索不准确或过时、推理错误或缺失、幻觉或不可靠推理、评估问题或拒绝回答四类。IterDRAG可改善前两类问题,表明检索与迭代生成结合对多跳查询重要,同时需增强模型可靠性和改进评估方法。
- 长上下文建模局限:检索更多文档虽有益,但简单延长上下文长度未必提升结果。DRAG和IterDRAG分别在特定长度达到最优,表明模型识别长上下文相关信息能力和上下文学习能力有待提高,需优化长上下文建模。
KG-RAG
论文首次提出基于知识图谱(KG)的RAG,后来出现好多篇此类主题的论文。提出背景:
- 传统RAG挑战:传统RAG在将多样化信息相互关联方面存在局限;
- KG作用:KG通过仅表示实体和关系,提供数据如何关联的洞察;
- 增强的连通性:结合KG有助于RAG系统更有逻辑地连接信息片段,提高输出一致性;
- 更深的语义理解:利用KG的关系结构,RAG能够更好地理解数据中的上下文和表达;
- 性能提升:RAG与KG结合增强系统处理复杂查询的能力,提供更准确和有深度的响应。
优势:
- 增强的连通性:KG在不同信息片段之间建立联系,提供更有意义和逻辑的答案,使模型能够发现可能被忽略的关系;
- 改进的语义理解:结构化的数据表示提供了对整体的理解,使模型能够全面理解数据集中的高阶关系;
- 提高准确性:通过从更广泛的上下文中获取信息,LLM能够生成更准确、更符合上下文的结果,提供更符合用户意图的响应;
- 可扩展性:通过添加新数据,KG可扩展、持续增强RAG的能力,以应对不同领域的新挑战。
将KG整合到RAG中涉及以下关键步骤:
- 索引:将用户提供的文档分割成易于分析的独立文本单元(TextUnits);
- 图谱提取:从这些文本单元中生成实体、关系和断言,以建立基本的图结构;
- 图谱增强:向图中添加更多信息,丰富数据表示,包括社区检测的应用;
- 摘要:为每个社区提供特定的摘要报告,包含相关发现;
- 网络可视化:展示关系和实体,使其更易于解读。
论文架构图
阶段1:构建文本单元
- 目标:将输入文档拆分为较小的文本单元,便于后续的图谱提取。
- 过程:将文档分割成通常包含300个标记的文本单元,但可根据需要配置至1200个标记以实现最佳效果。
- 配置:用户可设置这些片段的大小以及文本单元的分割方式。
阶段2:图谱提取
- 目标:分析文本单元,提取基本的图结构,包括实体、关系和断言。
- 过程:联合检测实体和关系,然后一次性提取断言。最终,数据生成的子图根据特征的一致性进行合并,以减少重复性。
阶段3:图谱增强
- 目标:通过添加信息,揭示社区结构,增强整体理解。
- 技术:采用分层Leiden算法进行社区检测,并使用Node2Vec进行图嵌入,生成综合的图表。
阶段4:社区摘要
- 目标:为图中发现的每个社区撰写摘要,以提供不同抽象层次的见解。
- 过程:利用嵌入扩展从关键数据中得出的摘要,创建数据集中社区的报告。
阶段5:文档处理
- 目标:在知识模型框架内建议和改进详细信息表。
- 过程:将文档连接到文本单元,并实例化关系和相关性,为后续阶段提供网络组织的对数线性方法。
阶段6:网络可视化
- 目标:采用高维向量空间的实体-关系和文档图框架生成网络表示。
- 技术:应用UMAP降维,将图转换为二维,以直观地表示图并理解对象之间的关系。
LightRAG
论文,突破传统RAG系统的诸多限制,实现:
- 极简部署:一键启动,无需复杂配置
- 极致性能:毫秒级响应,千QPS并发
- 极强扩展:模块化设计,随需定制
- 极佳体验:可视化界面,所见即所得
架构
创新的三层存储架构
LightRAG采用独特的三层存储设计,让数据检索更加智能高效:
数据层
├──向量数据库(FAISS/Milvus)←语义相似度检索
├──知识图谱(Neo4j/NetworkX)←实体关系推理
└──缓存层(Redis/JSON)←高速数据访问
向量检索层
- 技术:基于Transformer embedding的密集向量检索
- 优势:捕获语义相似性,理解用户真正意图
- 应用:苹果公司能匹配到库比蒂诺的科技巨头
KG层
- 技术:实体-关系-实体的结构化知识表示
- 优势:支持复杂推理,发现隐藏关联
- 应用:查询马云自动关联阿里巴巴→电商平台→淘宝
缓存加速层
- 技术:多级缓存策略,LRU算法优化
- 优势:热点数据毫秒访问,大幅提升响应速度
- 应用:常见问题无需重复计算,直接返回结果
多模查询引擎
LightRAG支持7种查询模式,覆盖不同应用场景:
模式 | 原理 | 适用场景 | 性能 |
---|---|---|---|
Local | 局部实体检索 | 精确事实查询 | 极快 |
Global | 全局图谱遍历 | 宏观分析总结 | 较慢 |
Hybrid | 混合多路检索 | 复杂推理查询 | 中等 |
Mix | 智能模式选择 | 通用问答系统 | 均衡 |
Naive | 纯向量检索 | 简单相似匹配 | 快速 |
Context | 上下文感知 | 对话系统 | 中等 |
Bypass | 直接LLM调用 | 开放域问答 | 很快 |
智能提取引擎
LightRAG的核心创新在于其智能的知识提取能力:
# 实体提取示例
输入文档: "阿里巴巴集团由马云于1999年在杭州创立"
提取结果:
实体: ["阿里巴巴集团", "马云", "杭州", "1999年"]
关系: [("马云", "创立", "阿里巴巴集团"),("阿里巴巴集团", "成立时间", "1999年"),("阿里巴巴集团", "创立地点", "杭州")
]
部署
git clone https://github.com/HKUDS/LightRAG.git
cd LightRAG
pip install -e .
export ZHIPUAI_API_KEY="your_api_key_here"
python -m lightrag.api.lightrag_server
访问:http://localhost:9621
企业版部署
# 启动数据库容器
docker run -d --name neo4j \-p 7474:7474 -p 7687:7687 \-e NEO4J_AUTH=neo4j/your_password \neo4j:latest
docker run -d --name redis \-p 6379:6379 \redis:latest
# 安装向量库
pip install faiss-cpu
配置文件
# config.enterprise.env
LLM_BINDING=zhipu
LLM_MODEL=glm-4-flashx
ZHIPUAI_API_KEY=your_api_key
# 存储配置
LIGHTRAG_VECTOR_STORAGE=FaissVectorDBStorage
LIGHTRAG_GRAPH_STORAGE=Neo4JStorage
LIGHTRAG_KV_STORAGE=RedisKVStorage
# 数据库连接
NEO4J_URI=bolt://localhost:7687
REDIS_URI=redis://localhost:6379/0
API使用
import requests
# 上传文档
with open("company_report.pdf", "rb") as f:response = requests.post("http://localhost:9621/documents/upload",files={"file": f})
print(f"✅ 上传状态: {response.json()['status']}")
LightRAG每次查询都遵循:
查询问题→关键词提取→上下文构建→LLM生成答案
但在关键词提取和上下文构建阶段,不同模式采用完全不同的策略。
MiniRAG
香港大学论文开源,引入两项关键技术创新:
- 一种语义感知的异构图索引机制,将文本块和命名实体结合在统一结构中,减少对复杂语义理解的依赖;
- 构建过程:
- 文本预处理:对文本进行分句和分词处理。
- 实体识别:利用预训练的命名实体识别(NER)模型识别文本中的命名实体。
- 图构建:将文本片段和命名实体作为节点,根据共现关系构建边,形成异构图。节点包含文本特征和实体特征,边表示节点间的语义关联。
- 优势:通过将文本片段和命名实体整合到图结构中,能够更有效地捕捉文本的语义信息,减少对复杂语义理解的依赖,降低索引复杂度。
- 构建过程:
- 一种轻量级的拓扑增强检索方法,利用图结构实现高效的知识发现,而无需高级语言能力。
- 检索过程:
- 查询嵌入:将查询文本嵌入到与图节点相同的特征空间中。
- 图匹配:通过计算查询嵌入与图节点的相似度,找到与查询最相关的节点。利用图的拓扑结构,考虑节点间的连接关系,进一步优化检索结果。
- 结果生成:根据检索到的节点生成回答,可以是节点对应的文本片段,也可以是通过图结构关联的多个节点组合生成的更完整的回答。
- 优势:利用图结构的拓扑信息,能够更高效地发现与查询相关的信息,即使在SLMs语义理解能力有限的情况下,也能通过图结构的关联关系找到有价值的答案,提高检索的准确性和效率。
- 检索过程:
使用基准数据集LiHua-World,用于评估轻量级RAG系统在现实设备场景下处理复杂查询的能力;模拟一个数字化互联的世界,AI代理通过移动聊天应用程序进行交流。通过主要角色李华的视角,观察并收集这个虚拟社会生态系统中真实的聊天互动。
使用准确率(acc)和错误率(err)进行性能评估,以百分比表示。较高的准确率和较低的错误率表明RAG性能更好。结果比较MiniRAG与各种基线方法在多个数据集上的表现。粗体值表示最佳性能,而“/”表示方法未能生成有效回答的情况。
PIKE-RAG
微软亚洲研究院论文,开源,sPecalized KnowledgE and Rationale Augmented Generation,专注于提取、理解和应用领域特定知识,同时构建连贯的推理逻辑,以逐步引导LLM获得准确响应。主打在复杂企业场景中私域知识提取、推理和应用能力,已在工业制造、采矿、制药等领域进行测试,显著提升问答准确率。
基本模块:文档解析、知识抽取、知识存储、知识检索、知识组织、以知识为中心的推理以及任务分解与协调。通过调整主模块内的子模块,可以实现侧重不同能力的RAG系统,以满足现实场景的多样化需求。
例如,在患者历史病历搜索中,侧重于事实信息检索能力;主要挑战在于:
- 知识的理解和提取常常受到不恰当的知识切分的阻碍,破坏语义连贯性,导致检索过程复杂而低效;
- 常用的基于嵌入的知识检索受到嵌入模型对齐专业术语和别名的能力的限制,降低了系统准确率。
利用PIKE-RAG,可以在知识提取过程中使用上下文感知切分技术、自动术语标签对齐技术和多粒度知识提取方法来提高知识提取和检索的准确率,从而增强事实信息检索能力,流程:
对于像为患者制定合理的治疗方案和应对措施建议这样的复杂任务,需要更高级的能力:
- 需要强大的领域特定知识才能准确理解任务并有时合理地分解任务;
- 还需要高级数据检索、处理和组织技术来预测潜在趋势;
而多智能体规划也将有助于兼顾创造力和可靠性。在这种情况下,可以初始化下面更丰富的管道来实现这一点。
与Zero-Shot CoT、Naive RAG、Self-Ask、GraphRAG Local、GraphRAG Global相比,PIKE-RAG在准确率、F1分数等指标上均表现出色,PIKE-RAG在处理复杂推理任务方面具有显著优势,特别是在需要整合多源信息、进行多步骤推理的场景中。
首次提出5级RAG系统能力与挑战,针对不同系统层级的技术挑战,PIKE-RAG框架都有针对性策略。
其中:PA代表文件解析,KE代表知识抽取,RT代表知识检索,KO代表知识组织,KR代表以知识为中心的推理。
RAG-Anything
香港大学数据智能实验室开源,通过多模态KG+混合检索机制,实现从文档摄取到智能查询的端到端解决方案。相比传统RAG仅支持文本的局限,可同时解析文本、表格、图表、公式,复杂文档处理效率提升高达300%!
核心目标是解决传统RAG在复杂文档处理中的三大瓶颈:
- 单一模态限制:传统RAG仅支持文本;
- 上下文感知不足:检索结果与用户查询的关联性弱,答案精度低;
- 检索机制僵化:依赖单一检索策略(如关键词匹配),难以适应多样化的查询需求。
三大创新技术:
- 多模态KG:将文档中的文本、表格、图表等元素转化为关联KG,构建全局语义网络;
- 灵活的解析架构:支持多种格式,自动识别并提取结构化与非结构化数据;
- 混合检索机制:结合稀疏检索(关键词)、稠密检索(向量相似度)和多模态检索(视觉+文本),动态适配查询类型。
核心优势:
- 多模态解析能力:从读文字到懂图表
- 支持文本、表格、公式、流程图的联合解析,例如从财报中同时提取关键数据和图表趋势;
- 对比传统RAG工具(如ChatPDF),可处理更复杂的文档类型(如学术论文中的实验图表)。
- 上下文感知的高精度检索
- 通过多模态KG构建文档全局语义网络,检索时不仅匹配关键词,还能理解查询意图;
- 例如,用户提问“图中所示的算法在表格第3行的数据表现如何?”,系统可关联图表与表格数据生成答案。
- 混合检索机制:动态适配查询需求
- 稀疏检索:适用于关键词明确的查询;
- 稠密检索:适用于语义模糊的查询;
- 多模态检索:适用于图文混合查询。
- 开源免费与易部署
- 完全开源,支持Docker一键部署,兼容主流云服务器和本地环境;
- 提供详细的API文档和示例代码,开发者可快速集成到现有系统中。
主流RAG平台对比
平台/工具 | 核心能力 | 模态支持 | 检索机制 | 复杂文档处理 | 开源/闭源 |
---|---|---|---|---|---|
RAG-Anything | 多模态KG+混合检索 | 文本/表格/图表 | 稀疏+稠密+多模态 | ★★★★ | 开源 |
ChatPDF | 文本解析与问答 | 仅文本 | 关键词匹配 | ★★☆ | 闭源 |
LLM Chain | 多文档摘要与推理 | 文本为主 | 稠密检索 | ★★★☆ | 开源 |
Open-RAG | 动态检索增强 | 文本 | 稀疏+稠密检索 | ★★★☆ | 开源 |
Mistral RAG | 长文本理解与生成 | 文本 | 向量相似度检索 | ★★★☆ | 闭源 |
关键结论:
- 对比ChatPDF:ChatPDF仅支持文本解析,而RAG-Anything可处理多模态文档,复杂查询精度提升显著;
- 对比LLMChain:LLMChain依赖单一稠密检索,RAG-Anything的混合检索机制适配更多场景;
- 对比OpenRAG:OpenRAG缺乏多模态支持,而RAG-Anything通过KG实现全局语义关联。
技术选型建议:何时选择RAG-Anything?
- 需要处理多模态文档:如财报、学术论文、技术手册中的图表与文本联合分析;
- 追求高精度检索:传统RAG无法满足复杂查询需求(如图文交叉问答);
- 开源可控性优先:避免闭源工具的数据隐私风险,需自主部署和定制化开发;
- 长尾查询场景:混合检索机制可适应关键词、语义模糊、多模态混合等多种查询类型。
Speculative RAG
论文利用一个更大的通用LM来高效验证由一个小型精炼的专业型LM并行生成的多个RAG草稿。每个草稿基于检索文档的不同子集生成,既能在证据层面提供多样化视角,又能减少单份草稿的输入token量。增强对每个子集的理解能力,并缓解长上下文场景下的潜在位置偏差。通过将草稿生成任务委托给小型专业LM,并由大型通用LM对草稿执行单次验证,显著加速RAG流程。在TriviaQA、MuSiQue、PopQA、PubHealth和ARC-Challenge等基准测试,在降低延迟的同时达到SOTA;尤其在PubHealth数据集上,实现高达12.97%的准确率提升,并将延迟降低50.83%。