如何使用HippoRAG增强LLM的记忆

大型语言模型(LLM)已经证明是一种非常宝贵的思考工具。经过大量文本、代码和其他媒体数据集的训练,它们能够创作出接近人类水平的文章、翻译语言、生成图像,还能以信息丰富的方式回答人们提出的问题,甚至可以编写不同类型的创意内容。但是,尽管它们功能强大,即使是最先进的LLM也有一个基本的限制:知识的时效性。它们所“知道”的一切知识都是由所接受的训练数据决定的,这使它们无法适应新的信息,也无法了解人们的具体需求和偏好。

为了克服这一限制,研究人员开发了检索增强生成(RAG)。RAG赋予了LLM访问实时更新的数据存储的能力。这种对动态外部知识库的访问使它们能够动态地检索相关信息,并将其合并到他们的响应中。然而,由于这些模型往往依赖于关键字匹配,当面对需要跨多个信息源进行关联的问题时,标准的RAG实现就会遇到挑战——这是一种被称为“多跳” (multi-hop)推理的难题。

受到大脑存储和提取记忆机制的启发,研究人员开发了HippoRAG这一新颖的RAG方法,这种方法在生成反应时能够检索并整合更具意义的来源。本文将深入剖析HippoRAG的工作原理,探究其在传统RAG技术之上的优势,并展望其在人工智能系统中激发全新推理和理解水平的潜力。

在RAG技术存在局限时:寻求更深层次的联系

在传统的RAG系统中有两个关键组件:检索器和生成器。检索器负责在庞大的文本数据库(知识库)中搜寻,这些数据库可能包括维基百科、企业内部文档,甚至个人文件。其工作原理是将问题和文档转化为数字表示(即嵌入),并利用高效的算法迅速找出与问题嵌入最为相似的文档。随后,生成器(通常是一个强大的大型语言模型)将这些检索到的文档作为场景,生成一个全面且信息丰富的答案。

例如,如果询问RAG系统“巴黎的主要旅游景点是什么?”,检索器将在知识库中搜索包含巴黎和旅游景点信息的文档。它可能会从维基百科、旅游博客甚至旅游指南中找到文章。然后LLM将使用这些检索到的文档来生成响应,可能列出像埃菲尔铁塔、卢浮宫博物馆和凯旋门这样的热门景点。

尽管这款工具功能强大,但当面对需要将多个信息片段串联起来以解答问题的情况时,传统的RAG系统往往显得力不从心——这正是所谓的“多跳”推理难题。假设某人向人工智能助理提问:“我下周去伦敦旅行时应该带把伞吗?”为了回答这个问题,助理需从他的日历中检索旅行日期,核实这些日期内伦敦的天气状况,并考虑他的个人行李偏好(他是习惯随身携带雨伞,还是仅在天气恶劣时才携带?)。然而,传统的RAG系统往往仅依赖于基础的关键字匹配,可能会找到包含“伦敦”和“雨伞”的文件,但不一定能理解这些文件与他的旅行或其个人行李偏好之间的时间关联性。

类似地,像“谷歌现任首席执行官(CEO)的出生地是哪个国家的首都?”这样的问题需要将他的出生地与该国的首都联系起来——这种联系可能在任何一份文档中都不明确。传统的RAG很难有效地建立这些连接。

HippoRAG:模仿大脑的记忆指数

HippoRAG是一个新的RAG框架,其设计理念来自于人们的大脑如何存储和检索记忆。人类的大脑不只是将信息存储在孤立的单元中,它在不同概念之间建立了丰富的联系网络。这种将相关想法联系起来的能力使得HippoRAG能够进行复杂的逻辑推理,从而做出推断,并回答需要将多个来源的信息综合在一起的复杂问题。

通过模拟大脑的记忆索引机制,HippoRAG展现了其独特的优势,为信息检索和推理领域带来了新的可能性。

受HippoRAG启发的海马体索引理论为大脑中的这种工作方式提供了一个模型:

  • 新皮质:作为大脑中负责“思考”的部分,负责处理感官信息和存储复杂知识。这类似于HippoRAG中的LLM。
  • 海马体:大脑深处的一个区域,就像记忆的“索引”。它本身并不存储完整的记忆,但它在存储在新皮层中的不同信息片段之间建立了联系(关联)。可以把它想象成一个概念之间联系的心理地图。这就是知识图谱在HippoRAG中的作用。

当体验到新事物时,大脑皮层就会处理,海马体会在相关概念之间建立联系,形成记忆痕迹。当在今后回忆起那段经历的一部分时,海马体会激活相关的联系,触发从新皮质提取完整的记忆。

为LLM构建更好的记忆

HippoRAG模仿这种受大脑启发的模型,为LLM提供了更复杂的记忆系统。以下探讨HippoRAG是如何运作的:

1.建立海马指数

HippoRAG使用LLM从知识库中提取关键概念和关系,构建知识图,其中节点表示概念,边表示概念之间的关系。这个知识图谱就像海马体,储存着想法之间的联系。

以下是示例中知识图谱的简化表示:

  • 节点:表示实体和概念:“伦敦”、“英国”、“天气”、“不可预测”、“雨伞”、“保护”、“雨”、“旅行”、“下周”、“周一”、“周五”、“轻装”、“我”等。
  • 边:表示节点之间的关系:“伦敦”-[是首都]->“英国”,“伦敦”-[以]->“不可预测的天气”而闻名,“雨伞”-[提供]->“保护”,“保护”-[从]->“雨”,“旅行”-[目的地]->“伦敦”,“旅行”-[时间]->“下周”,“下周”-[包括]->“星期一”,“下周”-[包括]->“星期五”,“我”-[偏好]->“轻装”,等等。
2.个性化PageRank的查询时间推理

给定一个新问题,LLM识别关键实体,并将它们映射到知识图中的节点。然后,HippoRAG使用一种称为个性化PageRank (PPR)的算法来探索知识图谱,在相关节点上传播激活。这就像海马体激活了相关的记忆痕迹。PPR允许HippoRAG从远离原始实体的多“跳”中有效地收集信息,在一个步骤中捕获多跳关系。在以下示例中:

  • 实体识别:与之前一样,LLM识别问题中的关键实体:“雨伞”、“旅行”和“伦敦”。
  • 知识图谱上的PPR:从代表这些实体的节点开始,PPR探索知识图谱,在相关节点之间传播激活。它考虑边缘的强度和方向来确定不同路径的相关性。

在例子中:PPR可能会高度激活通往“雨”、“变幻莫测的天气”和“保护”等节点的路径,因为它们与“伦敦”和“雨伞”有联系。

3.单步检索

然后检索最高度激活的节点(以及知识库中与它们相关的文本块)。这为LLM提供了回答问题所需的信息,包括概念之间的关键联系。

在示例中,这可能包括原始示例中的文本块1、2和3。

4.使用LLM生成答案

LLM现在已经掌握了谜题的所有部分——原始问题、检索到的知识(通过基于图的连接丰富)和任何额外的实时信息。它可以利用这些更丰富的知识来提供更细致、更准确的答案。

在例子中:

  • 组合输入:LLM接收原始问题、检索到的知识(现在已通过基于图的连接得到丰富)以及伦敦在旅行日期的实时天气预报。
  • 增强推理:LLM现在可以利用更丰富的知识来提供更细致、更准确的答案。它不仅知道伦敦的天气变幻莫测,而且还知道雨伞可以防雨,而且知道行程安排在可能下雨的时间。

从多跳到寻径:人工智能记忆的未来

HippoRAG背后的研究人员证明,它在多跳推理任务上明显优于标准的RAG方法。但这种方法的含义远远超出了简单的问题回答。

由HippoRAG实现的“寻径”检索概念尤其令人兴奋。想象一下,人工智能系统不仅可以检索信息,还可以发现概念之间的新联系,即使这些联系没有在数据中明确说明。这将改变科学发现、法律推理和个性化推荐等领域的游戏规则,在这些领域,建立新联系的能力是必不可少的。

虽然HippoRAG面临着扩展到大规模知识图谱和管理概念-场景权衡等挑战,但它代表了构建具有更类似人类记忆能力的LLM的重大飞跃。随着人们继续探索神经科学和人工智能的交叉点,正在接近创造能够像人类大脑一样学习、记忆和推理的深度和灵活性的人工智能系统。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

react_后台管理_项目

目录 1.运行项目 2. 项目结构 ①项目顶部导航栏 ②项目左侧导航栏 ③主页面-路由切换区 本项目使用的是 reacttsscss 技术栈。 1.运行项目 在当前页面顶部下载本项目,解压后使用编辑器打开,然后再终端输入命令: npm i 下载依赖后&am…

Vue 数据大屏适配

1、准备俩个盒子 .dataScreen-content 盒子内容根据设计稿给的px单位进行正常的布局就行 2、盒子的CSS样式 .dataScreen-container {width: 100%;height: 100%;// 有背景图需要的样式background: url("./images/bg.png") no-repeat;background-repeat: no-repeat;b…

AI对于高考和IT行业的深远影响

目录 AI对IT行业的冲击及深远影响1. 工作自动化2. 新的就业机会3. 行业融合4. 技术升级和创新5. 数据的重要性 IT行业的冬天要持续多久?大学的软件开发类专业是否还值得报考?其他问题IT行业是否都是加班严重?35岁后就业困难是否普遍现象&…

在 PostgreSQL 中,如何处理多个长时间运行的查询对系统资源的竞争?

文章目录 一、问题分析二、解决方案(一)优化查询语句(二)限制资源使用(三)调整数据库参数(四)监控和分析查询性能(五)分区表(六)异步处…

策略为王股票软件源代码-----如何修改为自己软件73------------主界面右下角,大盘指数,时间显示 ,

IDS_MAINFRAME_SHINDEXTIP "沪:%2.f %+.2f %.2f亿" IDS_MAINFRAME_SZINDEXTIP "深:%2.f %+.2f %.2f亿" 主界面右下角,大盘指数,时间显示 , if( TIMER_TIME == nIDEvent ) { CSPTime time = CSPTime::GetCurrentTime(); …

ruoyi mybatis pagehelper 分页优化(自定义limit位置)clickhouse 外部数据源

例如加入clickhouse的分页时发现extends 不生效 则可以添加 startPage();registerDialectAlias("clickhouse", PageMySqlDialectPlus.class);List<MyMonitorlog> list monitorlogService.selectMonitorlogList(monitorlog);主要是需要注册 registerDialectAl…

ReAct Agent 分享回顾

在人工智能的迅速发展中&#xff0c;ReAct Agent作为一项前沿技术&#xff0c;受到越来越多的关注。本文结合ReAct Agent 提出者的访谈内容&#xff0c;探讨ReAct Agent的研究背景、技术挑战、未来展望&#xff0c;以及它与大模型的紧密联系&#xff0c;分析其科研成果与商业化…

kubernetes集群部署:关于CRI(一)

上周接到了一项紧急预研任务&#xff1a;kubernetes各项属性采集。目前我手里已经存在二进制部署的一套kubernetes&#xff08;v1.23版本CRI&#xff1a;dockershim&#xff09;集群&#xff1b;为了适配的广泛性&#xff0c;决定使用kuberadm工具部署最新&#xff08;v1.30版本…

三级_网络技术_04_中小型网络系统总体规划与设计

1.下列关于路由器技术特征的描述中&#xff0c;正确的是()。 吞吐量是指路由器的路由表容量 背板能力决定了路由器的吞吐量 语音、视频业务对延时抖动要求较低 突发处理能力是以最小帧间隔值来衡量的 2.下列关于路由器技术特征的描述中&#xff0c;正确的是()。 路由器的…

【C语言】指针(1):入门理解篇

目录 一、内存和地址 1.1内存 1.2 深入理解计算机编址 二、指针变量和地址 2.1 取地址操作符&#xff08;&&#xff09; 2.2 指针变量和解应用操作符 2.2.1 指针变量 2.2.2 解引用操作符 2.3指针变量的大小 三、指针变量类型的意义 3.1 指针的解引用 3.1指针-整数…

贵州建筑三类人员安全员2024年考试最新题库练习题

一、单选题 1.建设工程安全管理的方针是&#xff08;&#xff09;。 A.安全第一&#xff0c;预防为主&#xff0c;综合治理 B.质量第一&#xff0c;兼顾安全 C.安全至上 D.安全责任重于泰山 答案&#xff1a;A 2.安全生产管理的根本目的是&#xff08;&#xff09;。 A.…

YOLOv8改进 | 注意力机制 | 结合静态和动态上下文信息的注意力机制

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…

207 课程表

题目 你这个学期必须选修 numCourses 门课程&#xff0c;记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出&#xff0c;其中 prerequisites[i] [ai, bi] &#xff0c;表示如果要学习课程 ai 则 必须 先学习课程 bi 。 …

跨越语言的界限:Vue I18n 国际化指南

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热爱技术和分享&#xff0c;欢迎大家交流&#xff0c;一起学习进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 目录 国际化简介 vue-i18n 安装和配置 创建语言包 基本使用 切换语言 动态翻…

使用Python绘制堆积柱形图

使用Python绘制堆积柱形图 堆积柱形图效果代码 堆积柱形图 堆积柱形图&#xff08;Stacked Bar Chart&#xff09;是一种数据可视化图表&#xff0c;用于显示不同类别的数值在某一变量上的累积情况。每一个柱状条显示多个子类别的数值&#xff0c;子类别的数值在柱状条上堆积在…

电商视角如何理解动态IP与静态IP

在电子商务的蓬勃发展中&#xff0c;网络基础设施的稳定性和安全性是至关重要的。其中&#xff0c;IP地址作为网络设备间通信的基础&#xff0c;扮演着举足轻重的角色。从电商的视角出发&#xff0c;我们可以将动态IP和静态IP比作电商平台上不同类型的店铺安排&#xff0c;以此…

数据结构1:C++实现边长数组

数组作为线性表的一种&#xff0c;具有内存连续这一特点&#xff0c;可以通过下标访问元素&#xff0c;并且下标访问的时间复杂的是O(1)&#xff0c;在数组的末尾插入和删除元素的时间复杂度同样是O(1)&#xff0c;我们使用C实现一个简单的边长数组。 数据结构定义 class Arr…

C++(Qt)-GIS开发-QGraphicsView显示瓦片地图简单示例

C(Qt)-GIS开发-QGraphicsView显示瓦片地图简单示例 文章目录 C(Qt)-GIS开发-QGraphicsView显示瓦片地图简单示例1、概述2、实现效果3、主要代码4、源码地址 更多精彩内容&#x1f449;个人内容分类汇总 &#x1f448;&#x1f449;GIS开发 &#x1f448; 1、概述 支持多线程加…

系统安全与应用

目录 1. 系统账户清理 2. 密码安全性控制 2.1 密码复杂性 2.2 密码时限 3 命令历史查看限制 4. 终端自动注销 5. su权限以及sudo提权 5.1 su权限 5.2 sudo提权 6. 限制更改GRUB引导 7. 网络端口扫描 那天不知道为什么&#xff0c;心血来潮看了一下passwd配置文件&am…

在 PostgreSQL 中,如何处理大规模的文本数据以提高查询性能?

文章目录 一、引言二、理解 PostgreSQL 中的文本数据类型三、数据建模策略四、索引选择与优化五、查询优化技巧六、示例场景与性能对比七、分区表八、数据压缩九、定期维护十、总结 在 PostgreSQL 中处理大规模文本数据以提高查询性能 一、引言 在当今的数据驱动的世界中&…