基于图和个性化PageRank的RAG方法HippoRAG

HippoRAG是2024年5月的一篇论文《HippoRAG: Neurobiologically Inspired Long-Term Memory for Large Language Models》(github),它受人脑长期记忆的启发(Hippo是海马体英文单词的前缀),用知识图谱(KG)来存储知识,并用检索编码器和个性化PageRank来检索回答问题所需的上下文,再让LLM根据上下文回答问题。

WeChatWorkScreenshot_79f4d142-6ca5-4d4b-91b0-e38eaaeabbb5

海马体记忆索引理论(Hippocampal Memory Indexing Theory)提供了对人类长期记忆中涉及的组件和电路的功能描述。提出者Teyler和Discenna认为,人类长期记忆和三个组件有关,分别是新皮层(Neocortex)、海马体(Hippocampus)和海马旁回区域(Parahippocampal regions),这三个组件协同工作,使得人类能够存储大量的世界知识并持续整合新的体验,而不会丢失先前的记忆。这三个组件一起完成两个主要目标pattern separation(确保不同的感知经验是独特的)和pattern completion(使得部分刺激能检索到完整记忆)。

WeChatWorkScreenshot_40c056a0-e648-4b74-9947-ee69b5dd84dc

HippoRAG通过模仿人脑组件的功能来增强LLMs的知识整合能力,其过程如下:

离线索引阶段

  1. 让LLM充当新皮层的角色,从文本中抽取出知识图谱(KG)三元组,而知识图谱相当于海马体索引。在让LLM提取三元组时,不定义schema,三元组提取过程分为两步,先让LLM提取文本中的实体,再让LLM根据提取的实体得到最终的三元组,两个prompt都采用了1-shot技巧。

WeChatWorkScreenshot_48c64898-d26d-4ed8-8e02-d2ffac4272bc

WeChatWorkScreenshot_af91c607-382a-4804-8747-dd55bdf077f6

  1. 检索编码器(retrieval encoder)会充当海马旁回区域的角色,HippoRAG用检索编码器来判断两个实体表征之间的余弦相似度,如果余弦相似度大于阈值 τ \tau τ,则在两个实体之间添加一条边。
  2. 定义矩阵大小为 ∣ N ∣ × ∣ P ∣ |N| \times |P| N×P的矩阵 P \mathbf{P} P来记录每一个实体在原始文本中出现的次数。(|N|是实体数, |P|是文本数)

在线检索阶段

  1. 对于一个query,先让LLM提取问题中的查询实体(query named entities),prompt如下:

WeChatWorkScreenshot_04bdd950-c836-4641-827d-fa62c9afecc1

  1. 用检索编码器基于相似度从KG中检索出与第一步的查询实体最相似的topK个节点,这些节点被称为查询节点(query nodes)。
  2. 在图谱上应用个性化PageRank(Personalized PageRank,PPR),算法初始化时,N个节点的概率分布为 n ⃗ \vec{n} n ,其中第二步的查询节点的概率相同,其他节点的概率为0。PPR算法得到的N个节点的最终概率分布为 n ′ ⃗ \vec{n^{\prime}} n ,将 n ′ ⃗ \vec{n^{\prime}} n 与离线索引时定义的矩阵 P \mathbf{P} P相乘得到每个文本的排序分数 p ⃗ \vec{p} p

此外为了提高检索性能,借鉴了单词重要性如逆文档词频IDF的概念,但考虑到IDF计算上的复杂性,使用了node specificity这个概念来代替IDF,一个节点i的node specificity为 s i = ∣ P i ∣ − 1 s_i = |P_i|^{-1} si=Pi1,P是节点i提取来源的文档集合。在应用PPR算法之前,将查询节点的概率 n ⃗ \vec{n} n 乘以 s i s_i si。这意味在检索时不仅仅考虑邻居也考虑节点本身的重要性。

总结

HippoRAG也是一种基于图结构来增强RAG的方法,它在检索上下文时很特别地使用了个性化PageRank,所以它对于解决多跳问答有一定的帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值