CHOP: 多文档RAG的分块式上下文保留框架
摘要
CHOP是一个通过使用上下文感知元数据和基于大语言模型的分块相关性评估来改进多文档检索RAG系统的框架,可以减少语义冲突和幻觉现象。该方法通过智能分块和上下文保留策略实现了90.77%的Top-1命中率。
查看缓存全文
缓存时间: 2026/04/20 08:29
# 用于多文档源RAG的分块级上下文保留框架
来源:https://arxiv.org/html/2604.15802
###### 摘要
检索增强生成(RAG)系统在向量数据库中存在相似文档时会出现检索精度下降、信息冗余、幻觉和事实错误等问题。为了缓解这些问题,我们提出了CHOP框架,该框架通过大语言模型(LLM)迭代评估块相关性,并通过确定与特定主题或查询类型的关联来逐步重建文档。CHOP集成了两个关键组件:CNM-Extractor用于生成紧凑的单块签名(包含类别、关键名词和模型名称),以及连续性决策模块用于通过判断相邻块是否属于同一文档流来保持上下文连贯性。通过为每个块添加上下文感知元数据前缀,CHOP减少了相似文档间的语义冲突并增强了检索器的判别能力。在基准数据集上的实验表明,CHOP缓解了检索混淆问题,为构建高质量知识库提供了可扩展的方法,达到了90.77%的Top-1命中率并在排序质量指标上取得显著提升。
关键词:RAG;分块策略;多文档检索
## 1. 引言
大语言模型(LLM)在广泛的任务中展现了显著的性能。然而,它们在知识密集型或特定领域场景中的表现往往不佳,特别是当查询超出其训练分布或需要最新信息时,容易产生幻觉(Kandpal等,2023;Zhang等,2025)。检索增强生成(RAG)通过从外部知识源检索语义相关的证据来提供解决方案,将模型输出与事实相关联以减少错误并增强实用性(Lewis等,2020;Feng等,2024)。
然而,当前RAG管道存在一个主要限制:基于长度的分段方式会破坏连贯性,导致代词指代和局部参考(如"该方法"、"等式(3)")片段化,降低可解释性和召回率。在多文档上下文中,冗余、重复和冲突的参考进一步增加了检索歧义性并削弱了事实基础。此外,无关或弱相关的段落可能误导LLM,增加输出不准确的风险。
与这些观察相辅相成,**查询侧策略**通过细化输入表示来改进检索,例如通过转换重写查询(如重写-检索-读取)(Ma等,2023)、使用假设文档嵌入(HyDE)将嵌入向答案级语义转移(Gao等,2023)、通过后退式提示将查询抽象为更高级概念(Zheng等,2023)以及通过混合检索结合关键词、语义和向量搜索(Karpukhin等,2020)。**文档侧方法**如ChunkRAG(Singh等,2024)将文本分割为语义连贯的单元并应用多阶段相关性评分,包括自我反思、批评模型、冗余删除和动态阈值处理。**索引优化**通过显式建模相关性信号(如来源质量、跨文档一致性、引用对齐)进一步改进密集检索(Wu等,2024)。
尽管最近有诸多进展,大多数RAG方法仍然独立处理块,忽视了文档内部和之间的话语级依赖关系。忽视这些关系——如定义、代词指代链接和话语转换——往往导致不完整或误导性的事实基础,这个问题在具有近似重复内容和局部参考的多文档上下文中尤为严重。解决这个差距需要上下文保留表示和相关性感知机制,这些机制能够在块之间传播可靠性信号并进入生成过程,确保时刻t的决策以t-1时刻确立的信息为条件。
参见图1
图1:CHOP架构概览,包含两个组件:连续性决策模块用于确定相邻块是否连续,CNM-Extractor用于生成紧凑表示。当连续性成立时(左侧),下一块继承前一块的CNM;当不成立时(右侧),提取新的CNM。每个块随后以其CNM作为前缀,组合表示被嵌入以构建向量数据库。
为了解决块级独立性和多文档集合中的语义冲突问题,我们提出**CHOP**(用于RAG的分块级上下文保留框架)。CHOP通过顺序处理块并使用上下文感知嵌入丰富这些块来增强检索效果。它专为具有子文档间高度词汇或语义重叠的长文档而设计,引入了两个关键组件:(1)**CNM-Extractor**(类别-名词-模型提取器),生成捕获类别、关键名词和模型名称的紧凑单块签名;(2)**连续性决策模块**,根据上下文连续性确定是继承前一块的CNM还是提取新的CNM。通过为每个块添加其CNM作为前缀,CHOP规范化了嵌入空间,减少了语义碰撞,降低了当相似段落共存时的检索混淆——在高重叠设置中改进了相关性,无需重新训练检索器。
## 2. 方法
CHOP专为具有子文档间实质性词汇和语义重叠的复合长文档而设计,这类文档使检索特别具有挑战性。为了处理这一问题,我们引入了一个顺序管道,为每个块分配一致的表示,并仅在上下文发生转变时更新它。管道由两个组件组成:(1)**CNM-Extractor**(类别-名词-模型提取器),从每个块生成关键表示,(2)**连续性决策模块**,根据连续性确定是继承前一块的CNM还是重新提取新的。
### 2.1. CNM-Extractor
输入文件F被分割为一系列固定大小的块{C₁,...,Cₙ}。我们将CNM定义为三元组{Category, Nouns, Model},作为紧凑的单块签名,在长文档中锚定每个块的语义位置并便于下游检索。字段定义如下:
- **Category**:块描述的广泛产品族(例如,*摄像头*、*空调*、*风扇*、*花卉*、*船*)。
- **Nouns**:捕获核心目标或操作的一到两个关键名词,包括部件、操作或功能(例如,*空调滤芯*)。
- **Model**:特定的模型或系列名称(例如,*225B*、*X-SERIES*)。
如式(1)所示,对于每个块Cᵢ,CNM-Extractor以Cᵢ为输入导出其CNM,并生成对应的表示Mᵢ。
(1) Mᵢ = {Categoryᵢ, Nounsᵢ, Modelᵢ}
CNM-Extractor是一个基于LLM的模块,分析块并按预定义模板输出结构化信息。列表1显示了一个示例提示。提示分为指令部分,任何未明确说明或模棱两可的字段必须设置为null。Nouns字段需要1-2个关键名词,其中第一个必须严格遵循"<category> <specific noun>"的形式。输出仅强制为JSON格式,避免自由形式文本以防止格式漂移。即使块被独立处理,提取的CNM也被注入为前缀以稳定上下文框架并澄清对实体、符号和单位的参考。
表1:检索性能对比(按Top-k)
### 2.2. 连续性决策
在多文档(如手册、法规、政策书)中,块边界处的主题转换往往导致语义漂移或噪声放大,降低检索质量。连续性检测器(CD)通过准确区分上下文连续性和异质主题分离来解决这一问题。
连续性决策模块CD(·)是一个基于LLM的分类器,给定相邻块对(Cᵢ, Cᵢ₊₁)和一个决策提示,判断Cᵢ₊₁是否是Cᵢ所在同一文档的延续还是开始一个新的。决策函数在式(2)中正式定义。
(2) contᵢ→ᵢ₊₁ ← CD(Cᵢ, Cᵢ₊₁) ∈ {TRUE, FALSE}
实际上,CD作为一个被提示包含明确决策规则的LLM来实现(列表2)。提示包含多个要素以确保一致的分割:决策目标指示模型将块视为同一手册的部分,除非有强有力的证据表明否则;决策规则定义了开始新手册的明确条件;以及成对输入(包括前一个锚文本和当前文本)以实现上下文比较。
当连续性决策为TRUE时,两个块被视为同一主题流的部分,表示保留了上下文。相反,FALSE表示主题转换,因此上下文中断。
**列表1:元数据提取的提示示例**
从下面的文本中提取产品CNM。
规则:
- category:该文本描述的最通用产品族。(摄像头、空调等)。如果不存在则使用null。
- model:指定的模型/系列(例如,225B、X-SERIES)。如果不存在则使用null。
- nouns:1~2个关键产品名词。
*第一项必须是核心复合名词。如果焦点是同一类别内的特定部件/任务/功能,将其格式化为"<category> <specific noun>"*
*任何剩余项目应为单个名词(部件/操作/功能),例如,电池、充电器、滤芯、喷嘴、风扇
- 始终给出最佳估计+置信度分数。
- 仅返回JSON。
输入文本:{text[:1000]}
基于决策,Mᵢ₊₁按如下方式确定,如式(3)所定义:
(3) Mᵢ₊₁ = { Mᵢ, if contᵢ→ᵢ₊₁ = TRUE
CNM(Cᵢ₊₁), if contᵢ→ᵢ₊₁ = FALSE }
在被判定属于同一流的段落中,CNM保持分段常数以保留语义连贯性。在实现中,前一块的CNM被继承以维持上下文连续性。当相邻块被判定为不相似时,CNM使用CNM-Extractor重新提取。重新提取明确标记主题转换并防止了先前标签的污染或错误传播。
给定决定的CNM Mᵢ,我们按式(4)所定义构造xᵢ和eᵢ:
(4) xᵢ = [PFX(Mᵢ) ∥ Cᵢ], eᵢ = Embed(xᵢ)
我们将xᵢ嵌入为d维向量eᵢ ∈ ℝᵈ,并将文本输入xᵢ及其嵌入eᵢ都存储在向量数据库中。该过程改进了下游阶段的证据集质量,从而增强了RAG管道的稳定性和可靠性。
**列表2:连续性决策的提示示例**
决策目标:保持保守,将文本保留在同一手册中...
决策规则:
- same=true当:相同产品类别/模型,或仅是章节转换...
- same=false当:产品类别改变、新模型(如225B->226R)或新文档标记...
前一个锚点:
当前要判定的文本:
表2:生成性能对比(按Top-k)
## 3. 实验
### 3.1. 实现细节
所有块和查询都使用OpenAI的text-embedding-3-large模型编码,生成3,072维向量eᵢ ∈ ℝ³⁰⁷²。嵌入存储在ChromaDB中,使用HNSW(分层可导航小世界)索引进行近似最近邻搜索。我们通过计算查询和块嵌入间的余弦相似度来执行检索,前k个最相似的块被选为匹配。由于本研究的重点是分类和决策制定而非文本生成,温度固定为0以确保确定性输出和可重现性。所有实验中的主干LLM是Gemma-12B。
**数据集**:我们在MRAMG-Bench上进行评估,这是一个来自ManualsLib的产品手册衍生的基准。虽然原始数据集将每个手册呈现为多个分割列表或片段,但我们将每个手册重建为单个连续文件以更好地模拟真实用途。这削弱了明确的文档边界线索,要求检索更加依赖上下文连续性。与此同时,自然的主题转换和段落间依赖关系被保留,使语料库更忠实于真实的手册结构。所有方法都在这种重建的单文档设置下进行评估。
### 3.2. 检索评估
本研究系统地验证了所提出的CHOP方法是否改进了检索性能。为了隔离CHOP一致前缀注入的效果,检索栈——嵌入、索引和相似度计算——保持固定,仅变化块的组成。随后我们应用多样化的分块策略并量化其对检索性能的影响。
#### 3.2.1. 基准
- **Naive-500T**:每个文档均匀分割为500令牌的固定长度块,重叠为100令牌。
- **Cosine-Chunking**(Singh等,2024):每个文档被分割为句子,使用0.35的余弦相似度阈值在相邻句子之间检测主题转换边界,生成自适应大小的块。
#### 3.2.2. 评估指标
表1比较了每个查询的检索集与其金标准证据。在Top-K假设下,我们报告标准检索指标:Hit@K(K处命中率)、MRR@K(K处平均倒数排名)和NDCG@K(K处归一化折扣累积增益(Järvelin和Kekäläinen,2002))。
Hit@K衡量前K个检索集包含至少一个金标准证据块的案例比例。MRR@K计算每个查询在Top-K列表中第一个相关块的平均倒数排名。NDCG@K应用对数位置...相似文章
Adaptive Chunking:为RAG优化分块方法选择
介绍Adaptive Chunking,一个利用五项文档内在指标为RAG选择最佳分块策略的框架,将答案正确率从62-64%提升至72%,并将问题解决率提高超过30%。
优化基于超图的RAG:迈向更好的事实提取与分块检索
本文提出对HyperGraphRAG的改进,通过使用自一致性提示来提升事实提取效果,并利用个性化PageRank算法增强分块检索。
CoinRAG: Contextualized Information Nugget KV Cache Reuse for Long-Context RAG
CoinRAG is a new method for long-context RAG that reuses fine-grained contextualized information nugget KV caches instead of full chunks, improving efficiency and answering quality. It achieves a new Pareto frontier with 5.3% relative F1 improvement on LongBench multi-hop QA tasks.
@DataScienceDojo: RAG系统中检索步骤的质量取决于提供给它的分块——而大多数团队并没有仔细思考……
本文讨论了RAG系统的五种分块策略,强调了检索精度与推理上下文之间的权衡,并指出适当的分块对于有效检索至关重要。
RAGOCR:基于视觉表示的检索增强文本光学压缩
RAGOCR 是一种新颖框架,根据输入查询将检索到的文档压缩为紧凑的视觉表示,并利用查询感知的动态分辨率来平衡压缩率与信息保真度。实验表明,其在仅使用八分之一输入 token 的情况下,准确率比朴素 RAG 高出 15% 以上。