1. 引言
随着信息技术的快速发展,混合长文档已成为可行性研究报告、技术白皮书等领域的主流信息载体[1]。这类文档兼具非结构化文本与结构化表格的多模态特性,在进行文档级问答(QA)任务时普遍存在两大问题:(1) 平均长度超过80页的文档导致人工浏览效率低下(据实测,专家平均需要4.5小时/份);(2) 长篇文档信息的复杂性使得关键证据分散在文档不同的位置。目前,LLMs在各类自然语言处理任务中展现出前所未有的突破[2] [3],为高效处理长文档提供了新的可能性。然而,在面对可研报告等长文档时,会由于缺乏精确上下文而导致知识幻觉问题[4];此外,由于LLMs的输入长度通常受限于固定大小的上下文窗口,直接利用整篇可研报告作为输入会发生截断,影响信息抽取的完整性和准确性,同时也会引入无关噪声,降低模型的性能。事实上,在文档级问答任务中,只需要使用与用户声明相关的部分证据片段就可以推理出答案,不仅可以避免引入过多噪声,还能有效解决长文档输入导致的长度限制问题和事实幻觉问题[5],如图1所示。
目前,证据片段的获取方法主要分两种:一种是基于检索的方法[6],基于检索的方法涉及从大量语料库中检索与声明相关的片段来获取证据,虽然覆盖面广,但存在检索效率低、准确性不足以及难以处理表格等结构化数据的局限性;一种是基于生成的方法[7],基于生成的方法则根据声明依赖LLMs来生成证据,但处理整个报告可能会引入噪声信息,影响生成证据的质量。因此,为了克服这些不足,将两种方法结合是一种有效策略,先通过检索方法获取相关文档片段,再利用生成方法提炼和补充细节,可以充分发挥两者的优势,弥补各自的不足。
针对上述问题,本文提出了一种面向混合长文档的多粒度证据检索方法(Multi-Granularity Evidence Retrieval, MGER),该方法结合LLMs的语义理解能力,从长篇可研报告中高效提取与声明相关的证据片段。通过聚焦于细粒度的证据提取,本方法不仅实现了对可研报告的有效压缩,还显著提升了大语言模型在生成证据时的性能与准确性。此外,该方法为从可研报告中全局提取与用户声明相关的最优信息提供了一种可行的解决方案,解决了传统方法在处理长文档时面临的信息过载和噪声干扰问题。适用于问答系统[8]、信息检索、事实核查等多种下游应用,进一步推动大语言模型在实际场景中的落地与优化。
Figure 1. Generating answers based on user claims and evidence segments
图1. 根据用户声明和证据片段生成答案
我们在数据集上进行了综合实验,实验结果表明:MGER在提取证据片段时的准确率达到80.4%,显著优于基线方法。这些结果验证了我们的方法能够有效地从可行性研究报告中选择相关知识,从而生成更准确的答案。
综上所述,我们的主要贡献如下:
构建了首个可研报告专业数据集,包含226份标注文档和1638个QA对。
提出一种面向混合长文档的多粒度证据检索方法(MGER),该方法通过从可行性研究报告中选择与声明最相关的片段,显著提升了LLMs在回答问题时的准确性,有效缓解了LLMs在处理长文档时面临的幻觉问题和上下文窗口限制。
我们通过多粒度(章节/段落/句子)匹配,解决了长文档中关键信息分散的问题。实验结果表明,我们的方法在数据集上实现了不错的性能。
2. 相关工作
证据检索是指从文档中查找相关的证据以支持回答特定的问题,在许多任务中都起着至关重要的作用,它可以过滤原始上下文,快速定位特定的信息片段,为用户声明提供原始依据,使模型集中在文档中与声明最相关的部分进行答案推理,避免通篇浏览文档。
何等[9]提出基于关键词–注意力机制的证据检索方法,通过构建“文档–声明对”数据集来训练证据检索模型,并结合关键词–注意力机制对检索结果进行筛选,旨在从文档中检索出与声明最相关的句子作为证据。贺[10]等人参照前人的工作,通过标题初步筛选出包含声明成分短语的候选文档,计算候选文档与声明的TF-IDF相似值来选取值最高的Top-k文档,采用基于交互式相似度模型的证据筛选方法进一步筛选。Huang等[11]在文档级关系抽取任务中提出:对于给定实体,抽取它们的关系可能只需要几句话而不是整个文档,反而阅读整篇文章会引入不相关的信息。因此,该论文通过设计三个启发式规则来选择证据句子以用于文档级关系抽取任务。但此方法虽然在一定程度上减少了不相关信息的干扰,但仍存在一些局限性。首先,启发式规则依赖于人工设计的特征,可能无法充分捕捉文档中的复杂语义关系。其次,规则的选择范围有限,难以适应多样化的文档结构和内容。安[12]等提出了一个新的证据句子提取模型,通过结合删句法和双线性函数法(公式法)来识别关键句子,并将两者提取出的证据句子加权融合,以激励模型关注证据句子。尽管这种方法在证据句子提取方面取得了一定成效,但其设计存在耦合性较大的缺点。
上述大部分都是基于短篇文本进行证据检索,但随着实际应用需求的扩展,越来越多学者开始转向长文档证据检索,McDonald [13]等学者对原始PDF格式的科学研究论文进行证据检索,预测问题的答案,并将此系统拆解为文本提取、证据检索和问答三个子任务,学者考虑了几种架构通过根据与问题的相似度对相关段落进行排序来识别相关段落。随着LLMs的兴起,也有人开始探索利用大语言模型进行证据检索的新范式,Zheng [14]等人提出了一种新的大语言模型知识选择方法(KS-LLM),旨在从证据文件中识别有价值信息,该方法基于输入问题生成三元组,从证据文档中选择与三元组最相似的证据句子,最后将证据句子和三元组结合起来,以协助大语言模型生成答案。
尽管许多学者开始研究证据检索,但是有关证据检索的提取方法没有统一,并且现有的方法效果也是参差不齐。虽然现有方法在证据检索方面取得了一定成效,但大多利用的是整个文档作为输入,这可能会引入很多无关噪声,相比之下,我们提出的方法有效地从文档中提取出最相关片段以辅助大语言模型进行答案生成,提高了效率和准确率。
3. 方法
本研究的目标是根据用户声明从可研报告文档中提取出证据片段以辅助大语言模型进行答案生成,从而提高大语言模型的性能。在本节中,我们将详细描述我们提出的MGER方法,总体结构图如图1所示,MGER主要包括4个细分的阶段:(1) 根据用户声明和可研报告进行粗粒度章节检索。(2) 基于候选章节进行细粒度段落级检索识别证据段落。(3) 段落表格序列化。(4) 证据段落去噪与答案生成。
3.1. 问题描述
我们的任务是有关于docx文档级别的证据检索,因此,我们的文档问答任务定义为:给定一个用户声明q和一个docx文档,检索q的证据片段,以辅助大语言模型进行答案生成。我们可以将任务总结成3个部分,即分层证据段落检索、表格序列化、证据段落去噪与答案生成。如图2所示。
3.2. 分层检索策略
由于可研报告的文档特性,即文档章节子标题能很好地反映各部分内容的主题和重点,这种结构化的章节子标题下可能涵盖多个段落,因此我们采用分层检索策略,先对章节进行粗粒度筛选,再对选中章节中的段落进行细粒度的句子级分析,通过章节–段落的分层结构由外而内逐步细化检索范围,能够有效减少需要处理的文本量,同时最大化提取证据的相关性,缩小搜索范围,从而解决大语言模型在处理长文档时的局限性,并提高整体效率和精度。
3.2.1. 章节级别的分块和检索
(1) 章节分块
可行性研究报告通常包含多个章节,每个章节由子标题及其下的多个段落组成。本文根据子标题将文档划分为多个章节块,每个章节块包含一个子标题及其下的所有段落。这种分块方式能够快速定位与用户声明相关的主题区域,减少检索范围。
Figure 2. MGER overall structure diagram
图2. MGER整体结构图
(2) 动态选取策略
为了快速筛选出与用户声明相关的章节,本文提出了一种结合BM25算法和自然语言推理(NLI)模型的章节检索方法。该方法按照与声明的相关程度对章节进行降序排序,并采用基于最高分的比例动态选取策略构建候选章节,本文选取相似度分数排名在前20%的章节作为候选集。筛选规则如下:
(1)
设定为0.8,q为声明,C为章节内容。
(2)
具体来说,BM25算法是根据文档频率(DF)和词频(TF)计算相似度分数,但由于不同文档和声明的词频分布差异,生成的相似度分数范围可能存在较大波动,若采用固定选取top-k章节的策略,可能会引入冗余数据,尤其是在块内相关性较高而块间相对独立的情况下。因此,本文采用基于比例的动态选取标准,能够有效减少冗余数据的引入,同时提高信息检索的效率和准确性。这一策略不仅适应了相似度分数的波动性,还确保了候选章节的相关性和多样性。
(3) 融合BM25算法和自然语言推理(Natural Language Inference, NLI)的章节选取
NLI是一种判断两段文本语义关系的技术,主要识别前提与假设之间的逻辑关系,包含蕴含、矛盾、中立三种结果。因此,为了同时捕捉关键词匹配和语义相关性,我们提出了一种融合BM25算法和NLI的章节选取方法。该方法首先利用BM25算法进行初步筛选,获取相关章节信息,随后基于筛选结果进行动态选取,即公式,并利用NLI对选取的章节进行内部排序,选取蕴含分数大于合适阈值的章节作为候选章节,阈值选取详见4.2节。
考虑到直接使用章节子标题与声明进行NLI可能导致语义不完整,而使用整章内容又可能引入冗余数据,进而降低结果准确率,因此我们基于文档段落的特性进行了优化。具体而言,段落中的关键信息通常集中在段首句,我们提取每个段落的段首句组成上下文,作为对章节子标题的补充。通过将标题与上下文结合进行NLI,能够有效提升结果的准确性。我们将标题与上下文作为NLI的前提,将用户声明作为假设,我们使用的NLI模型是Qwen2.5-72B-Instruct。
段首句提取:对于每个章节
,
,其中,
表示章节索引,m表示章节中的段落数量。
NLI内部排序结果选取:
(3)
其中,
是章节的蕴含分数,表示二者的相关程度;q表示声明;
表示第i章标题;
表示第i章所有段落的段首句;
表示选取合适的阈值。
3.2.2. 段落级别的分块和检索
(1) 段落分块
基于候选章节,进行段落级别的划分,以进一步细化检索范围,定位与用户声明最相关的段落。在划分过程中,系统会特别识别并保留表格及其表头等信息,将表格划分为单独段落。
(2) 基于句子级相似度最大值聚合的段落选取
基于候选章节,进一步对章节内的段落进行细粒度检索以进一步细化检索范围,定位与用户声明最相关的段落。为了优化段落排序任务,我们结合句子级相似度计算和最大值聚合技术,即将段落内所有句子与声明的相似度得分通过特定规则(此处为最大值选取)合并为一个代表该段落整体相关性的综合得分,使之能够有效捕捉段落中局部关键证据,避免段落中低相关句子拉低整体得分。具体实现如下。
基于候选章节,我们首先将其内容按段落分块,并采用基于嵌入的检索策略。嵌入模型选用sentence-transformers/paraphrase-multilingual-mpnet-base-v2,该模型支持最长512个tokens的序列,能够有效处理多语言文本。在嵌入计算过程中,我们将每个段落进一步切分为句子,分别计算用户查询与每个句子之间的语义相似度。对于声明
和句子
,我们将其编码为嵌入向量
和
:
(4)
(5)
然后,通过最大值聚合技术,将段落中所有句子的最高相似度得分作为该段落的语义相似度得分,如公式(6)所示。这种方法能够捕捉段落中最相关的语义信息,避免段落中低相关句子拉低整体得分,从而更准确地反映段落与查询的相关性。
(6)
其中,
表示段落,
表示段落中的句子,
表示第
个段落的得分,
和
分别是公式(4)和(5)生成的嵌入向量。
针对不同问题答案分布的差异性,即部分答案集中在一个段落,而其他答案分散在多个非连续段落,直接选取固定数量的Top-K个段落会引入噪声,影响整体性能。为此,我们先通过较低阈值初步筛选,若结果过多则逐步提高阈值进行二次精筛,即渐进阈值检索,这样可以保证:对于答案集中的问题,高相似度段落会优先被选中;对于答案分散的问题,低阈值确保覆盖所有相关段落。
这种结合句子级相似度计算和最大值聚合的策略,能够捕捉细粒度的语义信息,即分散的关键句,避免段落整体嵌入可能导致的语义稀释问题,适合需要高召回率的场景。
基于注意力机制的聚合是一种动态加权方法,通过点积相似度计算声明和每个句子的相关性,并通过注意力机制动态分配权重,加权聚合后得到段落与声明的语义相似度得分,最终返回与声明最相关的段落及其相似度得分,这种方法能够更灵活地捕捉段落中与声明最相关的部分,同时保留上下文信息。
与最大值聚合不同,加权平均聚合会计算段落中所有句子的相似度得分的加权平均值,从而更全面地反映段落与问题的相关性,避免因单个高相似度句子导致的偏差,加权平均得分更能反映段落的整体语义相关性,适用于需要综合考虑段落内所有句子信息的场景。
加权平均得分计算:
(7)
其中,
是段落中的句子,
是段落中的句子数量。
3.3. 候选段落去噪
在证据检索阶段得到候选段落之后,由于候选段落中的每一个段落总体上是与声明相关的,但段落中有些句子与声明在语义上不相关,这些句子的存在会干扰模型寻找正确答案的注意力,我们将这类句子视为有噪声的句子[15]。因此,得到候选段落之后,我们需要对候选段落中的句子进行去噪。我们参考Xu等人[16]论文中每个句子对特定实体的重要性计算方法,即若删除一个句子,并且预测的相似度概率低,那么这个句子很可能就是证据句子,若预测的概率没有什么变化,则此句子很可能就是非证据句子。
由于论文中的方法针对的是实体关系抽取,因此我们需要改进以适配我们的去噪任务。我们使用句子与声明的余弦相似度替代关系概率,即:
(8)
其中,
为嵌入模型,
为段落,
为声明与整个段落的相似度。
针对传统单句删除在长段落中出现的语义贡献稀释问题,表现为删除单句对整体的相似度影响微弱,即单句贡献被稀释,会导致噪声误判,从而使证据句子和噪声句子区分度低,我们提出一种基于滑动窗口的动态删句法,其核心流程如下。
将长段落划分为滑动窗口,使用自适应窗口大小w (详见公式(9))和步长
,我们计算删除整个窗口后的相似度变化
(详见公式(10)),若
表示窗口内的句子对整个段落没有贡献,即为噪声句子,加入非证据句子集。但由于窗口的误判,我们利用保守删除策略,仅当句子
被所有覆盖它的窗口都标记为噪声时,才删除(详见公式(11));反之,则表示窗口内至少包含一个证据句子,然后再对窗口内的句子进行删句。这样可以避免单句删除的信号噪声比过低的问题。而对于短文本段落,我们将窗口大小设为1,即每次删除一个句子。
自适应窗口大小
:
(9)
其中,
表示段落中的句子数量。
对于每一个窗口
:
(10)
保守删除策略:
(11)
3.4. 表格序列化方法
可研报告中的大型表格由于水平标题与垂直标题相距过远,会削弱语义连贯性,导致LLMs可能返回错误值[17]。为解决这一问题,需要将表格序列化为适合模型处理的格式。考虑到表格作为重要信息载体包含关键数据和结构化内容,而大语言模型主要基于文本训练,其原生表格处理能力存在局限,因此需要将表格转换为模型可理解的形式。而Markdown格式既能保留表格结构又能被大语言模型有效识别。因此,针对每个候选段落,我们采用python-docx库的自动化方法检测其中的表格结构,并将其转换为标准Markdown格式,从而确保表格信息能被准确解析和处理。
4. 数据集和实验
4.1. 数据集构建
数据集是由来自拓尔思公司的226篇可行性研究报告组成,平均每篇报告75.3页,我们通过收集整理了1638个问题,并手动从原文中标注了答案,构建了共1638个“声明–证据对”数据项。在无监督场景下,构建数据集是为了评估模型的性能,因此,数据集应该尽可能反映真实情况,通过生成高质量的“声明–证据对”数据项,以便能够客观评估模型的表现。
数据集中每个数据项的组成如下:
4.2. 评估指标和实验结果
我们分别评估了MGER的章节检索、证据生成阶段。对于每个阶段,模型的性能由预测输出与数据集中标注的目标输出进行计算。由于数据集中每个数据项都包含有声明和相对应的证据片段以及证据来源,因此我们采用单一数据集即可完成我们的评估。
对于章节检索任务,系统评估了不同阈值下的模型性能表现。通过对比模型预测章节与数据集中的真实证据来源,我们计算了各阈值下的准确率(Precision)、召回率(Recall)和F1分数(F1-score)等核心指标,我们的计算的都是平均值。
如图3所示,我们对章节检索阶段设置的阈值λ进行了全面的性能比较分析。实验结果表明,当阈值λ设置为0.6时,模型达到了最优的章节检索准确率(0.798),同时保持了较高的召回率(0.929),最终获得最佳的F1分数(0.833)。这一结果表明,0.6的阈值在准确率和召回率之间实现了最佳平衡,能够有效提升章节检索的整体性能。
Figure 3. Trend chart of model performance indicators changing with λ
图3. 模型性能指标随λ变化趋势图
对于段落检索任务,我们比较了三种不同方法的段落检索。实验结果如下图4所示。我们使用段落粒度的命中率(Hit Rate, HR)进行量化,在检索系统返回的候选段落中,统计至少包含一个标注句子(标准答案)的段落数量。
Figure 4. Comparison of hit rates (HR) of different aggregation methods
图4. 不同聚合方法的命中率(HR)比较
实验结果表明,基于句子相似度最大值聚合的方法表现最佳,HR达到了0.871,说明该方法能精确地捕捉到关键句子。加权平均聚合次优但稳定,相对最优方法降低了4.7%,比较适合需要平滑输出的场景。注意力机制聚合表现欠佳,相对最优方法降低了9.9%,可能是注意力权重学习不充分导致的,需要进一步调优验证。
对于候选段落去噪任务,我们对候选段落去噪前和去噪后两个任务进行了评估。我们使用句子级召回率(Sentence_Recall)来评估,即所有标注句子中被检索段落覆盖的比例,评估的是检索结果的完整性。此外,我们还评估了准确率和F1分数,准确率衡量模型检索到的结果中有多少是真正相关的(即与人工标注的句子匹配的部分),用于评估答案的准确性。而F1分数是准确率和召回率(Sentence_Recall)的调和平均数,用于综合平衡两者的性能。实验结果如表1所示。
Table 1. Comparison of results before and after denoising
表1. 去噪前后结果对比
任务 |
召回率 |
准确率 |
F1分数 |
去噪前 |
0.734 |
0.855 |
0.761 |
去噪后 |
0.804 |
0.821 |
0.797 |
性能变化 |
7.0%↑ |
3.4%↓ |
3.6%↑ |
实验结果表明,去噪后模型质量显著提升,虽然召回率下降了3.4%,但准确率提升了7%,F1分数提升了3.6%,因此,去噪虽牺牲了部分召回率,但大幅减少噪声(准确率↑)。去噪前模型倾向于过度检索,导致结果中包含大量噪声,因此召回率较高,而去噪后过滤机制成功识别并剔除了低质量句子,结果的准确率进一步提升。总的来说,去噪操作虽然导致召回率有所下降,但通过7.0%的准确率提升显著提高了结果可信度。
此外,我们还对比了基线模型。如表2所示。实验结果表明,我们提出的MGER在检索性能上显著优于传统的BM25方法。具体而言,MGER在召回率指标上达到0.821,比BM25的0.325提高了0.496;在准确率指标上达到0.804,比BM25的0.324提高了0.480;在F1值上达到0.797,比BM25的0.325提高了0.472。这些数值的提升充分证明了我们方法的有效性。
值得注意的是,MGER不仅在三个核心指标上均取得超过0.47的显著提升,还具备对结构化数据(表格)的支持能力,这是传统BM25方法所不具备的。
Table 2. Comparison with the baseline model
表2. 与基线模型对比
模型 |
评价指标 |
是否支持表格 |
召回率 |
准确率 |
F1分数 |
传统BM25检索 |
0.325 |
0.324 |
0.325 |
× |
MGER (Ours) |
0.821 |
0.804 |
0.797 |
√ |
4.3. 消融实验
我们通过消融实验移除MGER模型的关键组件,验证了各模块对整体性能的贡献。如表3所示。实验结果清晰地展示了不同模块的重要性。实验结果表明,MGER (Ours)在准确率(0.804)和F1 (0.797)上达到最优。
MGER-P (移除段落检索模块)的召回率达到0.861,高于完整模型的0.821,这反映了不同粒度检索模块的差异。当移除段落检索模块后,系统采用粗粒度检索策略,返回更宽泛的结果范围。这种“宁多勿少”的设计虽然可以最大化召回潜在相关文档(提升召回率),但不可避免地会引入大量无关内容,导致准确率下降5%。这种现象印证了段落检索对系统性能的关键影响。同时,若移除去噪模块(MGER-D),则表现为直接对候选段落计算最终结果,势必会引入噪声,因此准确率降低(0.734 vs 0.804),但由于结果的宽泛性,使得召回率提高(0.855 vs 0.821)。
Table 3. Ablation experiment results
表3. 消融实验结果
消融实验 |
评价指标 |
准确率 |
召回率 |
F1分数 |
MGER-C |
0.166 |
0.382 |
0.209 |
MGER-P |
0.754 |
0.861 |
0.772 |
MGER-D |
0.734 |
0.855 |
0.761 |
MGER (Ours) |
0.804 |
0.821 |
0.797 |
注:我们将章节检索简化为C,将段落检索简化为P,将去噪简化为D。MGER (Ours)-C表示模型剔除章节检索部分,直接进行段落检索。
5. 总结
本文设计了一种面向混合长文档的多粒度证据检索方法(MGER)。此方法可以从长篇报告中定位与用户声明最相关的证据片段,同时也将报告中的表格进行序列化以适应模型的输入,从而提高大语言模型回答用户声明时的准确性。通过分层检索策略聚焦于细粒度的证据提取,然后使用动态删句法进行证据去噪,最后将去噪后的证据片段作为大语言模型的输入,以生成正确答案。我们在数据集上进行了实验,结果表明我们的模型能够很好的提取证据片段来辅助大语言模型。