跳至内容
LGMGC解读

LGMGC解读

摘要

RAG于QA是有效的。然而分块处理没有得到足够重视。这篇文章证明了分块的关键作用。并提出了LGMGC,一个新的分块框架,将长文档分成上下文关联、“自包含”的尺寸不一的块。实验结果在两个基准测试上进行,证明了提高检索并超过现存分块方法当应用于一个RAG流程时。

介绍

开放领域QA,已经可见RAG是有作用的。模型利用LLM和retrieval system来增强答案生成。在经典RAG流程,文档被分为独立块,然后对query家安所相关chunk,然后二者以提提供给LLM。后续研究者集中在检索和生成/整合,很少集中于合理的分块。检索精度 受 信息粒度(granularity) 和 语义(semantics)影响。此外,上下文信息的缺失和过度不相干信息在同一个chunk会影响LLM从中准确提取关键信息。

为此,提出LGMGC框架。它整合两个分块模型(一个是LG chunker,一个是MG chunker)于一个统一框架。过程始于 分为 语义和上下文关联的单元,通过利用从小规模LLM得到的 “logits information”。

1. Logits 是什么?
定义:Logits 是语言模型(LLM)输出的原始预测分数(未经过 Softmax 归一化的数值),表示模型对每个可能token的“置信度”。
示例: 当模型处理句子 "Paris is the capital of [MASK]." 时,[MASK] 位置的 logits 可能是:
France: 8.2
Germany: 2.1
city: 1.5 较高的 logits 值(如 8.2)表示模型更倾向于选择 France。
2. 如何用于文档分割?
文本遍历: 将文档输入小规模 LLM(如 DistilBERT),逐位置(如逐词/逐句)计算 logits。
检测语义突变点:
计算相邻文本单元的 logits 相似度(如余弦距离)。
若某位置的 logits 与前一单元差异显著(超过阈值),判定为语义边界。 ► 例如:从“科技”话题突然转向“政治”,logits 分布会剧烈变化。
分割文档: 在边界处切分文档,生成语义连贯的块(如话题一致的段落组)。

随后这些块视为父块,进一步被MG chunker分为尺寸不同的子块,当MG chunker响应不同类别的query时。我们的结果证明我们好。

相关工作

递归分块(Recursive Chunking)使用一个分层分割器运用于单元基于一个预定义的结构。尽管它简单,他分的块内部缺少上下文关联。为解决这个问题,Small2-Big采取 检索小chunk然后扩展为大块来为LLM提供额外上下文。语义分块(Semantic Chunking)通过计算passage间的embedding距离来识别断点,以保证分的块有意义和内容“自相关”。但是,分处合理的块仍是挑战性任务。

近期研究同样利用LLM提取有效的块。一种方法用LLM将doc转为“命题们”超过了传统的passage级或句子级分块技术。命题是一种表示表示,封装了不同的事实。

原文:“巴黎是法国首都,也是欧洲人口最密集的城市之一。”
→ 命题1:“巴黎是法国首都。”
→ 命题2:“巴黎是欧洲人口最密集的城市之一。”

LumberChunker通过迭代式向大语言模型(LLM)输入文本段落,自主识别最优分割点。一种方法方法通过提取LLM处理文档时产生的隐层状态向量作为文档表征,直接在模型内部实现相关性匹配与段落定位,从而跳过了显式的文档分块步骤。这些LLM驱动测率说明LLM的潜力,然而增加成本和时间。相比而言,我们的基于LLM的方法只用从一个单向传递得到logits信息,使得分块计算高效。

方法

logits指导的分块器(Logits-Guided Chunker)

假定LLM有足够上下文理解,这里提出方法 识别 完全语义独立的单元之间的 边界。LLM能在已有一段序列后得到接下来的tokens的概率分布。因此,我们能得到[EOS] (End of Sequence)发生的概率(在每句后),假定有个prompt指导LLM持续写内容。直观而言,[EOS]标记的较高概率表明大型语言模型倾向于在该位置终止文本生成,这预示着前文已达到语义完整性。实践中,输入doc鲜卑转为 一连串的块,块由递归分块切分的 固定大小θ个词(递归它不考虑上下文)。我们然后计算块内每个句子后的[EOS]概率,然后选择最高概率那个作为 断点。公式如下

b[EOS] = argmaxᵢ p([EOS] | ρ ⊕ s₁ ⊕ · · · ⊕ sᵢ)
(其中:
⊕ 表示文本拼接
ρ 为续写指令提示
argmaxᵢ 表示取使概率最大化的索引位置 i )

第一个块中,断点之前的作为一个独立块,断点之后的和第二个块进行连接,再进行分割,直到输入分割器的长度小于阈值。

两种情况:
1 最后一个块和倒数第二个块断点后连接后的 文本 长度不够。
2 最后一个块和倒数第二个块断点后的 文本打断点后,剩余内容长度不够。

值得以提的是,尽管这样产生的块长度不一,但最大长度受到限制。

多粒度分块器(Multi-Granular Chunker)

文献指出,将用于检索和生成的文本块解耦(分解)有益。该方法用较小的块检索然后将 小块所在大块提供给LLM。基于这个概念,我们引入多粒度分块器将文本切分成子块(child chunks)在不同的粒度上。起初doc用递归分块法分为父块(θ words)。每个父块然后再递归地再分块为两种子块,θ/2 words和θ/4 words,同时是保证句子不会因分块断开。计算相似度时,父块的相似度:父块、所有两种子块得分的最大值。将得分前k个的父块输给LLM。

logits指导的多粒度分块器(LGMGC)

多粒度分块器得到的输出作为父块输入给多粒度分块器,检索时参考多粒度分块器检索的检索方法。具体来说,第一个logits chunker得到的父块长为θ_1 words,然后…,第二个 父块长为θ_2 words。

实验设置

为评估Logits引导的多粒度分块器(Logits-Guided Multi-Granular Chunker)的影响,我们通过检索和下游问答任务测试其性能。 数据集与指标

  • 检索评估: 采用GutenQA基准数据集,该数据集包含源自叙事书籍的"大海捞针"(needle in a haystack)类问答对。因每个问题的证据仅由1-2个句子组成,证据不会分散在不同分块中。遵循其评估方案,我们使用DCG@k和Recall@k作为指标。
  • 数据重标注: 观察到部分证据未直接出现在原始文本中(可能源于LLM合成生成),这种差异会降低匹配率并削弱检索块与查询相关性的评估价值。我们为每个证据计算其与各分块的ROUGE分数,并选择最高分分块作为查询关联块。
  • 端到端RAG评估: 采用LongBench的三个单文档QA数据集: ▶ NarrativeQA:叙事文本问答 ▶ QasperQA:科研论文问答 ▶ MultifieldQA:多领域事实问答 这些任务旨在信息抽取,无需复杂推理。按标准,使用F1值作为评估指标: Precision=∣BOW(pred)∩BOW(gt)∣∣BOW(pred)∣,Recall=∣BOW(pred)∩BOW(gt)∣∣BOW(gt)∣,F1=2⋅P⋅RP+R\text{Precision} = \frac{|\text{BOW}(pred) \cap \text{BOW}(gt)|}{|\text{BOW}(pred)|},\quad \text{Recall} = \frac{|\text{BOW}(pred) \cap \text{BOW}(gt)|}{|\text{BOW}(gt)|},\quad \text{F1} = \frac{2 \cdot \text{P} \cdot \text{R}}{\text{P} + \text{R}} 其中:
  • BOW(A)\text{BOW}(A) 表示预测答案(predpred)或真实答案(gtgt)的词袋集合
  • ∩\cap 运算对共有词取其最小词频

基线方法 评估对比以下主流方法:

  1. 通用分块器
  • Recursive Chunker:递归分块
  • Semantic Chunker:语义分块
  1. 段落检索专用
  • Para Chunker:段落级分块
  • LumberChunker:LLM迭代分块
  1. 消融对照
  • MG Chunker:多粒度分块器(无Logits引导)
  • LG Chunker:Logits引导分块器(无多粒度) ▶ 注:LG Chunker与LGMGC使用8位量化Llama3-8b ▶ 所有方法在θ={200, 300, 500}词的分块尺寸下测试超参数敏感性

实现细节

  • 架构: 采用独立检索器与合成器,不同分块策略接入统一框架
  • 检索器: ▶ 稠密检索器:BGE-Large(段落检索) + E5-Large(下游QA)
  • 合成器: ▶ LLama3-8b-Instruct(4位量化) ▶ LLama3-70b-Instruct(fp16)
  • 控制变量:
  1. 生成答案采用贪心搜索降低随机性
  2. 为公平比较不同分块尺寸:
  • 合成器输入上下文长度上限=1500词
  • Top k分块顺序拼接直至达上限
  1. 无检索基线:因算力限制截断文档至3500词/
最后更新于