使用 LlamaIndex 建構採用 LLM 的應用程式

本頁面說明一些用途,介紹如何使用與 AlloyDB Omni 整合的 LlamaIndex,建構採用 LLM 的應用程式。我們提供 GitHub 筆記本連結,協助您探索方法或開發應用程式。

LlamaIndex 是生成式 AI 自動化調度管理架構,可讓您連結資料來源,並與大型語言模型 (LLM) 整合。您可以使用 LlamaIndex 建構應用程式,透過自然語言查詢,存取及查詢私人或特定領域資料中的資訊。

LlamaIndex 是自訂資料和 LLM 之間的橋梁,可協助開發具備檢索增強生成 (RAG) 功能的知識助理應用程式。

LlamaIndex 著重於結構化文件管理,可簡化索引和檢索作業,因此非常適合以文件為主的應用程式。這個架構採用最佳化查詢機制,可提高資訊存取速度和關聯性,並提供強大的中繼資料處理功能,可進行精細篩選。

如要進一步瞭解 LlamaIndex 框架,請參閱 LlamaIndex 產品說明文件。

LlamaIndex 元件

AlloyDB Omni 提供下列 LlamaIndex 介面:

  • 向量儲存庫
  • 文件儲存庫
  • 索引儲存庫
  • Chat 商店
  • 文件讀取器

請參閱 AlloyDB Omni 快速入門導覽課程,瞭解如何搭配使用 LlamaIndex。

向量儲存庫

這項 LlamaIndex 整合功能可讓您運用 AlloyDB Omni 強大且可擴充的特性,儲存及管理 LlamaIndex 資料。結合 LlamaIndex 的索引和查詢功能,以及 AlloyDB Omni 的高效能和可靠性,即可建構更有效率且可擴充的大型語言模型應用程式。

LlamaIndex 會將文件 (doc、文字和 PDF) 拆解成稱為節點的文件元件。VectorStore 只能包含擷取節點內容的嵌入向量和節點文字。節點包含文字內容、向量嵌入和中繼資料。您可以對這些中繼資料欄位套用篩選器,限制只擷取符合指定中繼資料條件的節點。

如要在 AlloyDB Omni 中使用向量儲存庫,請使用 AlloyDBVectorStore 類別。詳情請參閱「LlamaIndex 向量儲存庫」。

使用 AlloyDBVectorStore 類別儲存向量嵌入

向量儲存庫的 AlloyDB Omni 筆記本會說明如何執行下列操作:

  • 建立 AlloyDBEngine,使用 AlloyDBEngine.from_connection_string() 連線至 AlloyDB Omni 執行個體。
  • 初始化資料表,用於儲存向量嵌入。
  • 使用任何 LlamaIndex 嵌入模型建立嵌入類別例項。
  • 初始化預設 AlloyDBVectorStore 向量儲存庫。
  • 使用 VectorStoreIndex,從向量儲存庫建立及查詢索引。
  • 建立自訂向量儲存庫,用於儲存及篩選中繼資料。
  • 新增 ANN 索引,縮短搜尋延遲時間。

文件和索引儲存庫

LlamaIndex Document Stores 整合功能可管理結構化文件儲存和檢索,針對 LlamaIndex 以文件為中心的功能進行最佳化。Document Store 則儲存與向量儲存庫中向量相關的內容。

詳情請參閱 LlamaIndex 文件儲存庫產品說明文件。

索引儲存庫可協助管理索引,以便快速查詢及擷取資料,例如摘要、關鍵字和樹狀索引。LlamaIndex 中的 Index 是輕量儲存空間,僅用於節點中繼資料。更新節點中繼資料時,不必重新建立完整節點或文件中所有節點的索引 (讀取嵌入生成)。

詳情請參閱「LlamaIndex 索引儲存庫」。

儲存文件和索引

文件儲存庫的 AlloyDB Omni 筆記本說明如何使用 AlloyDB Omni,透過 AlloyDBDocumentStore 和 AlloyDBIndexStore 類別儲存文件和索引。您會學到下列內容:

  • 建立 AlloyDBEngine,使用 AlloyDBEngine.from_connection_string() 連線至 AlloyDB Omni 執行個體。
  • 為 DocumentStore 和 IndexStore 建立資料表。
  • 初始化預設 AlloyDBDocumentStore。
  • 設定 AlloyDBIndexStore。
  • 將文件新增至 Docstore。
  • 使用具備多個索引的文件儲存庫。
  • 載入現有索引。

Chat 商店

Chat Store 會維護對話式應用程式的對話記錄和情境,提供個人化互動。Chat Stores 提供中央存放區,可儲存及擷取對話中的即時通訊訊息,讓 LLM 根據進行中的對話,維持脈絡並提供更相關的回覆。

大型語言模型預設為無狀態,也就是說,除非每次都明確提供先前的輸入內容,否則模型不會保留這些內容。使用對話儲存庫,即可保留對話脈絡,讓模型隨著時間生成更相關且連貫的回覆。

LlamaIndex 的記憶體模組可有效儲存及擷取對話內容,讓聊天應用程式提供更個人化且符合情境的互動。您可以將 LlamaIndex 的記憶體模組與 ChatStore 和 ChatMemoryBuffer 整合。詳情請參閱「LlamaIndex Chat Stores」。

儲存對話記錄

Chat Stores 的 AlloyDB Omni 筆記本說明如何使用 AlloyDB Omni,透過 AlloyDBChatStore 類別儲存對話記錄。您會學到下列內容:

  • 建立 AlloyDBEngine,使用 AlloyDBEngine.from_connection_string() 連線至 AlloyDB Omni 執行個體。
  • 初始化預設 AlloyDBChatStore。
  • 建立 ChatMemoryBuffer。
  • 建立 LLM 類別例項。
  • 使用 AlloyDBChatStore,不使用儲存空間結構定義。
  • 搭配儲存空間結構定義使用 AlloyDBChatStore。
  • 建立及使用 Chat Engine。

文件讀取器

文件讀取器會有效率地從 AlloyDB Omni 擷取資料,並轉換為與 LlamaIndex 相容的格式,以便建立索引。文件讀取器介面提供方法,可將來源資料載入為 Documents。

Document 類別會儲存一段文字和相關聯的中繼資料。您可以使用文件讀取器載入要儲存在文件儲存庫中的文件,或用於建立索引。

以文件形式擷取資料

文件讀取器的 AlloyDB Omni 筆記本會說明如何使用 AlloyDB Omni,透過 AlloyDBReader 類別擷取資料做為文件。您會瞭解如何執行下列操作:

  • 建立 AlloyDBEngine,使用 AlloyDBEngine.from_connection_string() 連線至 AlloyDB Omni 執行個體。
  • 建立 AlloyDBReader。
  • 使用 table_name 引數載入文件。
  • 使用 SQL 查詢載入文件。
  • 設定頁面內容格式。
  • 載入文件。

後續步驟

- 瞭解如何 [安裝 AlloyDB Omni](/alloydb/omni/linux/current/docs/deploy-vm)。