大型语言模型 (LLM) 在自然语言理解和生成方面取得了显著进步,但受限于上下文窗口和内存使用,它们在处理长文本时仍然面临挑战。现有的长文本处理方法主要分为模型级别和智能体级别,但都存在一定的局限性:模型级别方法训练成本高昂,且容易忽略长文本中的关键细节;智能体级别方法则难以捕捉多跳关系和长距离依赖,在处理超长文本时效果不佳。
为了解决这些问题,本文提出了一种名为 GraphReader 的基于图的智能体系统,它能够将长文本结构化为图,并利用智能体自主探索图结构,从而有效地处理长文本信息。
1. GraphReader 的工作原理
GraphReader 的工作流程主要分为三个阶段:图构建、图探索和答案推理。
1.1 图构建
- 将长文本分割成多个文本块 (Chunk),并保留段落结构。
- 使用 LLM 从每个文本块中提取关键元素 (Key Element) 和原子事实 (Atomic Fact)。
- 将关键元素和原子事实构建成图结构,其中节点代表关键元素及其相关的原子事实,边代表节点之间的关系。
1.2 图探索
- 智能体根据问题和预先设定的理性计划,选择初始节点开始探索。
- 智能体首先探索节点的原子事实,然后深入阅读相关的文本块,并不断记录新的见解和反思当前情况,以优化探索过程。
- 智能体根据问题、理性计划和笔记内容,选择下一个要探索的相邻节点,直到收集到足够的信息来回答问题。
1.3 答案推理
- 将所有智能体收集到的笔记汇总,并使用 LLM 进行推理和生成最终答案。
- LLM 首先分析每个笔记,并利用其他笔记中的信息进行补充和验证,最终综合所有信息生成最终答案。
2. 实验结果
GraphReader 在多个长文本问答基准测试中表现出色,包括多跳长文本问答 (HotpotQA、2WikiMultihopQA、MuSiQue) 和单跳长文本问答 (NarrativeQA)。
2.1 超越 GPT-4-128k
实验结果表明,GraphReader 在使用 4k 上下文窗口的情况下,在 16k 到 256k 的不同文本长度上,始终优于 GPT-4-128k。这表明 GraphReader 能够有效地利用图结构捕捉长距离依赖关系,并利用智能体进行高效的探索,从而在有限的上下文窗口内处理超长文本。
2.2 强大的召回能力
GraphReader 在关键信息召回方面也表现出色。在 HotpotWikiQA-mixup 数据集上,GraphReader 始终优于其他基线方法,即使在 256k 的超长文本长度下,仍然能够保持约 60% 的召回率。
3. 结论
GraphReader 是一种基于图的智能体系统,它能够有效地增强大型语言模型的长文本处理能力。通过将长文本结构化为图,并利用智能体进行自主探索,GraphReader 能够在有限的上下文窗口内捕捉长距离依赖关系,并高效地收集关键信息,从而在各种长文本问答任务中取得优异的成绩。
4. 局限性
GraphReader 目前依赖于闭源的 GPT-4 API,未来需要收集数据并训练开源模型,以便更好地服务于更广泛的社区。此外,智能体的效率取决于其规划和推理能力,未来需要进一步提升这些能力,以提高 GraphReader 的效率和性能。