RAG新动向:CORAL,多轮对话RAG的benchmark

背景

RAG(检索增强生成)是目前大模型应用技术中最火热的方向之一,通过外挂数据进行检索的方式增强LLM的生成能力。在实际应用中,RAG常应用于对话应用,然而之前对于对话型RAG的研究的关注点一直局限于单轮对话中,这和现实场景中的多轮对话其实是存在一定gap的。最近开始有关于RAG的研究将关注点聚焦到了多轮对话上,他们构造了关于多轮对话RAG的benchmark。本文是对《CORAL: Benchmarking Multi-turn Conversational Retrieval-Augmentation Generation》学习、理解和重新整理,希望帮助感兴趣的同学更容易掌握这一块的内容。

论文贡献

在这篇论文中,作者针对多轮对话RAG的场景,做出了以下贡献:

  • 提出了一种自动构建信息检索型对话数据集的方法。并基于这种方法,构建了CORAL(CO nversational R etrieval-A ugmented Generation Language)Benchmark,用于评估RAG的相关任务。
  • 提出了一个统一的框架来规范对话式RAG。
  • 在CORAL上基于规范对现有的一些对话式RAG方法进行了评估。

本文接下来的内容会针对论文内容解答以下问题:1. CORAL是怎样构建的?2. 对话式RAG的统一范式是什么样的?

CORAL构建

数据源选择

为了构造能够评估多轮对话的benchmark,首先要识别出这样的benchwmark应该具有哪些特征,论文中,作者指出了5种特征:

  • open-domain coverage
  • knowledge-intensiveness
  • freeform response
  • handling of topic shifts
  • citation labeling

因此,在选择数据源的时候也要考虑对齐这些标准。CORAL的数据源最终选择了Wikipedia,除了能够满足上面的特征外,还因为Wikipedia还具有广泛的话题、丰富的内容和较好的结构化格式。

语料处理

对于原始的Wikipedia的数据其中存在一些噪声文本和比较长的引用页,在进一步生成之前,需要先对这些数据进行处理。对于噪声文本,作者通过移除Wikipedia模板、过滤非法文本等方式进行了处理;对于比较长的引用页,作者将其进行分割成较小的段,然后过滤掉一些不合理的段。经过处理后得到20000条高质量的文本页。

标题树提取

对于处理后的wiki数据,首先提取出网页中的标题树。构造这样一个树结构是因为html中的标题本身携带了一定的层次信息,这个层次其实也是对内容的一个概括,相当于层次化的表示了内容信息,为后续构建问题提供了基础。

对话流采样

接下来就是基于这个树来构建对话。这里首先要获取一些关键词样本,这个过程我们称作对话流采样。不同的采样方式会得到不同的对话结果,论文中给出了4种采样策略。他们的流程如下图所示:

简单总结一下:

  1. Linear Descent Sampling(LDS) 线性下降采样。从根节点出发,仅允许从父节点到子节点。模拟真实对话场景中的渐进对话搜索场景。
  2. Sibling-Inclusive Descent Sampling (SIDS) : 这个策略在LDS的基础上在兄弟节点之间构建有向链接。模拟真实对话场景中搜索关联查询场景。
  3. Single-Tree Random Walk (STRW) :把父子链接和兄弟链接并入进来从而增强SIDS。模拟真实对话场景中更复杂的场景(我理解是单个话题上的来回提问)。
  4. Dual-Tree Random Walk (DTRW) : 模仿了真实对话场景中出现的话题转换。

策略上是不断递进的。

构造问题

经过上述采样,我们可以得到一些关键词(这些关键词基本上是树节点的标题),接下来需要将这些关键词转换成真实场景中的问题。这是一个多轮迭代处理的过程,在每一轮的处理过程中,需要将每个节点、它的所有祖先节点、当前节点的答案(标题下对应的内容)一起提交给GPT去生成一个自然语言问题,然后将这个生成的结果再提交给GPT去加工,加上一些更符合人类语言现象的内容(比如标点符号等),最终得到一个更加符合真实对话场景的问题。这个过程中两个GPT的prompt是不一样的。经过多轮迭代,最终完成所有数据集的构建。

完成构建

完成构建后,最终会得到8000个对话数据,每种采样得到的数据各2000条,其中LDS的数据包含3-6轮的对话,其他类型的数据中1600个对话是6-10轮,400个是11~20轮,用来模拟真实世界中的长上下文对话的场景。

对话RAG范式

论文中对对话RAG系统进行规范化,范式如下:

其中G表示生成任务,qk表示第k次查询,f表示压缩函数,Hk表示第k次历史,fp表示对检索结果Pk进行压缩。更加形象化的理解如下图所示:

压缩是为了减少无关信息的干扰,使生成任务更加的高效。压缩这里主要的方法包括:

  • Last Response Strategy:使用对话的历史中的问题和最后一个回答。
  • Rewrite Strategy :使用一个rewrite模型结合历史数据对当前问题进行改写。
  • LLM Summarization Strategy:使用LLM模型进行对话历史进行总结。

任务评估

CORAL主要支持3种RAG任务的评估:

  • Conversational Passage Retrieval:这个任务主要评估RAG系统从大量文档中获取关联信息的能力。
  • Response Generation:这个任务评估RAG系统生成准确、详细且符合上下文的答案的能力。
  • Citation Labeling:这个任务评估RAG系统在生成的回复中准确地归因信息来源的能力。

基于上述范式和CORAL数据集,论文中对不同任务进行了评估。具体实验数据可以参考论文,这里不截图了。

总结

本文基于对CORAL论文的理解,对论文中提到的内容进行了整理和表达,使论文内容更加清晰易懂。未来应该会有更多的多轮对话RAG会基于此项工作。希望可以对感兴趣的同学提供帮助。

相关推荐
Cosolar5 小时前
收藏备用!2026 年所有主流 RAG 开源项目都在这里了
人工智能·面试·llm
阿牛大牛中10 小时前
多模态生成式推荐技术脉络-MQL4GRec-MACRec-SynGR
llm·推荐算法·生成式推荐
AIDF202610 小时前
动态大模型 Prompt 生成技术解析
服务器·llm·prompt·agent
Fleshy数模11 小时前
课堂教学质量评估系统:基于加权欧氏距离的评分实现
python·llm
_山海11 小时前
用langchain 通过text-embedding-3-small生成embedding
python·langchain·llm
星浩AI11 小时前
(四)Hugging Face 与魔搭实战:模型下载、API 调用与本地推理
人工智能·深度学习·llm
冬奇Lab12 小时前
Agent系列(二):ReAct——Agent 的"思考-行动"循环
人工智能·llm·agent
冬奇Lab1 天前
让 AI Agent 更可靠:Harness Engineering 与多 Agent 系统工程实践
人工智能·llm·agent
德思特1 天前
从 Dify 配置页理解 RAG 的重要参数
java·人工智能·llm·dify·rag
光辉GuangHui1 天前
Agent Skill 也需要测试:如何搭建 Skill 评估框架
前端·后端·llm