使用 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 中的图表数据生成自然语言问题的答案。

后续步骤