CAG: 基于上下文感知的检索增强生成
论文链接: https://arxiv.org/abs/2411.16133 代码链接: https://github.com/heydaari/CAG
论文概述
这篇论文试图解决的主要问题是在开放领域问答(Open-Domain Question Answering, ODQA)中,大型语言模型(Large Language Models, LLMs)在采用检索增强生成(Retrieval-Augmented Generation, RAG)方法时,检索到不相关信息的问题。具体来说,论文关注以下几个关键点:
- 检索不相关信息的影响 :论文强调了检索不相关信息对于LLMs输出质量的显著负面影响,尤其是在需要利用模型内部知识有效回答问题的情况下。
- 检索增强生成(RAG)的局限性 :论文指出,尽管RAG方法在特定领域问答系统中得到了广泛应用,但其在开放领域问答中存在明显的局限性,尤其是在处理不需要从本地数据集中检索数据的查询时。
- 动态调整LLMs输入提示的需求 :为了提高RAG系统在开放领域和封闭领域问答任务中的可靠性,论文提出了一种新的机制——上下文感知门(Context Awareness Gate, CAG),它能够根据用户查询是否需要外部上下文检索来动态调整LLMs的输入提示。
- 统计方法和可扩展性 :论文还介绍了向量候选(Vector Candidates, VC)方法,这是CAG的核心数学组件,它独立于LLMs,具有统计特性且高度可扩展。
- 上下文与问题之间关系的分布分析 :论文通过对上下文和问题之间关系的分布进行统计分析,提出了可以用于增强RAG系统中上下文检索过程的方法。
论文旨在通过提出CAG架构和VC方法,解决在开放领域问答中检索不相关信息的问题,从而提高LLMs在问答系统中的性能和输出质量。
相关工作
- Query2Doc 和 HyDE :
Query2Doc 和 HyDE 通过基于输入查询生成伪文档,并利用这些伪文档进行语义搜索,而不是直接使用查询本身。这种方法可以提高检索的相关性。
- RQ-RAG:
RQ-RAG 通过将复杂查询分解为更简单的子查询来增强检索性能。
- Rewrite-Retrieve-Read 框架:
该框架使用查询重写来改善查询和相关文档之间的匹配度。
- RobustRAG:
RobustRAG 研究了基于RAG的系统对注入知识数据库的恶意通道的脆弱性。
- ConflictDisentangle Contrastive Decoding (CD2):
其他包括:用于调和LLM内部知识与存储在数据库中的外部知识之间的冲突、简单地向LLM输入提示添加更多上下文并不一定能提高性能;还有论文表明,当检索精度低于20%时,RAG对问答系统没有好处。当检索精度接近零时,RAG管道的表现明显不如没有RAG的管道;用于生成伪查询的模型,以增强语义搜索的质量。
核心内容
论文提出了一个名为上下文感知门(Context Awareness Gate, CAG) 的架构来解决检索不相关信息的问题。CAG 通过动态调整大型语言模型(LLMs)的输入提示,优化了RAG系统的检索过程。以下是解决这个问题的具体步骤和方法:
1. 上下文感知门(CAG)
查询分类:CAG利用一个监督的大型语言模型(LLM)来分类查询,判断是否需要进行检索增强生成(RAG)或不依赖RAG的响应。这种方法可以减少不必要的检索,提高系统的可扩展性和可靠性。
动态提示:CAG根据查询是否需要外部上下文来动态调整LLM的输入提示,从而在需要时使用RAG,而在不需要时则不使用,提高了输出质量。
2. 向量候选(Vector Candidates, VC)
统计语义分析:VC方法通过生成伪查询并计算嵌入分布及其相似性,来评估输入查询是否需要上下文检索。这种方法统计、独立于LLM,且高度可扩展。
算法实现:通过计算上下文和伪查询之间的余弦相似度分布,然后计算用户原始查询与数据集中每个上下文的相似度。如果原始查询与上下文之间的最大相似度落在上下文-伪查询相似度分布内,则认为RAG可能有益;否则,更有效的做法是排除RAG。
3. 上下文检索监督基准(Context Retrieval Supervision Bench, CRSB)
数据集构建:CRSB数据集包含17个不同主题的数据,每个上下文关联3个伪查询,总共包含5,100个问答对。这个数据集用于评估上下文感知系统和RAG语义路由器的性能。
论文实验
论文中进行的实验旨在评估上下文感知门(Context Awareness Gate, CAG)架构的性能和效果。具体实验包括:
1. 数据集和基准测试
- SQuAD 数据集: 使用SQuAD数据集进行实验,将CRSB作为本地数据集进行查询,以检验模型是否能够识别与数据集无关的查询,并避免使用RAG,转而使用LLM输入提示生成少量样本响应。
- CRSB 数据集: 将CRSB作为本地数据集进行查询,以验证模型是否能够识别需要上下文检索的查询,并根据RAG步骤检索相关数据。
2. 评估指标
- 上下文相关性(Context Relevancy):衡量检索到的上下文与用户查询的相关程度。
- 答案相关性(Answer Relevancy):衡量生成的答案与用户查询的相关程度。
3. 实验设置
- 基线模型:使用OpenAI GPT-4o mini作为问答基础模型。
- CAG实现:实施了CAG架构,并与经典的RAG进行比较。
- 超参数设置:将95%密度分布设置为策略P,将阈值T设置为0,作为向量候选的超参数。
4. 实验结果
- SQuAD数据集上的RAG:在SQuAD数据集上,基线模型RAG取得了0.06的上下文相关性和0.186的答案相关性,显示出在捕获和检索相关信息方面的显著局限性。
- SQuAD数据集上的CAG:CAG方法显著提高了这些指标,达到了0.684的上下文相关性和0.821的答案相关性,表明模型在检索和理解上下文相关信息以及提供更准确答案方面的能力得到了显著增强。
- CRSB数据集上的CAG:在CRSB数据集上应用CAG架构得到了更强的结果,上下文相关性达到0.783,答案相关性上升到0.84,表明该方法不仅跨数据集泛化良好,而且显著增强了系统的整体理解和开放领域问答能力。
这些实验结果表明,CAG在开放领域问答中相对于传统的RAG方法具有显著的性能优势,尤其是在提高上下文和答案的相关性方面。通过这些实验,论文验证了CAG架构的有效性和实用性。
编者简介
致Great,中国人民大学硕士,多次获得国内外算法赛奖项,目前在中科院计算所工作,目前负责大模型训练优化以及RAG框架开发相关工作。