HippoRAG如何从大脑获取线索以改进LLM检索

知识存储和检索正在成为大型语言模型(LLM)应用的重要组成部分。虽然检索增强生成(RAG)在该领域取得了巨大进步,但一些局限性仍然没有克服。

俄亥俄州立大学和斯坦福大学的研究团队推出了HippoRAG,这是一种创新性的检索框架,其设计理念源于人类长期记忆系统中的海马索引理论。

HippoRAG的引入使大型语言模型(LLM)应用程序能够更有效地集成动态知识,并更快、更准确地检索重要信息。HippoRAG在多跳(multi-hop)问答等任务上表现出令人印象深刻的性能,对于需要对大型复杂知识图进行组装和推理的LLM应用程序非常有用。

LLM知识整合的挑战

哺乳动物的大脑可以储存大量的知识,并在不丢失以前经验的情况下不断整合新经验。这种长期记忆系统允许人类不断更新他们用于推理和决策的知识。

相比之下,LLM在预训练后的知识整合仍然很困难。虽然RAG已经成为LLM中长期记忆的主流解决方案,但现有的方法在处理新文档时往往采取单独编码的方式,这使得不同来源的知识难以有效集成。

许多应用程序需要跨多个文档进行知识集成。例如,科学文献综述、法律案例简报和医学诊断需要将不同来源中提到的事实和概念相互关联。标准的多跳问答也需要整合各种文档的多个段落之间的信息。

为了完成这些任务,当前的RAG系统使用多个检索和生成步骤来连接不同的段落。然而,即使执行了多步RAG,对于许多知识集成场景来说,也往往是不够的。

HippoRAG

HippoRAG从大脑中的新皮层和海马体之间的生物相互作用中获得灵感,这种相互作用使强大的基于场景的、不断更新的人类大脑记忆成为可能。

根据科学研究,大脑皮层负责处理和存储实际的记忆表征,而海马体则拥有一组相互关联的索引,这些索引指向新皮层中的记忆单元,并储存它们之间的关联性。这两个关键组成部分共同协作,执行“模式分离”和“模式完成”的功能,前者确保不同经历的表征具有独特性,后者则让从部分刺激中检索完整记忆成为可能。

HippoRAG通过使用LLM将文档语料库转换为充当人工海马索引的知识图来模仿这种记忆模型。HippoRAG分为两个阶段,离线索引用于存储信息,在线检索用于将知识整合到用户请求中。

离线索引阶段类似于大脑中的记忆编码,使用指令调优的LLM以知识图三元组的形式从段落中提取重要特征。与传统的RAG管道中使用的密集嵌入相比,这允许更细粒度的模式分离。

人工海马索引是在检索语料库中得到的三元组的基础上建立的开放知识图谱。为了连接这些组件,HippoRAG使用现成的密集编码器进行检索,这些编码器在知识图中相似的名词短语之间提供额外的边缘,以帮助下游模式完成连接。编码器有助于使系统更有弹性和灵活性,因为相同的知识可以用稍微不同的方式表达。

在线检索过程反映了大脑的记忆检索过程。LLM从用户查询中提取显著的命名实体,然后根据检索编码器确定的相似性将其链接到知识图中的节点。然后,HippoRAG使用个性化PageRank算法,这是PageRank的一个版本,它使用一组用户定义的源节点在图中分布概率。这种约束使HippoRAG能够将其输出限制为前一步中选择的候选查询节点集。然后将结果应用于索引的段落,以选择它们进行检索。

HippoRAG的实际应用

研究人员在两项具有挑战性的多跳问答基准测试(MuSiQue和2WikiMultiHopQA)以及HotpotQA数据集上,对HippoRAG的检索能力进行了全面的评估。他们将其与几种强大的检索方法和最近的LLM增强基线进行了比较。

评估结果表明, HippoRAG在单步检索上优于所有其他方法,包括那些基于LLM增强的基线模型。与多步骤检索方法IRCoT相结合时,HippoRAG在相同的数据集上提供高达20%的互补增益。

HippoRAG的一个主要优点是它能够在一个步骤中执行多跳检索。其在线检索过程的成本与目前的迭代检索方法(例如IRCoT)相比低10到30倍,快6到13倍,同时实现了相当的性能。

研究人员在报告中写道:“我们提出的神经生物学原理方法虽然简单,但已经显示出克服标准RAG系统固有局限性的巨大潜力,同时保留了它们相对于参数记忆的优势。HippoRAG在路径跟踪多跳QA和路径发现多跳QA方面的卓越表现,以及其显著的效率提升和持续更新的能力,使其成为了连接标准RAG方法和参数化记忆之间的强大中间框架,为LLM中的长期记忆问题提供了令人信服的解决方案。”

研究人员承认,为了进一步改进HippoRAG,还需要克服一些局限性,例如对其组件进行微调,并进一步验证其对更大知识图谱的可扩展性。然而,当前的研究结果已经证明了神经生物学启发的方法在推进LLM知识整合方面的潜力,并使他们能够对非结构化信息进行更复杂的推理。

知识图谱和LLM的结合是一个非常强大的工具,可以解锁许多应用程序。GNN-RAG是一种将图神经网络(GNN)和知识图与LLM相结合的创新方法,已被证明可以解决许多经典RAG无法解决的复杂推理问题。而将GNN引入HippoRAG可能是未来探索的一个有趣方向。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3225812.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

强化学习实战1:OpenAI Gym 实验环境介绍

环境配置 我的 torch 版本是 2.3.0,然后 gym 版本是 0.22.0,python 版本是 3.8 ,pygame 版本是 2.6.0 。 首先安装一下 gym: pip install gym0.22.0 -i https://pypi.tuna.tsinghua.edu.cn/simple然后安装一下 pygame&#xff…

Linux服务器CPU占用率达到100%排查思路

1、找到最耗CPU的进程pid,执行命令 top 2、找到最耗CPU的线程tid // 执行 top -Hp [pid] 定位应用进程对应的线程 tid // 按shift p 组合键,按照CPU占用率排序 > top -Hp 14246 3、将线程pid转化为16进制 // printf "%x\n" [tid] 将tid…

Sharding-JDBC分库分表之SpringBoot主从配置

Sharding-JDBC系列 1、Sharding-JDBC分库分表的基本使用 2、Sharding-JDBC分库分表之SpringBoot分片策略 3、Sharding-JDBC分库分表之SpringBoot主从配置 前言 在开发中,如果对数据库的读和写都在一个数据服务器中操作,面对日益增加的访问量&#x…

无法找到模块“@wangeditor/editor-for-vue”的声明文件

vue3项目中使用wangeditor/editor遇到的问题 开发环境不管红线报错正常使用 打包的时候就会报错了 1.安装依赖 pnpm install --save wangeditor/editor wangeditor/editor-for-vuenext 2.遇到的问题 3.解决方法 在src目录下面创建 wangeditor-types.d.ts 文件 代码如下 de…

【ai_agent】从零写一个agent框架(五)基于egui制作一个agent/workflow在线编辑器

前言 上篇我们实现了基础节点,并暴露出grpc服务,但是手动编辑文本制作一个workflow实在强人所难。 所以本文我们做个webui自动生成workflow。 开搞之前先看看别人怎么做的。 Dify 的ui 效果如下图示: 支持多种功能节点 但只能打开一个节…

【线性表,线性表中的顺序表和链表】

目录 1、线性表的定义和基本操作1.1、线性表的定义1.2、线性表的基本操作 2、顺序表和链表的比较2.1、顺序表2.1.1、顺序表的定义和特点2.1.2、顺序表的实现(1)顺序表的静态分配:(2)顺序表的动态分配 2.1.3、顺序表的基…

基于正点原子的FreeRTOS笔记——队列

一、什么是队列 队列是任务到任务、任务到中断、中断到任务数据交流的一种机制。 在队列中可以存储数量有限、大小固定的数据。队列中的每一个数据叫做“队列项目”,队列能够存储“队列项目”的最大数量称为队列的长度。 在创建队列时要指定队列长度以及队列项目…

蹭一个围棋亚军!不要和低维的人说话——早读(逆天打工人爬取热门微信文章解读)

熬夜后需要补什么呢? 引言Python 代码第一篇 洞见 不要和低维的人说话(深度好文)第二篇 冲冲冲结尾 引言 昨晚真的是熬夜又想不出东西 真的头大 最近下围棋 这个棋感很好呀 我是K级选手 目前是8级 套几个buff 纯自学 为什么决定学围棋呢? 是…

翰德恩咨询赋能材料行业上市公司,共筑IPD管理体系新篇章

赋能背景概览 坐落于江苏的某材料行业领军企业,作为国内无机陶瓷膜元件及成套设备领域的佼佼者,以其庞大的生产规模、丰富的产品系列及卓越的研发实力,屹立行业之巅二十余年。公司不仅在新材料研发、技术创新、工艺设计、设备制造及整体解决…

swift与Internvl下的多模态大模型分布式微调指南(附代码和数据)

大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 基于Dify的智能分类方案:大模型结合KNN算法(附代码&#xff…

InavFlight飞控固件学习-1《开发环境搭建》

目录 文章目录 目录摘要1.官网2.形成Linux开发环境工具2.1 简介2.2 相关工具2.2.1 Ubuntu / Debian系统配置命令2.2.2 Fedora系统配置命令2.2.3 Fedora系统配置命令 2.3 克隆存储库2.4 构建工具2.5 使用cmake2.6 构建固件2.7 清除2.8 cmake 缓存维护2.9 编译通过ninja2.10 更新…

小程序跳企业微信教程

来别急,我说几个点,你先记着, 必须真机才能测必须要企业微信里头去配置下关联到对应的小程序(文章底部有图)要同一个公司主体! 说说几个报错, 一、代码其实就这么一个,你别在微信…

virtuoso:layout如何做flat修drc

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 有些drc在virtuoso layout中修更节省时间,比如遇到一些via array需要做删改时,发现工具把via array做成了一个cell,如图。 去改cell可能会影…

高考志愿怎么选专业,哪些是热门专业?

选专业看上去非常简单,但是真正做起来的时候确实不容易,因为对于很多结束高考的学生来说,选专业就意味着他们选择自己的未来,这可是直接关系到未来的学习和职业发展,关系到将来的就业方向,再加上现在的社会…

逆向案例十一——华强北登录逆向

网址:aHR0cHM6Ly9wYXNzcG9ydC5ocWV3LmNvbS9sb2dpbg 登陆页面: 打开开发者工具会出现debugger调试: 直接使用一律不再此处暂停即可。点击登录,找到登录包。 发现有三个参数进行了加密,分别是Password,UserName和Devic…

如何修复 wxpython 事件调用?

1、问题背景 在使用 wxpython 开发 GUI 时,遇到了一个问题。当鼠标悬停在 BitmapButton 上时,会同时调用两个事件: self.Bind(wx.EVT_LEAVE_WINDOW, self.onPanelMouseLeave)self.Bind(wx.EVT_ENTER_WINDOW, self.onPanelMouseOver) 这导致…

解决U盘识别不了的一个小思路

我的U盘在自己在其他地方能正常使用,但是到了自己电脑突然就用不了了,其他设备也同样在自己电脑可以正常读写。 看了经验贴,大多是在设备管理器设置启动,但我的U盘明显不是这个问题。后面我看到一个贴子上的一个评论,想…

MQ四兄弟:如何保证消息顺序性

在当今的分布式系统架构中,消息队列(MQ)是不可或缺的组成部分。它们在确保系统组件之间高效通信方面发挥着关键作用。特别是在金融交易、物流跟踪等对消息处理顺序有严格要求的场景中,消息队列的顺序性保证显得更为重要。接下来&a…

本地电脑连接FTP服务器,显示无权限连接?

问题: 打开文档,在这一栏输入ftp服务器地址,按下回车,弹出无权限提示。 解决方案: 1、系统设置——网络和Internet——网络和共享中心 2、Internet选项 3、高级——取消“使用被动FTP”的勾选