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

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_基础版,每接口每天50万次
NLP自然语言处理_高级版,每接口累计50万次
简介: 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 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

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

相关文章
|
9月前
|
人工智能 自动驾驶 安全
破壁人AI百度:科技公司反内卷的典型样本
互联网整个行业都在陷入被动且尴尬的局面。去年开始流行的“内卷”一词,恰如其分的描述了互联网的现状,比如抖音开始做外卖,微信强推视频号,一直硝烟弥漫的电商市场,更是激战在社区团购上。 内卷背后也有人感慨,互联网到了尽头。支撑这一论述的是,移动互联网的人口红利已经消失,几款国民型APP用户增长都固定在了10亿这个级别,只能依靠自然人口的增长和迁移。
61 0
|
3月前
|
人工智能 自然语言处理 数据处理
LazyGraphRAG:微软推出的图形增强生成增强检索框架
LazyGraphRAG是微软研究院推出的图形增强生成增强检索框架,旨在大幅降低数据索引成本并提高查询效率。该框架结合了最佳优先搜索和广度优先搜索,支持本地和全局查询,适用于一次性查询、探索性分析和流数据处理。LazyGraphRAG将加入开源的GraphRAG库,为开发者和企业提供更高效的技术支持。
142 0
LazyGraphRAG:微软推出的图形增强生成增强检索框架
|
3月前
|
机器学习/深度学习 人工智能 缓存
最佳实践!使用 GraphRAG + GLM-4 对《红楼梦》全文构建中文增强检索
特别介绍`graphrag-practice-chinese`项目,这是一个针对中文优化的GraphRAG应用实例,通过改进文本切分策略、使用中文提示词及选择更适合中文的模型等手段,显著提升了处理中文内容的能力。项目不仅包括详细的搭建指南,还提供了《红楼梦》全文的索引构建与查询测试示例,非常适合个人学习和研究。
1542 1
|
3月前
|
机器学习/深度学习 人工智能 监控
AutoTrain:Hugging Face 开源的无代码模型训练平台
AutoTrain 是 Hugging Face 推出的开源无代码模型训练平台,旨在简化最先进模型的训练过程。用户无需编写代码,只需上传数据即可创建、微调和部署自己的 AI 模型。AutoTrain 支持多种机器学习任务,并提供自动化最佳实践,包括超参数调整、模型验证和分布式训练。
293 4
AutoTrain:Hugging Face 开源的无代码模型训练平台
|
2月前
|
存储 人工智能 数据库
Codel:AI代理工具,支持在终端、浏览器、编辑器执行复杂任务和项目
Codel是一款全自主AI代理工具,支持在终端、浏览器和编辑器中执行复杂任务和项目。它运行在沙盒化的Docker环境中,具备自主操作能力,内置浏览器和文本编辑器,所有操作记录存储于PostgreSQL数据库。Codel能够自动完成复杂任务,如创建项目结构、进行网络搜索等,适用于自动化编程、研究与开发、教育与培训以及数据科学与分析等多个领域。
108 11
Codel:AI代理工具,支持在终端、浏览器、编辑器执行复杂任务和项目
|
3月前
|
人工智能 API 开发工具
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
吴恩达发布的开源Python库aisuite,提供了一个统一的接口来调用多个大型语言模型(LLM)服务。支持包括OpenAI、Anthropic、Azure等在内的11个模型平台,简化了多模型管理和测试的工作,促进了人工智能技术的应用和发展。
226 1
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
Documind:开源 AI 文档处理工具,将 PDF 转换为图像提取结构化数据
Documind 是一款利用 AI 技术从 PDF 中提取结构化数据的先进文档处理工具,支持灵活的本地或云端部署。
150 8
Documind:开源 AI 文档处理工具,将 PDF 转换为图像提取结构化数据
|
9月前
|
人工智能 API 开发者
【AI大模型应用开发】0.2 智谱AI API接入详细步骤和简单应用
【AI大模型应用开发】0.2 智谱AI API接入详细步骤和简单应用
1357 0
|
SQL 前端开发 关系型数据库
LLM大模型实战 —— DB-GPT阿里云部署指南
DB-GPT 是一个实验性的开源应用,它基于FastChat,并使用vicuna-13b作为基础模型, 模型与数据全部本地化部署, 绝对保障数据的隐私安全。 同时此GPT项目可以直接本地部署连接到私有数据库, 进行私有数据处理, 目前已支持SQL生成、SQL诊断、数据库知识问答、数据处理等一系列的工作。
9214 2
|
3月前
|
人工智能 并行计算 监控
深入剖析 Qwen2.5 - 32B 模型在 VLLM 上的单机三卡部署与运行
本文深入探讨了Qwen2.5 - 32B模型在VLLM框架上的部署过程,从模型下载、启动命令、资源占用分析到GPU资源分配及CUDA图应用,详述了大模型运行的挑战与优化策略,强调了硬件资源规划与技术调优的重要性。
1693 2

热门文章

最新文章