这篇论文介绍了一个名为 SPIRE 的新系统,它的核心目标是解决当前人工智能(AI)在“阅读”网页和文档时的一个巨大痛点:把结构丰富的文档“压扁”了,导致 AI 找到的信息虽然相关,但往往断章取义,让人看不懂。
为了让你轻松理解,我们可以把整个过程想象成在一个巨大的图书馆里找资料。
1. 传统方法的困境:把书“撕碎”了找
现在的 AI 检索系统(RAG)通常是这样工作的:
- 做法:它把一本结构复杂的书(比如包含标题、目录、列表、表格的 HTML 网页),强行撕成一个个大小固定的“碎片”(比如每 500 个字切一块)。
- 后果:
- 如果你问:“维吉尼亚州有多少个国家公园?”
- 传统系统可能会从中间切出一句话:“维吉尼亚有超过 41 个国家公园……"
- 问题:这句话被切断了,它失去了上面的标题(“维吉尼亚的国家公园”),也失去了下面的列表(具体是哪些公园)。这就好比你从一本食谱里撕下一行字“加两勺盐”,却忘了告诉你这是做“蛋糕”还是“汤”的。AI 虽然找到了这句话,但用户看的时候会觉得莫名其妙,或者 AI 自己理解错了。
2. SPIRE 的解决方案:像“寻宝地图”一样找资料
SPIRE 系统不再把文档撕碎,而是把文档看作一棵有结构的树(就像公司的组织架构图,或者网页的 HTML 代码结构)。
核心概念一:路径地址(Path Addressing)
- 比喻:想象文档里的每一个字、每一个标题、每一个列表项,都有一个精确的 GPS 坐标(比如:
第 3 章 > 第 2 节 > 第 1 个列表项)。
- 作用:AI 不再寻找“大概在那里的文字”,而是直接锁定这个“坐标”。无论怎么移动,这个坐标永远指向同一个地方,不会弄错。
核心概念二:全局语境(Global Context)——“给碎片穿上制服”
- 比喻:当你从树上摘下一个苹果(一个句子)时,你不能只拿着苹果给用户,你得告诉用户这是哪棵树上的,属于哪个果园的。
- SPIRE 的做法:在把句子交给 AI 之前,它会自动把这句话的“上级”信息加回去。
- 如果摘的是列表里的一个点,它会自动把“列表标题”加回去。
- 如果摘的是表格里的一个格子,它会自动把“行标题”和“列标题”加回去。
- 结果:AI 看到的不再是孤立的句子,而是“在‘维吉尼亚国家公园’这个标题下,列表里的‘超过 41 个’这一项”。这样 AI 就能准确理解意思了。
核心概念三:局部语境(Local Context)——“把邻居也叫来”
- 比喻:有时候,单看一个句子还是不够清楚,需要看看它前后说了什么。
- SPIRE 的做法:它会根据预算(比如限制回答的字数),智能地把这个句子周围的“邻居”(同一段落、相邻的句子)也拉进来,形成一个完整的小故事。
- 关键点:它不是随机抓取,而是像拼图一样,只抓取结构上紧密相连的部分,确保逻辑通顺。
3. 工作流程:两步走策略
SPIRE 的检索过程分为两个聪明的步骤:
第一步:大海捞针(快速搜索)
- 系统先快速扫描所有文档,找到那些最相关的“种子句子”(比如包含关键词的句子)。
- 这时候,它会给这些种子句子加上“全局语境”(标题、结构),让它们变得“可理解”,然后存进数据库。
- 优势:因为种子很小(只是句子),所以能存很多,找得准。
第二步:去伪存真(智能过滤)
- 当用户提问时,系统把找到的“种子”及其“邻居”(局部语境)拼成一个完整的小段落。
- 然后,它请一个更聪明的 AI(大语言模型)来当编辑。
- 编辑的任务:在这个小段落里,只圈出真正能回答问题的那几句话,把无关的废话删掉。
- 结果:最终呈现给用户的,既保留了原始文档的结构(知道出处),又精简了内容(只保留干货)。
4. 为什么这很重要?(实验结果)
论文通过实验证明,SPIRE 比传统方法强在哪里:
- 更精准:在同样的字数限制下,SPIRE 能提供更多有用的引用。传统方法因为把文档切得太碎或太乱,很多引用虽然字数够了,但内容没用。
- 更多样:SPIRE 能找到更多不同角度的证据,而不是只盯着某一大块文字。
- 可解释:用户看到的每一个答案,都能精确地指回原文的哪个位置(哪个标题下、哪个列表里),就像引用了具体的页码和行号,非常靠谱。
总结
SPIRE 就像是一个懂行情的图书管理员:
- 旧管理员:把书撕成纸条,随机给你几张,让你猜意思。
- SPIRE 管理员:
- 知道书的结构(目录、章节)。
- 找到关键句子时,会顺手把上面的标题和下面的列表一起拿给你(全局语境)。
- 如果句子太短,会把前后的解释也加上(局部语境)。
- 最后,它会帮你把无关的废话删掉,只留下最精华的部分,并告诉你这段话具体出自书的哪一章哪一节。
这种方法让 AI 不仅能“找到”答案,还能“理解”答案,并且把答案讲得清清楚楚、有根有据。
SPIRE:结构化证据保留的可解释检索框架技术总结
1. 研究背景与问题定义
核心问题:
当前的检索增强生成(RAG)系统在处理半结构化数据(如 HTML 文档)时存在根本性缺陷。主流方法通常将文档“扁平化”为固定大小的文本块(Chunks)进行索引。这种线性化处理导致了以下严重问题:
- 结构信息丢失:文档的层级结构(标题、章节)、列表、表格、超链接等语义组织形式被破坏。
- 证据不可解释:检索出的片段往往脱离上下文。例如,从列表中提取的一句话若失去列表标题和上下文,可能变得毫无意义;表格单元格若无行列头则无法理解。
- 粒度与上下文的矛盾:细粒度检索(如句子级)精度高但缺乏上下文;粗粒度检索(如大段落)保留上下文但引入大量无关噪声,浪费 Token 预算。
目标:
提出一种能够保留文档树状结构、生成可解释且自包含的证据片段,同时保持检索可扩展性的框架。
2. 方法论:SPIRE 框架
SPIRE(Structure-Preserving Interpretable Retrieval of Evidence)的核心思想是将文档结构作为一等公民,通过“子文档(Subdocument)”的概念来操作,而非扁平的文本块。
2.1 核心抽象:路径寻址的文档模型
- 文档树表示:将 HTML 解析为树状结构(
Doc ::= Text | Elem(tag, attrs, children))。
- 路径标识符:每个节点通过唯一的、基于前缀的路径(Path,如
[0, 0, 1, 0])进行寻址。路径既是引用标识,也是检索操作的基本单位。
- 子文档(Subdocument):定义为
(D, P),其中 D 是文档树,P 是路径集合。子文档不是立即实例化的树,而是提取意图的轻量级表示,仅在需要渲染或嵌入时才进行物质化(Materialization)。
2.2 关键原语
- 子文档提取与修剪(Pruning):
- 通过
Link(D, P) 操作(祖先补全 + 后代补全)确保选中的路径集在树结构中是连通的且包含必要内容。
- 使用
Prune 算子从原树中裁剪出仅包含目标路径及其必要上下文的最小子树。
- 全局上下文化(Global Contextualization):
- 目的:在索引和嵌入阶段,为选中的节点添加非局部的结构支架,使其独立可理解。
- 策略:针对 HTML 定义了具体规则:
- 标题:添加文档标题或
<h1>。
- 标题层级:添加当前节点生效的所有上级标题(考虑 HTML 的线性作用域,而非仅树形祖先)。
- 列表:保留嵌套列表的层级标签(如父级列表项的文本),但排除无关的兄弟节点。
- 表格:仅添加单元格对应的行标签和列标签,而非整个表格。
- 这些规则是幂等、单调且可扩展的,确保上下文增强的确定性。
- 局部上下文化(Local Contextualization):
- 目的:在检索后,根据预算(Token 限制)将选中的种子(如句子)向周围结构邻居扩展。
- 机制:基于结构关系(句子完成、块级元素包含、文档顺序邻近)逐步扩大路径集,直到接近目标大小,优先保留完整的句子和段落。
2.3 检索流水线
SPIRE 采用两阶段检索策略:
基于向量的候选生成(Embedding-based Retrieval):
- 索引单位:以句子为种子(Sentence-seeded)。句子是精度与召回的最佳平衡点。
- 嵌入过程:对每个句子种子应用全局上下文化,渲染为文本(如 Markdown),然后进行向量化嵌入。
- 查询时聚合:检索返回多个句子后,按源文档进行文档感知聚合(Document-aware Aggregation)。将同一文档的多个候选路径集合并,仅对合并后的集合执行一次全局上下文化和渲染。这避免了重复计算标题、章节头等共享结构,显著提高了预算利用率。
上下文过滤(Contextual Filtering):
- 机制:利用生成式大语言模型(LLM)对检索到的候选项进行二次筛选。
- 流程:
- 对候选子文档应用局部上下文化,生成包含周围环境的扩展视图。
- 将查询和扩展视图输入 LLM,要求模型仅选择对回答问题至关重要的部分(通过标签机制
<lab_i> 标记)。
- 模型返回选中标签对应的路径集,生成最终的引用。
- 优势:LLM 在丰富的局部上下文中判断相关性,能有效剔除虽相似但无关的噪声,同时保持引用指向原始文档的精确位置。
3. 主要贡献
- 路径寻址的文档模型:提出了一套基于路径集、子文档提取和上下文化算子的形式化接口,实现了树状文档与序列模型之间的解耦。
- 结构感知检索流水线:
- 实现了基于句子种子和全局上下文化的索引策略。
- 设计了查询时的文档级聚合机制,摊销共享结构成本。
- 引入了基于 LLM 的局部上下文过滤阶段,提升引用精度。
- 实验验证:在 HTML 问答基准(HotpotQA, ASQA)上证明了该方法的有效性。
4. 实验结果
实验在固定 1000 Token 的引用预算下进行,对比了 SPIRE 与强基线(bge,基于 HTML 块级检索):
- 检索效率与质量:
- 句子级 vs 块级:SPIRE 的句子级检索在相同预算下能输出更多(约 1.5 倍)的引用,且单条引用的质量(LLM 判定为有帮助的比例)与块级基线相当或略优。
- 全局上下文的重要性:移除全局上下文化(
embedding_retrieval_noctx)导致有帮助引用的比例显著下降(例如 HotpotQA 从 0.215 降至 0.138),证明结构支架对可解释性至关重要。
- 端到端效果(SPIRE 全流水线):
- 引入上下文过滤后,SPIRE 的有帮助引用比例大幅提升。
- HotpotQA:从 0.215 提升至 0.655。
- ASQA:从 0.615 提升至 0.813。
- 这表明上下文过滤能有效剔除弱相关候选,将预算集中在核心证据上,同时保持了引用的精确溯源能力。
5. 意义与影响
- 范式转变:挑战了 RAG 中“先扁平化再检索”的默认假设,证明了保留文档树结构对于生成可解释、自包含证据的重要性。
- 可解释性与溯源:通过路径标识符,无论经过多少层上下文扩展或过滤,最终引用始终精确指向原始文档的特定位置,解决了“幻觉”和引用模糊的问题。
- 预算优化:通过“全局上下文预计算”和“查询时聚合”,解决了细粒度检索中重复结构开销大的痛点,在有限 Token 预算下实现了更高的信息密度。
- 通用性:该框架不仅适用于 HTML,其基于树结构和路径的抽象可推广至 XML、JSON 等任何半结构化数据源,为结构化文档的检索增强生成提供了新的理论基础和工程实践路径。
综上所述,SPIRE 通过形式化定义子文档和上下文化操作,成功解决了半结构化文档检索中的结构丢失问题,显著提升了 RAG 系统在证据质量、可解释性和预算效率方面的表现。
每周获取最佳 computer science 论文。
受到斯坦福、剑桥和法国科学院研究人员的信赖。
请查收邮箱确认订阅。
出了点问题,再试一次?
无垃圾邮件,随时退订。