使用 LlamaIndex 构建应用

您可以结合使用 LlamaIndex 和 Spanner Graph 来构建使用图检索增强生成 (GraphRAG) 的大语言模型 (LLM) 应用。

Spanner Graph 通过其属性图存储功能与 LlamaIndex 集成,使您能够使用以下组件来创建数据检索工作流:

  • 属性图存储:使您能够通过在图数据库中存储节点和边来将数据表示为图。您可以使用该图数据库来查询数据中的复杂关系。

  • 图检索器:使您能够使用 LLM 将用户的自然语言问题转换成针对图存储的查询。这使得应用能够利用图数据中的结构化关系来回答问题。

什么是 LlamaIndex?

LlamaIndex 是一个用于构建 LLM 应用的数据框架,可帮助您简化检索增强生成 (RAG) 和其他上下文感知系统的开发。LlamaIndex 提供将 LLM 与您的数据相关联的工具,可帮助您进行数据提取、索引编制和查询。您可以将 LlamaIndex 与 LLM 搭配使用,以构建可提供准确且相关回答的应用。

如需详细了解 LlamaIndex 框架,请参阅 LlamaIndex 产品文档

适用于 Spanner 的属性图存储

属性图存储可在应用中用于执行以下操作:

  • 从文档中提取实体和关系,并将它们存储为图。

  • 对图结构执行复杂的遍历和分析。

  • 使用 Graph Query Language (GQL) 查询图,为 LLM 提供特定上下文。

如需在 Spanner Graph 中使用属性图存储,请使用 SpannerPropertyGraphStore 类。

属性图存储教程

如需了解如何将属性图存储与 Spanner 搭配使用,请参阅适用于 Spanner 的属性图存储教程。本教程可帮助您了解如何执行以下操作:

  • 安装 llama-index-spanner 软件包和 LlamaIndex

  • 初始化 SpannerPropertyGraphStore 类并使用它来连接到您的 Spanner 数据库。

  • 使用 LlamaIndex 知识图谱提取器,将包含从文档中提取的数据的节点和边添加到 Spanner Graph。

  • 通过使用 GQL 查询图来检索结构化信息。

  • 可视化您的图查询结果。

适用于 Spanner 的图检索器

LlamaIndex 中的图检索器是使用 LLM 将用户的自然语言问题转换成针对图存储的查询的组件。应用利用生成的查询,通过使用图数据中的结构化关系来回答问题。图检索器使用以下工作流根据自然语言查询生成回答:

  1. 提示 LLM 将自然语言问题转换为 GQL 查询。

  2. 使用 Spanner Graph 和 SpannerPropertyGraphStore 类,针对图存储运行 GQL 查询。

  3. 使用 Spanner Graph 将查询返回的结构化数据发送给 LLM。

  4. 使用 LLM 生成人类可读的回答。

使用 LlamaIndex 检索器类

以下 LlamaIndex 图检索器类可与 Spanner Graph 搭配使用,以针对 LLM 提示生成人类可读的回答:

SpannerGraphTextToGQLRetriever

SpannerGraphTextToGQLRetriever 类将自然语言转换为 GQL 查询,用于从图中提取数据。

SpannerGraphCustomRetriever

SpannerGraphCustomRetriever 类实现了混合检索方法。SpannerGraphCustomRetriever 通过以下步骤处理具体问题和概念性问题:

  1. 同时执行以下搜索:

    • 图搜索,将自然语言问题转换为使用图来查找答案的 GQL 查询。

    • 向量搜索或语义搜索,用于查找概念上相关的信息。

  2. 合并来自图搜索和向量搜索的结果。

  3. 使用 LLM 评估并重新排名合并后的结果。LLM 会选择最相关且能感知上下文的信息来回答原始问题。

图检索器教程

如需了解如何将图检索器与 Spanner 搭配使用来回答问题,请参阅适用于 Spanner 的图检索器教程。本教程将介绍如何执行以下操作:

  • 从非结构化文本 blob 创建图。

  • 使用 SpannerPropertyGraphStore 类将图存储在 Spanner 中

  • 使用您的图存储和一个 LLM,初始化 SpannerGraphTextToGQLRetriever 类和 SpannerGraphCustomRetriever 实例。

  • 使用存储在 Spanner 中的图数据,生成对自然语言问题的回答。

后续步骤