本页面介绍了使用与 AlloyDB Omni 集成的 LlamaIndex 来构建依托 LLM 的应用的一些应用场景。我们提供了指向 GitHub 上笔记本的链接,以帮助您探索方法或开发应用。
LlamaIndex 是一种生成式 AI 编排框架,可让您将数据源与大语言模型 (LLM) 相关联并集成。您可以使用 LlamaIndex 构建应用,以使用自然语言查询来访问私有数据或特定领域的数据并从中查询信息。
LlamaIndex 充当自定义数据和 LLM 之间的桥梁,有助于开发具有检索增强生成 (RAG) 功能的知识助理应用。
LlamaIndex 非常适合以文档为中心的应用,因为它强调结构化文档管理,从而可简化索引编制和检索。此框架采用优化的查询机制,可提高信息访问的速度和相关性,并提供强大的元数据处理功能以实现细致的过滤。
如需详细了解 LlamaIndex 框架,请参阅 LlamaIndex 产品文档。
LlamaIndex 组件
AlloyDB Omni 提供以下 LlamaIndex 接口:
- 向量存储
- 文档存储区
- 索引存储区
- 聊天存储区
- 文档读取器
如需了解如何使用 LlamaIndex,请参阅 AlloyDB Omni 快速入门。
向量存储
借助此 LlamaIndex 集成,您可以利用 AlloyDB Omni 的强大且可伸缩的特性来存储和管理 LlamaIndex 数据。通过将 LlamaIndex 的索引编制和查询功能与 AlloyDB Omni 的高性能和可靠性相结合,您可以构建更高效且可伸缩的依托 LLM 的应用。
LlamaIndex 会将文档(文档、文本和 PDF 文件)细分为称为“节点”的文档组件。VectorStore 只能包含所注入节点内容的嵌入向量和节点的文本。节点包含文本内容、向量嵌入和元数据。您可以对这些元数据字段应用过滤条件,以将节点检索限制为符合指定元数据条件的节点。
如需在 AlloyDB Omni 中使用向量存储区,请使用 AlloyDBVectorStore
类。如需了解详情,请参阅 LlamaIndex 向量存储区。
使用 AlloyDBVectorStore 类存储向量嵌入
关于向量存储区的 AlloyDB Omni 笔记本介绍了如何执行以下操作:
- 使用
AlloyDBEngine.from_connection_string()
创建AlloyDBEngine
以连接到 AlloyDB Omni 实例。 - 初始化用于存储向量嵌入的表。
- 使用任意 Llama 索引嵌入模型创建嵌入类实例。
- 初始化默认的
AlloyDBVectorStore
向量存储区。 - 使用 VectorStoreIndex 创建向量存储区中的索引并对其进行查询。
- 创建自定义向量存储区,以存储和过滤元数据。
- 添加 ANN 索引以缩短搜索延迟时间。
文档和索引存储区
LlamaIndex 文档存储区集成可管理结构化文档存储和检索,针对 LlamaIndex 以文档为中心的功能进行了优化。文档存储区会在向量存储区中存储与向量相关的内容。
如需了解详情,请参阅 LlamaIndex 文档存储区产品文档。
索引存储区有助于管理索引,以实现快速查询和数据检索,例如摘要、关键字和树索引。LlamaIndex 中的 Index
是仅用于存储节点元数据的轻量级存储空间。更新节点元数据时,无需对完整节点或文档中的所有节点重新编制索引(读取嵌入生成)。
如需了解详情,请参阅 LlamaIndex 索引存储区。
存储文档和索引
关于文档存储区的 AlloyDB Omni 笔记本介绍了如何使用 AlloyDB Omni,通过 AlloyDBDocumentStore
和 AlloyDBIndexStore
类存储文档和索引。您将了解如何实现完成以下任务:
- 使用
AlloyDBEngine.from_connection_string()
创建AlloyDBEngine
以连接到 AlloyDB Omni 实例。 - 为 DocumentStore 和 IndexStore 创建表。
- 初始化默认
AlloyDBDocumentStore
。 - 设置
AlloyDBIndexStore
。 - 将文档添加到
Docstore
。 - 使用具有多个索引的文档存储区。
- 加载现有索引。
聊天存储区
聊天存储区会为聊天式应用保留对话记录和上下文,从而实现个性化互动。聊天存储区提供一个中央存储库,用于存储和检索对话中的聊天消息,从而使 LLM 能够保留上下文,并根据正在进行的对话提供相关性更高的回答。
大语言模型默认是无状态的,这意味着它们不会保留之前的输入,除非每次都明确提供这些输入。通过使用聊天存储区,您可以保留对话的上下文,从而让模型能够随着时间的推移生成相关性和连贯性更高的回答。
LlamaIndex 中的内存模块可高效存储和检索对话情境,从而允许在聊天应用中进行更加个性化且情境感知能力更强的互动。您可以将 LlamaIndex 中的内存模块与 ChatStore 和 ChatMemoryBuffer 集成。如需了解详情,请参阅 LlamaIndex 聊天存储区。
存储聊天记录
关于聊天存储区的 AlloyDB Omni 笔记本介绍了如何使用 AlloyDB for PostgreSQL
通过 AlloyDBChatStore
类存储聊天记录。您将了解如何实现完成以下任务:
- 使用
AlloyDBEngine.from_connection_string()
创建AlloyDBEngine
以连接到 AlloyDB Omni 实例。 - 初始化默认
AlloyDBChatStore
。 - 创建
ChatMemoryBuffer
网址。 - 创建 LLM 类实例。
- 在没有存储上下文的情况下使用
AlloyDBChatStore
。 - 将
AlloyDBChatStore
与存储上下文搭配使用。 - 创建和使用聊天引擎。
文档读取器
文档读取器可高效地从 AlloyDB Omni 检索数据并将其转换为与 LlamaIndex 兼容的格式以编制索引。文档读取器接口提供了一些方法,用于以 Documents
的形式来源加载数据。
文档是一个用于存储一段文本和关联元数据的类。您可以使用文档读取器加载要存储在文档存储区中或用于创建索引的文档。
如需了解详情,请参阅 LlamaIndex 文档读取器。
以文档形式检索数据
关于文档读取器的 AlloyDB Omni 笔记本介绍了如何使用 AlloyDB Omni,通过 AlloyDBReader
类以文档形式检索数据。您将了解如何完成以下任务:
- 使用
AlloyDBEngine.from_connection_string()
创建AlloyDBEngine
以连接到 AlloyDB Omni 实例。 - 创建
AlloyDBReader
。 - 使用
table_name
参数加载文档。 - 使用 SQL 查询加载文档。
- 设置页面内容格式。
- 加载文档。