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

本頁說明如何使用 LlamaIndex 搭配 PostgreSQL 適用的 Cloud SQL,建構以 LLM 為基礎的應用程式。我們提供 GitHub 上的筆記本連結,協助您探索各種方法或開發應用程式。

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

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

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

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

LlamaIndex 元件

PostgreSQL 適用的 Cloud SQL 提供下列 LlamaIndex 介面:

  • 向量儲存區
  • 文件儲存庫
  • Index Stores
  • Chat 商店
  • 文件讀取者

瞭解如何搭配使用 LlamaIndex 與 PostgreSQL 適用的 Cloud SQL 快速入門

向量儲存區

透過這項 LlamaIndex 整合功能,您可以使用 PostgreSQL 適用的 Cloud SQL 的強大可擴充性,儲存及管理 LlamaIndex 資料。結合 LlamaIndex 的索引和查詢功能,以及 PostgreSQL 適用的 Cloud SQL 的高效能和可靠性,即可建構更有效率且可擴充的 LLM 輔助應用程式。

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

如要在 PostgreSQL 適用的 Cloud SQL 中使用向量儲存區,請使用 PostgresVectorStore 類別。詳情請參閱「LlamaIndex 向量儲存空間」。

使用 PostgresVectorStore 類別儲存向量嵌入

向量儲存空間的 PostgreSQL 適用的 Cloud SQL 說明如何執行下列操作:

  • 初始化表格以儲存向量嵌入
  • 使用任何 Llama Index 嵌入模型建立嵌入類別例項。
  • 初始化預設的 PostgresVectorStore 向量儲存庫。
  • 使用 VectorStoreIndex 從向量儲存庫建立及查詢索引。
  • 建立自訂向量儲存庫,有效儲存及篩選中繼資料。
  • 新增 ANN 索引,縮短搜尋延遲時間。

文件和索引儲存庫

LlamaIndex 文件儲存庫整合功能可管理結構化文件儲存和擷取作業,並針對 LlamaIndex 以文件為中心的功能進行最佳化。文件 儲存空間會儲存與向量儲存空間中向量相關的內容。

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

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

詳情請參閱 LlamaIndex 索引儲存區

儲存文件和索引

Document Stores 的 PostgreSQL 適用的 Cloud SQL 筆記本,說明如何使用 PostgreSQL 適用的 Cloud SQL,透過 PostgresDocumentStorePostgresIndexStore 類別儲存文件和索引。您將瞭解如何執行下列操作:

  • 使用 PostgresEngine.from_instance() 建立 PostgresEngine
  • 為 DocumentStore 和 IndexStore 建立資料表。
  • 初始化預設 PostgresDocumentStore
  • 設定 PostgresIndexStore
  • 將文件新增至 Docstore
  • 使用具有多個索引的文件儲存區。
  • 載入現有索引。

Chat 商店

Chat Store 會保留對話記錄和脈絡,供聊天型應用程式使用,提供個人化互動體驗。對話儲存空間提供中央存放區,可儲存及擷取對話中的訊息,讓 LLM 維持脈絡,並根據進行中的對話提供更相關的回覆。

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

LlamaIndex 的記憶體模組可有效儲存及擷取對話情境,讓聊天應用程式提供更個人化且具情境意識的互動。您可以在 LlamaIndex 中整合記憶體模組,搭配 ChatStoreChatMemoryBuffer 使用。
詳情請參閱 LlamaIndex Chat Stores

儲存即時通訊記錄

PostgreSQL 適用的 Cloud SQL 筆記本適用於 Chat Stores,可說明如何使用 PostgreSQL 適用的 Cloud SQL,透過 PostgresChatStore 類別儲存即時通訊記錄。您將瞭解如何執行下列操作:

  • 使用 PostgresEngine.from_instance() 建立 PostgresEngine
  • 初始化預設 PostgresChatStore.
  • 建立 ChatMemoryBuffer
  • 建立 LLM 類別例項。
  • 在沒有儲存空間情境的情況下使用 PostgresChatStore
  • 搭配儲存空間內容使用 PostgresChatStore
  • 建立及使用 Chat Engine。

文件讀取者

Document Reader 可從 PostgreSQL 適用的 Cloud SQL 快速擷取資料,並轉換為 LlamaIndex 相容格式以建立索引。Document Reader 介面提供從來源載入資料做為 Documents 的方法。Document 是儲存一段文字和相關聯中繼資料的類別。您可以使用 Document Reader 載入要儲存在 Document Store 中的文件,或用於建立索引。

詳情請參閱 LlamaIndex 文件讀取器

以文件形式擷取資料

PostgreSQL 適用的 Cloud SQL 筆記本適用於 Document Reader,說明如何使用 PostgreSQL 適用的 Cloud SQL,透過 PostgresReader 類別以文件形式擷取資料。您將瞭解如何執行下列操作:

  • 使用 PostgresEngine.from_instance() 建立 PostgresEngine
  • 建立 PostgresReader
  • 使用 table_name 引數載入文件。
  • 使用 SQL 查詢載入文件。
  • 設定網頁內容格式。
  • 載入文件。

後續步驟