30 秒看懂
在三个多跳问答基准测试上,HippoRAG 大致与最强的迭代检索方法持平,在线时间和成本却只需约十分之一。博士生 Bernal Jiménez Gutiérrez 在与 Nathan Labenz 的对话中表示,回答知识性问题需要的不只是大语言模型(LLM)的思维链:得先把语料预处理成一个联想式索引。目前仍存在的几处缺口——朴素的图遍历、没有实体的查询,以及隐式知识——指向的是一个自动生成的语义网,靠更大的上下文窗口解决不了。
- 1回答知识性问题,需要的不只是大语言模型的思维链。你需要把知识整合当作预处理:在有人提问之前,就先建好联想式索引。
- 2路径跟随是一步步沿着链条走。路径查找则是集合求交:找到同时满足两个条件的那个节点。联想记忆无法在查询时通过翻阅文档临时补上。
- 3在三个多跳基准上,HippoRAG 与迭代检索持平,在线成本和延迟却只有约十分之一。对于一个必须实时作答的生产系统来说,这个差距就是“可用”与“不可用”的区别。
- 4海马体存储的是稀疏、解耦的概念,并不存储完整的记忆。把文档节点放进图里,会让个性化 PageRank(Personalized PageRank)变得稠密,直到多跳推理失效。完整的记忆留在新皮层里,也就是原始段落。
- 5长上下文模型擅长综合直接相关的段落。在超长提示词里做多跳推理仍然是弱项,而且这种能力会随着上下文变长而减弱。
- 6索引靠的是抽取,不靠推理。GPT-3.5,甚至 80 亿参数的 Llama 3,就足以抽出实体和关系。旗舰模型并不能明显地换来一张更好的图。
按章节阅读完整文稿
先看一个数字:在线成本便宜十倍
Nathan Labenz 在播客《The Cognitive Revolution》的开场,抛出了一个很容易记住的结果。HippoRAG 是一种受人类海马体启发的检索方法,它在三个多跳问答基准上,大致与当下最强的迭代检索打平,有的略好,有的略差,而在查询时只花费约十分之一的时间和成本。这笔交换的代价是更贵的离线索引,这笔账,Labenz 和嘉宾稍后会详细拆解。
这个想法对 RAG 论文来说并不寻常。它不让大语言模型反复去翻找文档,而是先把语料预处理成一张实体知识图谱,当问题到来时,再在图上做一次联想式遍历。论文的第一作者 Bernal Jiménez Gutiérrez 是俄亥俄州立大学的博士生,师从 Yu Su。接下来的一小时二十分钟,Labenz 从神经解剖学一路聊到这套系统究竟该怎样落地。
从给癌症患者匹配临床试验,到大脑如何记忆
Gutiérrez 的研究道路是刻意跨学科的。2015 年,他带着应用数学学位离开伯克利,加入一家做自然语言处理(NLP)的医疗创业公司,用来为癌症患者匹配临床试验,之后在生物医学 NLP 领域待了多年——先是研究本体和 UMLS 等知识库,近几年则转向如何在这个领域真正用好大语言模型。他把这项工作描述为一条双向街:一边是生物学,一边是语言模型,想法在两边之间往返。
由 Yu Su 领导的俄亥俄州立大学 NLP 实验室,做出过 Mind2Web 这一面向网页智能体(Agent)的基准测试,Su 也公开表示对受生物学启发的方法很感兴趣。HippoRAG 是两人在讨论神经生物学记忆时聊出来的。工程上的起点则更朴素。Gutiérrez 原本一直在考虑面向特定领域的模型,但他得出结论:垂直领域的数据太稀缺,不足以从零预训练;一个强大的通用模型加上 RAG,可能是最好的选择。深入研究后,他发现 RAG 有硬性的局限。与此同时,他和导师也在讨论人类所做的持续学习,而当前的大语言模型基本做不到。2024 年初,这两条线索接上了:对于知识性问题,大语言模型的推理链还不够,你必须先把语料整合起来。
Labenz 为 RAG 的作用起了个名字:缺失的中间层记忆。模型拥有超人的参数化知识,但这些知识在训练时就冻结了;上下文窗口则要么装着某条事实,要么没有。两者之间的一切,都靠检索。他自称是“应用加速主义者”:与其等待下一次规模扩张,不如把现有系统调校好,立即获得实用价值。医学是他首选的应用领域,他经常和 Med-PaLM 团队交流,该团队现已发展为 Med-Gemini。Gutiérrez 的生物医学背景,正好落在这条线上。
检索增强生成(RAG)的失败模式:答案不在任何一个段落里
整场对话都围绕一个例子展开。比如要找一位研究阿尔茨海默病神经科学的斯坦福教授。语料库里有 1000 份斯坦福教职员简介,还有 1000 位阿尔茨海默病研究者,但没有任何一篇文档同时写明这两件事。朴素的 RAG 会对问题做嵌入,然后寄希望于同时出现两件事的段落。倒霉的话,你会从一侧入手,拉出一个人,再多抓一些,核对,然后慢慢磨。Gutiérrez 估计,你可能要翻看数千篇文档。而一个人只要知道这位教授在斯坦福、又做阿尔茨海默病研究,就能立刻说出他的名字。
迭代检索是目前绕开这个问题的办法:检索、推理、再检索,按问题需要走多少跳就走多少跳。这是路径跟随,哪怕链条很长,也是一步步走下去。论文中在理论上有价值的划分,是第二类问题:路径查找。路径查找就是集合求交:你需要找到同时满足两个条件的那个节点,而要找到它,靠的是联想记忆,而不是临时翻阅文档。大语言模型的推理链擅长第一类问题,却不擅长第二类,因为在查询时无法临时补上联想记忆。
Labenz 读了两道听起来很吓人的 GAIA 题目:一道要在两篇 arXiv 论文之间交叉比对坐标轴标签,另一道要从《海底总动员》的主演一路查到某种入侵鱼类的 USGS 邮政编码。Gutiérrez 的判断是,两道题仍然属于路径跟随。难度来自跳数,任务的性质并没有变。真正的路径查找问题,也就是纯粹的集合求交,甚至还没有像样的基准。GAIA 与此相关,但它没有标准语料库;而预处理整个互联网,仍然是成本问题,不只是研究问题。
把检索器搭成海马体的一一对应映射
这套理论的根基是海马体的记忆索引。20 世纪中叶,患者 H.M. 切除了海马体,此后无法形成新的长期情景记忆或语义记忆,学界由此认识到这个脑区不可或缺。理论认为,海马体存的并不是记忆本身。它存的是指向新皮层的指针,以及这些指针之间的关联。新的知识会逐步构建这一联想索引:一个节点代表教授,一条链接指向斯坦福,另一条链接指向阿尔茨海默病研究,形成一张可以遍历的图。
三个组成部分,两种能力。新皮层保存详细的记忆。旁海马区位于中间,是一座双向桥梁;它参数过剩而且稀疏,负责模式分离,把稠密的经验拆成“斯坦福教授”和“阿尔茨海默病研究”之类的概念。海马体,尤其是高度连接的 CA3 子区,则负责模式补全:把在经验中同时出现过的概念连接起来,即使它们在语义上并不相似。Labenz 在旁海马区的故事里,听出了稀疏自编码器(sparse autoencoder)热潮的影子。Gutiérrez 的版本,则是对稠密的、实时的皮层表征施加稀疏性约束。海马体的文献里已有位置细胞、祖母细胞,甚至还有 Halle Berry 神经元,这提示存储下来的编码,比大语言模型内部那团混杂的东西要干净,也更具单义性。
HippoRAG 把各个部分几乎一一对应地映射过来。语言模型扮演新皮层,从语言中提取概念。检索编码器扮演旁海马区的桥梁。知识图谱扮演海马体。个性化 PageRank 则是联想记忆那一步。离线时,每篇文档都要经过大语言模型做命名实体识别,这一步只是为接下来的一步提供偏置:开放信息抽取,不依赖僵硬的模式,输出实体—关系—实体三元组。随后,编码器会加入同义边,让“Alzheimer’s disease”和它的缩写落在同一张连通图上。在线时,问题会被解析为实体,映射到节点上,并作为随机游走的种子。节点的概率就是文档的排序。
质量打平,在线成本只要十分之一,还有三个缺口要补
实验用了三个基准,每个大约包含 1000 个问题和 1 万篇文档。正面较量时,HippoRAG 与迭代检索各有胜负:有的数据集略好,有的略差,而在线检索的成本和时间则下降了十倍。Gutiérrez 的看法是,任何需要快速响应用户的生产系统,都会立刻在意这个差距。把 HippoRAG 与朴素的迭代 RAG 结合起来,平均可以提高 7 到 8 个百分点。他称之为“原始形态的自我纠错”:模型先看到图上的排序,再借助联想式检索进行推理,效果强于任何一种方法单独使用。还有一个定性案例,是现有方法根本无法触及的:一种通过作用于某种特定酶来起效的药物,这正是医生在患者已经服用某种会产生干扰的药物时所需要的那种交叉信息。HippoRAG 在其中几项测试上表现不错;但要彻底解锁这类问题,他说还需要更聪明的游走方式。
索引用的是 GPT-3.5,原因很平淡:这项工作本质上是抽取,不需要推理。找出显著的实体;当两个实体出现在同一句话里时,就写出它们的关系。即使是 80 亿参数的 Llama 3,也能做得相当不错。除了格式之外,他不认为 Claude 或 GPT-4 开箱即用会好太多。用这些旗舰模型重复同样的实验,在有限的一部分数据上大约要花 500 美元。Claude 的输入费用约是两倍,输出费用约是十倍。若要处理整个维基百科,共六百万条词条、只读开头段落,按 GPT-3.5 估算约 9000 美元。实验室难以承担,创业公司却承担得起。Labenz 的建议是:先把答案做对,该花多少钱就花多少,然后让成本慢慢降下来。他认为,创始人往往执着于成本,而 AI 产品真正的痛点在于答错了;雇人来回答这类问题,花费远远超过一美元。通往小模型的路,往往要先经过大模型;据报道,Gemini 1.5 Flash 是从一个更大的“兄弟”模型蒸馏而来的。
有三个弱点。图遍历过于朴素。个性化 PageRank 只看连通性:离种子更近,或者与更多种子相连,概率就更高。如果把游走强度调到最大,你得到的就是最初的 Google PageRank——热门节点胜出——这在知识图谱上是一场灾难。Gutiérrez 承认,基准上的部分胜利来自干扰项较少;生产规模需要更聪明的游走,这也是团队的首要任务。第二是概念与上下文的区别。MuSiQue 中有一道题问的是,谁发现了每种元素都有一个独一无二的质子数,这里没有可以抽取的命名实体。模型把 “proton” 塞进图里,游走却哪儿也到不了。把没有实体的查询映射到图的入口点,是下一步要攻克的难题。第三,HippoRAG 只能处理显式知识。语料可能记载了灰姑娘从此过上了幸福的生活,却从未明确写出这个结局是幸福的。这需要反思能力。
一个违反直觉的设计选择:不要把文档节点放进图里。Labenz 希望把原始段落也放到图上,这样就可以从文档相似度切入。Gutiérrez 说,一个文档节点会连到段落中的每一个实体,概率就会被摊薄,个性化 PageRank 也就无法再做多跳推理。这与大脑的故事一致:海马体存储的是稀疏、彼此分离的概念,完整的记忆则留在新皮层里。
如果预算不设限:语义网、反思式记忆,以及把长上下文当帮手
长上下文是显而易见的竞争对手。Labenz 把自己最近发出的 250 封邮件(约 25 万个 token)一股脑丢进 Gemini 1.5 Flash,要求它写一份人物画像。结果在约 40 秒内、花不到 20 美分,他就拿到了一份出色的两页人物肖像。Gutiérrez 泼了一点冷水。这些模型擅长综合与问题直接相关的内容,在长提示词内部做多跳推理,仍然是个挑战。他有一篇正在审稿中的论文,把长上下文模型用作检索器:它们的表现超过了普通 RAG,而且能在注意力模式中看到多跳推理的痕迹,但随着长度增加,这种能力会下降。他怀疑,那份邮件画像中的每一点都能对应回某个段落,真正的知识整合可能并没有发生。
如果你愿意为确保答案正确,每次查询花 0.25 美元,他会让长上下文充当入口查找器,多跳推理的活则交给图来做。先从图上拉出数千乃至数万条事实,让 Gemini 挑出真正的入口点,再让它协助引导游走。即使是整个互联网上的图,与单个问题相关的事实大概也不会超过前 1 万条,而这种大海捞针式的工作,正是长上下文模型擅长的。不要让它们取代图上的多跳推理。
最终的图景,是一个自动生成的语义网。HippoRAG 处理实体和关联。RAPTOR、MemWalker 和 GraphRAG 都加入了聚类、摘要,以及更抽象的进入图的方式:RAPTOR 把相似段落聚成簇,并写出更高层的摘要;MemWalker 则为长文档构建树状记忆。在此之上,还可以加上类似斯坦福 AI Town 项目那样的周期性反思记忆:智能体回头审视观察,写出更高层的记忆,就像睡眠对白天的经历做后处理一样。HippoRAG 只处理显式知识的局限,正是这一层能够弥补的。顺带一提,FLARE 是一种前瞻式的检索循环,决定何时再去取数据;它有用,但与提前构建结构是另一种思路。
工具方面,有两个名字。ColBERT 让他很惊讶,它是一个能够泛化的小模型,并且非常巧妙地混合了 BM25 式的老式检索与语义嵌入。Contextual AI 的 GRIT 则是一个经过指令微调的检索器;当语料很窄时,你可以把嵌入推向某个方向,这会很有帮助。切块要小:两三句话一块。段落太长,模型会漏掉三元组,还会跨句子编造关系。与之相对的流派是 Long RAG,它干脆不切块,把语义相似的文档直接拼接起来。这里的取舍,是局部注意力与全局整合之间的权衡。就 HippoRAG 目前的做法而言,是小切块加上长文档的分层摘要。
检索之后的下一道缺口,是模块化的系统 2(System 2)
Labenz 的最后一个问题是:哪些人类能力看起来仍未被解决。Gutiérrez 提到 MIT 的 Nancy Kanwisher 与 Evelina Fedorenko 的一篇论文:模型在音系学、句法和局部语义上已经很强,但在世界知识、形式逻辑和社会推理上很弱。持续学习,正是 HippoRAG 瞄准的世界知识缺口。他接下来最关心的能力是形式逻辑。模型偏向系统 1(快速、启发式),缺少受约束的系统 2。大脑似乎是通过模块化来解决这个问题的:一个语言回路和一个逻辑回路各司其职。
他说,规模或许能培养出这些能力,但这并无保证。他的研究押注是通过模块化引入归纳偏置:系统中结构各异的部分学习不同的内容,这可能比堆叠参数更快地补上形式逻辑。Labenz 还提到了 DeepMind 的一篇相关论文《Transformers Meet Neural Algorithmic Reasoners》,它让标准 Transformer 与更具结构性、擅长某些逻辑问题的类图推理器进行交叉注意。Gutiérrez 用一句话收尾:RAG 的下一场竞争,发生在检索开始之前。谁能把语料整合成可以联想的形式,谁就能既快又准地得到答案。
同频道的其他文章
1:25:56EN → 简体中文
2:17:48EN → 简体中文
2:00:51EN → 简体中文
1:26:46EN → 简体中文
1:10:12EN → 简体中文
1:30:54EN → 简体中文