LongRAG:智谱联合清华和中科院推出的双视角鲁棒检索框架

简介: LongRAG是由智谱、清华大学和中国科学院联合推出的双视角鲁棒检索增强生成框架,专为长文本问答设计。该框架通过混合检索器、LLM增强信息提取器、CoT引导过滤器和LLM增强生成器等组件,有效解决了长文本问答中的全局上下文理解和事实细节识别难题。LongRAG在多个数据集上表现优异,提供了自动化微调数据构建管道,增强了系统的“指令跟随”能力和领域适应性。

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


🚀 快速阅读

功能:解决长文本问答中的全局上下文理解和事实细节识别难题。
技术:基于混合检索器、LLM增强信息提取器、CoT引导过滤器和LLM增强生成器。
应用:客户服务、医疗咨询、法律咨询、教育与研究、企业决策支持。

正文(附运行示例)

LongRAG 是什么

公众号: 蚝油菜花 - LongRAG

LongRAG是由清华大学、中国科学院和智谱的研究团队共同推出的,面向长文本问答(LCQA)的双视角鲁棒检索增强生成(RAG)框架。该框架通过混合检索器、LLM增强信息提取器、CoT引导过滤器和LLM增强生成器四个组件,有效解决了长文本问答中的全局上下文理解和事实细节识别难题。

LongRAG不仅在多个数据集上超越了长上下文LLM、高级RAG系统和Vanilla RAG等基线模型,还展现出卓越的性能和鲁棒性。此外,LongRAG提供了自动化微调数据构建管道,增强了系统的“指令跟随”能力和领域适应性。

LongRAG 的主要功能

  • 双视角信息处理:基于全局信息和事实细节的双视角来理解和回答长文本上下文问题。
  • 混合检索器:快速从大量数据中检索与问题相关的信息片段。
  • LLM增强信息提取器:将检索到的片段映射回原始长文本段落,提取全局背景和结构信息。
  • CoT引导过滤器:用链式思考(Chain of Thought, CoT)指导模型关注与问题相关的信息,过滤掉不相关的内容。
  • LLM增强生成器:结合全局信息和关键事实细节生成最终答案。
  • 自动化微调数据构建:基于自动化流程构建高质量的微调数据集,提升模型在特定任务上的表现。

LongRAG 的技术原理

  • 检索增强生成(RAG):基于RAG框架,检索外部知识辅助语言模型生成回答。
  • 全局信息和细节信息的整合:系统不仅关注局部事实细节,还整合长文本中的全局信息,提供更全面的答案。
  • 映射策略:将检索到的片段映射回原始长文本,恢复上下文信息,提供更准确的背景结构。
  • 链式思考(CoT):用CoT作为全局线索,指导模型逐步关注与问题相关的知识,提高证据密度。
  • 过滤策略:基于CoT的全局线索,过滤掉不相关的信息片段,保留关键的事实细节。

如何运行 LongRAG

环境设置

首先,安装所需的依赖包:

pip install -r requirements.txt

推荐使用FlashAttention 2进行优化和节省GPU内存,相关依赖可以参考FlashAttention的代码库进行安装。

数据准备

原始训练数据来自HotpotQA, 2WikiMultihopQA, MuSiQueQasper。评估数据和相应的检索语料库原始数据来自LongBench

可以通过以下命令下载标准化的原始数据集:

bash download/raw_data.sh

数据将下载到data/目录中。

数据处理

构建LRGinstruction数据集用于SFT:

cd src
python gen_instruction.py --per_task_num 200 --min_res_tokens 20 --long_ratio 0.2

处理后的数据将保存在data/train/processed目录中。

构建检索索引并保存分块与原始文本之间的映射关系:

cd src
python gen_index.py --dataset hotpotqa --chunk_size 200 --min_sentence 2 --overlap 2

处理后的数据将保存在data/corpus/processed目录中。

训练 LongRAG

首先,下载LLaMA-Factory到项目中。然后将构建的指令数据放入LLaMA-Factory/data,并在dataset_info.json中添加以下条目:

"LRGinstruction": {
   
  "file_name": "LRGinstruction.json",
  "columns": {
   
    "prompt": "instruction",
    "query": "input",
    "response": "output"
  }
}

然后运行以下脚本开始微调:

cd scripts
bash sft.sh $model_name_or_path $template $cutoff_len

model_name_or_path应与模板对应,cutoff_len是截断长度。

评估

以下是一些在HotpotQA上进行推理和评估的示例脚本。首先导航到src目录。

使用不同方法

我们提供了使用ChatGLM3-6B-32k模型的推理示例。

LongRAG-ChatGLM3-6B-32k (without SFT):

CUDA_VISIBLE_DEVICES=0 python main.py --dataset hotpotqa --model chatGLM3-6b-32k --rb --rl --ext --fil --ext_fil

LongRAG-ChatGLM3-6B-32k (with SFT):

CUDA_VISIBLE_DEVICES=0 python main.py --dataset hotpotqa --model LongRAG-chatglm3-32k --rb --rl --ext --fil --ext_fil

组件可迁移性

仅使用Extractor,生成器使用GPT-3.5-turbo,Extractor使用LongRAG-chatglm3-32k:

CUDA_VISIBLE_DEVICES=0,1 python main.py --dataset hotpotqa --model gpt-3.5-turbo --lrag_model LongRAG-chatglm3-32k --ext

仅使用Filter,生成器使用GPT-3.5-turbo,Filter使用LongRAG-chatglm3-32k:

CUDA_VISIBLE_DEVICES=0,1 python main.py --dataset hotpotqa --model gpt-3.5-turbo --lrag_model LongRAG-chatglm3-32k --fil

同时使用Extractor和Filter,生成器使用GPT-3.5-turbo,Extractor和Filter使用LongRAG-chatglm3-32k:

CUDA_VISIBLE_DEVICES=0,1 python main.py --dataset hotpotqa --model gpt-3.5-turbo --lrag_model LongRAG-chatglm3-32k --ext_fil

注意:参数--rb--rl--ext--fil--ext_fil分别表示运行RAG-Base、RAG-Long、Extractor、Filter和Extractor & Filter。这些参数可以任意组合。

评估结果将保存在log目录中。

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦

相关文章
|
存储 消息中间件 NoSQL
两万字长文让你彻底掌握 celery
两万字长文让你彻底掌握 celery
6692 3
|
6月前
|
人工智能 自然语言处理 供应链
跨境电商代购代采系统:驱动全球贸易高效运转的引擎
跨境电商代购代采系统是基于互联网技术的智能采购平台,整合中国主流电商平台资源,为海外客户提供全流程解决方案。它通过简化采购流程、优化供应链管理、提升用户体验和拓展市场边界,赋能跨境电商发展。系统支持多语言服务、实时物流追踪与安全支付,降低运营成本和库存压力,助力企业挖掘新增长点。未来,系统将向智能化、绿色化和生态化方向升级,成为全球贸易新生态的重要推动力量。
|
6月前
|
数据安全/隐私保护 UED
2025 年 Adobe Acrobat Reader、万兴 PDF 阅读器、Sumatra PDF 三款高性价比 PDF 阅读器推荐
本文介绍了三款PDF阅读器:`Adobe Acrobat Reader DC`、`万兴PDF阅读器`和`Sumatra PDF`。其中,`Adobe Acrobat Reader DC`功能全面,支持签名、批注、表单处理等高阶操作,适合专业需求;`万兴PDF阅读器`不仅阅读便捷,还提供强大的格式转换与编辑功能,支持批量操作;`Sumatra PDF`则以轻量级和快速打开著称,适合简单阅读需求。根据个人需求选择合适的工具,下载链接已提供。
731 0
|
运维 网络协议
IP 地址类别:权威指南
IP 地址类别:权威指南
2277 4
|
机器学习/深度学习 编解码 数据可视化
图神经网络版本的Kolmogorov Arnold(KAN)代码实现和效果对比
目前我们看到有很多使用KAN替代MLP的实验,但是目前来说对于图神经网络来说还没有类似的实验,今天我们就来使用KAN创建一个图神经网络Graph Kolmogorov Arnold(GKAN),来测试下KAN是否可以在图神经网络方面有所作为。
517 1
|
Linux 开发者 iOS开发
Python常用打包工具比较
以上是常用的四种打包工具比较。各自有着自己的优缺点,开发者可以根据自己的需求来选择合适的工具。如果你只需要在 Windows 平台上运行应用程序,可以选择 py2exe。如果你需要跨平台支持,并且希望打包过程简单,可以选择 Briefcase。如果你需要支持多个平台,并且打包过程比较复杂,可以选择 cx_Freeze。如果你需要支持多个平台,并且对第三方库的兼容性有较高的要求,可以选择 PyInstaller。
1529 4
|
传感器 机器学习/深度学习 人工智能
史上最全综述 | 3D目标检测算法汇总!(单目/双目/LiDAR/多模态/时序/半弱自监督)(下)
近年来,自动驾驶因其减轻驾驶员负担、提高行车安全的潜力而受到越来越多的关注。在现代自动驾驶系统中,感知系统是不可或缺的组成部分,旨在准确估计周围环境的状态,并为预测和规划提供可靠的观察结果。3D目标检测可以智能地预测自动驾驶车辆附近关键3D目标的位置、大小和类别,是感知系统的重要组成部分。本文回顾了应用于自动驾驶领域的3D目标检测的进展。
史上最全综述 | 3D目标检测算法汇总!(单目/双目/LiDAR/多模态/时序/半弱自监督)(下)
|
设计模式 搜索推荐 算法
JDK中的排序:Arrays.sort的源码实现
JDK中的排序:Arrays.sort的源码实现
959 0
JDK中的排序:Arrays.sort的源码实现
|
Windows
Windows删除文件时如何取消显示“确认是否删除”的弹窗
本文介绍Windows电脑删除文件时,开启或取消显示确认删除这一提示弹窗的方法~
1103 1
Windows删除文件时如何取消显示“确认是否删除”的弹窗
|
SQL Java 数据库
如何利用SpringBoot 搭建微服务?
这篇就利用SpringBoot 搭建微服务,带大家从代码的角度来加深对微服务的概念,理解了概念才会知道微服务怎么架构的,组件与组件之间是如何互通通信的
945 1
如何利用SpringBoot 搭建微服务?

热门文章

最新文章