AI News HubLIVE
站内改写3 分钟阅读

HippoRAG:基于神经生物学启发的RAG,使用Amazon Bedrock、Amazon Neptune和个性化PageRank

本文演示了如何使用AWS技术栈实现HippoRAG,包括Amazon Bedrock、Amazon Neptune、Neptune Analytics和Amazon Titan Embeddings。该框架受人类海马体记忆系统启发,通过构建知识图谱和个性化PageRank算法,实现单步多跳检索,提升复杂推理任务的效率。文章详细介绍了从HotpotQA数据处理到Neptune图数据库构建的完整流程,并提供了代码示例。

来源AWS Machine Learning Blog作者: Tanay Chowdhury

大型语言模型(LLM)在信息处理和生成方面取得了显著进展,但在整合多个来源的知识方面仍存在困难。标准的检索增强生成(RAG)方法虽然有所帮助,但在需要跨文档连接信息的多跳推理任务中往往力不从心。为了解决这些限制,我们探索了HippoRAG——一种受人类海马体记忆系统启发的新型RAG框架。

在本文中,我们演示了如何使用完整的AWS技术栈实现HippoRAG。我们使用Amazon Bedrock提供LLM能力,Amazon Neptune作为图数据库,Amazon Neptune Analytics执行高级图算法(包括个性化PageRank),以及Amazon Titan Embeddings进行向量表示。该实现展示了如何在AWS基础设施上构建和部署HippoRAG,以支持企业级应用。

神经生物学灵感与背景

HippoRAG的灵感来自人类长期记忆的海马体索引理论。在人脑中,新皮层处理感知输入,而海马体则创建记忆之间的关联索引。这种双组件系统使得人类能够高效地整合不同体验中的信息。

标准的RAG方法将每个文档独立处理,难以回答需要跨多个来源连接信息的问题。HippoRAG通过以下方式解决这一问题:

  • 构建知识图谱以表示实体之间的关系。
  • 使用个性化PageRank(PPR)算法进行高效的图遍历和相关性排序。
  • 实现单步多跳检索,无需多次迭代。

解决方案架构

我们的AWS实现包含四个主要组件:

  • Amazon Bedrock:提供LLM能力,用于提取知识图谱三元组、回答问题以及识别命名实体。
  • Amazon Neptune Database:存储知识图谱结构,支持基本图操作。
  • Amazon Neptune Analytics:执行高级图算法,特别是用于相关性排序的个性化PageRank。
  • Amazon Titan Embeddings:创建文本的向量表示,用于相似性匹配。

这种架构使我们能够充分利用个性化PageRank的强大功能,同时保持AWS托管服务的可扩展性和可靠性。

前提条件

为实现此方案,您需要:

  • 一个AWS账户,有权访问Amazon Bedrock和Neptune服务。
  • 已配置并可访问的Amazon Neptune集群。
  • 从Neptune数据库创建的Amazon Neptune Analytics图。
  • 已安装AWS CLI和Python 3.8+。
  • 适当的IAM权限,包括Amazon Bedrock、Amazon Neptune、Amazon Neptune Analytics和Amazon Simple Storage Service (Amazon S3)。

数据处理管道:从HotpotQA JSON到Neptune

实现HippoRAG的第一步是将原始数据转换为适合于Neptune的知识图谱结构。在本节中,我们逐步介绍如何处理JSON格式的HotpotQA数据。我们使用Amazon Bedrock提取知识图谱三元组,生成Neptune批量加载CSV文件,将它们上传到Amazon S3,然后加载到Neptune集群中。

设置数据导入器

HotpotQANeptuneImporter类编排了管道的每个阶段。它负责读取JSON源文件、生成CSV输出、将文件上传到Amazon S3并触发Neptune批量加载器。该类的初始化需要配置AWS环境的值,包括文件路径、输出目录、S3存储桶、前缀、Neptune端点、端口、IAM角色ARN等。

知识图谱三元组提取

管道的一个关键部分是使用Amazon Bedrock的LLM能力从原始文本中提取结构化知识。对于每个段落,系统生成主语-关系-宾语三元组,这些三元组成为知识图谱中的边。通过调用LLM API,可以从文本中提取实体及其关系。

处理HotpotQA示例

每个HotpotQA示例的处理包括遍历上下文中的文档和段落,为每个段落创建语料节点,然后从段落中提取三元组,为每个主语和宾语创建短语节点,并写入关系边和上下文边。此过程确保图谱中包含了文档间的相互引用。

将数据加载到Neptune

处理数据生成CSV文件后,系统会将这些文件上传到S3,并使用Neptune的批量加载API导入到图数据库中。加载作业提交后,系统会监控其状态直至完成。

运行完整管道

run_pipeline方法依次执行所有步骤:测试Neptune连接、加载HotpotQA数据、处理数据为CSV、创建空文件、上传到S3、导入到Neptune并等待完成。整个过程通过日志记录进度和错误。

实现

本节介绍HippoRAG实现的关键组件,从初始配置到知识图谱构建和检索。

配置

首先,我们设置基本配置,包括LLM模型(如Claude 3.5 Haiku)、嵌入模型(如Titan Embeddings v2)、AWS区域、保存目录和检索参数。

Neptune Analytics集成

我们实现中的一个关键创新是与Amazon Neptune Analytics的集成,用于个性化PageRank。通过创建一个专门的客户端类,可以调用Neptune Analytics的API来运行算法。该类接收种子节点列表、阻尼因子、最大迭代次数和容差参数,返回节点及其PageRank分数的列表。

检索流程

在检索阶段,给定一个查询,系统首先使用Bedrock提取实体,然后在Neptune中查询这些实体对应的节点,接着在Neptune Analytics上运行个性化PageRank,以获取与查询最相关的段落节点。最终,根据分数排序返回Top-K结果。

结论

通过将神经科学的灵感与AWS的托管服务相结合,HippoRAG为企业级多跳推理任务提供了一种高效且可扩展的解决方案。本文的实现展示了如何利用Amazon Bedrock、Neptune和Neptune Analytics构建一个完整的知识图谱增强检索系统。