跳转到主内容

除了混合搜索,RAG 还需要什么样的基础设施能力?

阅读时长9分钟

Infinity 是一个专门为检索增强生成 (RAG) 设计的数据库,在功能和性能方面都表现出色。它为稠密和稀疏向量搜索以及全文搜索提供了高性能能力,同时还对这些数据类型提供了高效的范围过滤。此外,它还具有基于张量的重排序功能,能够实现强大的多模态 RAG 并集成与 Cross Encoders 相当的排序能力。<!--truncate-->

如下图所示,Infinity 本质上是一个用于多种数据类型的综合索引数据库。

这些能力已被工程界和学术界公认为检索增强生成 (RAG) 的核心要素。那么,当前和未来的 RAG 系统还需要哪些额外的能力呢?

GraphRAG

首先,我们来看看 GraphRAG。这里的 GraphRAG 不仅指微软的开源项目,还指一种利用自动构建的知识图谱来辅助 RAG 检索的方法。这种方法解决了问答中的“语义鸿沟”问题,即无法根据提出的问题找到答案。

既然涉及到知识图谱,就不可避免地要讨论图数据库。图数据库旨在处理复杂的图结构查询。例如,考虑以下查询:返回用户 Alice 完成的所有两跳转账的所有源账户和目标账户。这可以在 SQL 中表达为:

SELECT a.owner, c.owner
FROM Accounts a, b, c, Transactions t1, t2
WHERE b.owner = Alice AND a.owner=t1.From AND t1.To=b.owner AND t1.To=t2.From AND t2.to=c.owner

这需要两张表:账户表和交易表。操作如下:

  1. 在账户表中找到所有属于 Alice 的账户(b.owner = 'Alice')。
  2. 在交易表中找到所有向 Alice 发起交易的账户(a.owner = t1.From 和 t1.To = b.owner)。
  3. 识别 Alice 作为发起者的账户(t1.To = t2.From)。
  4. 最后,找到这些交易的最终目标账户(t2.To = c.owner)。

因此,我们可以观察到这类查询的三个特点:

  1. 尽管此查询只涉及两张表,但它需要大量的多表连接。
  2. 使用关系型数据库建模非常麻烦。
  3. 由于需要对多个表进行非顺序扫描,关系型数据库的查询效率非常低。每个操作通常只返回少量记录,这使得创建有效的查询计划变得困难。传统关系型数据库很容易导致中间结果集过大,从而导致内存溢出 (OOM) 错误。

因此,图数据库的特点包括:

  1. 为了避免表的非顺序扫描,它们引入了索引,特别是倒排索引。倒排索引按列单独存储节点和边,并基于边构建索引,索引内容是节点 ID。
  2. 它们优化了多表连接;一些最先进的系统为最坏情况下的最优连接实现了多路连接 [参考文献 1]。

回到知识图谱,我们是否需要如此复杂的图查询?抛开 GraphRAG 不谈,典型的知识图谱需要查询基于给定实体的邻近实体。更复杂的查询可能涉及子图遍历,以获取多个实体的邻居和多跳邻居。这些需求可以使用索引方便地实现。因此,对知识图谱的支持是图数据库的一个相对简化的要求。

回到 GraphRAG,让我们以 LightRAG [参考文献 2] 为例,来检查所涉及的查询。选择 LightRAG 是因为它对 GraphRAG 查询提供了更全面和系统的总结,如下图所示。

所需的查询如下:

  1. 找到最接近关键字向量的顶部实体。
  2. 在知识图谱中识别连接这些实体的关系。
  3. 找到最接近关键字向量的顶部关系(边)。
  4. 在知识图谱中识别这些关系连接的实体。

显然,GraphRAG 对知识图谱查询的要求非常简单。在 GraphRAG 中,知识图谱的抽象和定义被简化了,实体之间的关系被简化为单一类型。这种简化是因为大型语言模型 (LLMs) 通常缺乏对实体和关系的精确定义,导致知识图谱通常作为检索增强生成 (RAG) 的辅助工具。最近,蚂蚁集团也发布了其采用 KAG [参考文献 3] 的 GraphRAG 方法,它提供了更全面的知识图谱定义,将实体之间的关系扩展到六种类型,并引入了推理框架。然而,数据检索本身没有显著变化。因此,一个简单的想法产生了:移植一个精简的图数据库是否能满足 GraphRAG 当前和未来的需求?

最近,来自滑铁卢大学的资深搜索引擎研究员 Charles L. A. Clarke 提出了一种新颖的索引方法,称为 Annotative Indexing [参考文献 4]。其目的是统一列式存储、全文搜索和图数据库。“Annotative”一词指的是对倒排索引结构的调整;通过引入注解,可以更灵活地创建倒排索引。基于这些观察,我们将探讨 Infinity 作为一种全索引数据库,能否满足 GraphRAG 当前和未来的要求。

如图所示,我们可以轻松地对知识图谱的实体和边进行建模。在 GraphRAG 中,知识图谱的实体和边以文本描述的形式表示,以及从这些实体及其摘要聚类得到的社区。因此,所有这些文本都可以使用全文索引进行关联。Infinity 的全文索引提供了全面而强大的语法,不仅可以进行相似度评分,还可以根据**关键字进行过滤**。因此,在<源实体名称、目标实体名称>字段上建立全文索引可以方便地进行关键字过滤,从而方便地基于边和实体进行子图检索。此外,在 Infinity 中,全文索引和向量索引无缝集成,可以实现针对 GraphRAG 的高效混合搜索。所有边、实体,甚至社区都包含在全文搜索和向量的范围内,从而实现基于 GraphRAG 的双向混合召回。此外,如下图所示,通过简单地在原始文本块旁边添加一个类型字段,这些数据可以存储在单个表中,有效地将 GraphRAG 和 RAG 结合到 HybridRAG 中。显然,使用具有丰富索引能力的数据库可以显著减少实现这些复杂逻辑相关的工程挑战。

因此,可以得出结论,Infinity 目前满足 GraphRAG 当前和未来的存储需求。展望未来,Infinity 将在计算层添加更多执行逻辑,允许一些应用层代码集成到数据库中,从而提高性能和可用性。例如:

  1. 一种 GraphRAG 直接将文本块视为图中的节点,块之间的相似性(基于各种选项)决定了边。这也可以使用倒排索引进行建模。创建此类索引的任务可以在 Infinity 中作为后台作业实现。
  2. GraphRAG 需要与模型密切交互,未来它将不可避免地引入一些图计算能力。例如,根据子图遍历结构生成图嵌入也可以作为 Infinity 中的后台任务执行。

这些任务可以通过后台作业或函数来完成,所有这些都可以使用 Infinity 当前的引擎架构执行,而无需进行重大调整。这显然与 Infinity 随着 RAG 的发展而不断演进的趋势相符。

长期记忆

接下来,我们来看看内存管理,它与代理密切相关,可以被认为是不可或缺的组成部分。在 RAGFlow 中,已经提供了一个代理框架。目前,大多数代理都与工作流紧密关联,促进 RAG 与外部系统之间的交互,或通过工作流实现代理式 RAG。然而,代理的未来在于以多代理架构为代表的更智能系统,它们将协助大型语言模型 (LLMs) 提供推理能力。多代理与 RAG 之间的交互将变得更加频繁,如下图所示。

在这些架构中,代理需要管理自己的记忆,例如用户会话和个性化信息。许多代理框架使用短期记忆模块来处理这些数据,将其与长期记忆区分开来。前者依赖于临时内存数据;然而,随着代理使用量的增加和所有用户信息都需要保留,更可靠的方法是使用长期记忆组件,特别是数据库,以文本和向量格式存储所有上述用户信息。对于记忆管理,所需的接口基本上分为两类:

  • 过滤:根据用户ID、代理ID和时间范围,检索特定代理和用户的特定记忆信息。
  • 搜索:根据上下文信息(包括文本和向量)查询用户记忆模块中的相关信息。

由于代理需要实时访问内存,因此用于长期内存管理的数据库不仅必须支持上述两类需求,还必须确保实时性能:数据必须在插入后立即可见。这本质上需要流式搜索能力——在 Infinity 中,所有索引都满足此要求。

对于向量,索引构建是一个耗时的过程;因此,Infinity 采用暴力扫描新插入数据以实现实时查询。因此,Infinity 已为支持即将到来的多代理系统做好了充分准备。

Infinity,一个专门为检索增强生成 (RAG) 设计的数据库,已经发展到具备全面的服务能力。在 RAGFlow 最新版本 0.14 中,Infinity 已集成作为 Elasticsearch 的替代方案。经过全面测试和验证,Infinity 将成为 RAGFlow 的首选选项,并随着时间的推移解锁许多高级功能。请持续关注 Infinity 和 RAGFlow 的更新!

https://github.com/infiniflow/infinity

https://github.com/infiniflow/ragflow

参考文献

  1. https://github.com/kuzudb/kuzu
  2. https://github.com/HKUDS/LightRAG
  3. https://github.com/OpenSPG/KAG
  4. Annotative Indexing, arXiv 预印本 arXiv:2411.06256
  5. HybridRAG: Integrating Knowledge Graphs and Vector Retrieval Augmented Generation for Efficient Information Extraction, 第五届 ACM 国际金融人工智能会议论文集,2024
  6. TCAF: a Multi-Agent Approach of Thought Chain for Retrieval Augmented Generation, 2024 KDD Cup 检索增强生成工作坊
© . This site is unofficial and not affiliated with InfiniFlow.