本頁面說明如何使用與 AlloyDB Omni 整合的 LlamaIndex,建構採用 LLM 的應用程式。我們提供 GitHub 上的筆記本連結,協助您探索方法或開發應用程式。
LlamaIndex 是一種生成式 AI 自動調度管理架構,可讓您將資料來源與大型語言模型 (LLM) 連結及整合。您可以使用 LlamaIndex 建構應用程式,透過自然語言查詢存取及查詢私人或特定領域的資料。
LlamaIndex 可做為自訂資料與 LLM 之間的橋樑,協助開發具備檢索增強生成 (RAG) 功能的知識助理應用程式。
LlamaIndex 著重於結構化文件管理,可簡化索引和擷取作業,因此非常適合以文件為中心的應用程式。這個架構提供最佳化的查詢機制,可提升資訊存取速度和相關性,並提供強大的中繼資料處理功能,方便進行細微的篩選。
如要進一步瞭解 LlamaIndex 架構,請參閱 LlamaIndex 產品說明文件。
LlamaIndex 元件
AlloyDB Omni 提供下列 LlamaIndex 介面:
- 向量儲存區
- 文件儲存庫
- Index Stores
- Chat 商店
- 文件讀取者
請參閱 AlloyDB Omni 快速入門導覽課程,瞭解如何搭配使用 LlamaIndex。
向量儲存區
這項 LlamaIndex 整合功能可讓您運用 AlloyDB Omni 強大且可擴充的特性,儲存及管理 LlamaIndex 資料。結合 LlamaIndex 的索引和查詢功能,以及 AlloyDB Omni 的高效能和可靠性,即可建構更有效率且可擴充的 LLM 輔助應用程式。
LlamaIndex 會將文件 (包括 doc、文字和 PDF) 分解為稱為「節點」的文件元件。VectorStore 只能包含擷取節點內容的嵌入向量和節點文字。節點包含文字內容、向量嵌入和中繼資料。您可以對這些中繼資料欄位套用篩選器,將節點擷取作業限制為符合指定中繼資料條件的節點。
如要在 AlloyDB Omni 中使用向量儲存庫,請使用 AlloyDBVectorStore
類別。詳情請參閱「LlamaIndex 向量儲存空間」。
使用 AlloyDBVectorStore 類別儲存向量嵌入
向量儲存區的 AlloyDB Omni 筆記本會說明如何執行下列操作:
- 建立
AlloyDBEngine
,使用AlloyDBEngine.from_connection_string()
連線至 AlloyDB Omni 執行個體。 - 初始化資料表,用於儲存向量嵌入。
- 使用任何 Llama Index 嵌入模型建立嵌入類別例項。
- 初始化預設
AlloyDBVectorStore
向量儲存庫。 - 使用 VectorStoreIndex 從向量儲存庫建立及查詢索引。
- 建立自訂向量儲存空間,用於儲存及篩選中繼資料。
- 新增 ANN 索引,縮短搜尋延遲時間。
文件和索引儲存庫
LlamaIndex 文件儲存庫整合功能可管理結構化文件儲存和擷取作業,並針對 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 會保留對話記錄和對話式應用程式的脈絡,提供個人化互動體驗。對話儲存庫提供中央存放區,可儲存及擷取對話中的訊息,讓 LLM 維持脈絡,並根據進行中的對話提供更相關的回覆。
大型語言模型預設為無狀態,也就是說,除非每次都明確提供先前的輸入內容,否則模型不會保留這些內容。使用對話儲存空間可保留對話內容,讓模型隨著時間生成更相關且連貫的回覆。
LlamaIndex 的記憶體模組可有效儲存及擷取對話內容,讓聊天應用程式提供更個人化且具情境感知的互動。您可以在 LlamaIndex 中整合記憶體模組,搭配 ChatStore 和 ChatMemoryBuffer 使用。詳情請參閱「LlamaIndex Chat Stores」。
儲存即時通訊記錄
「Chat Stores」的 AlloyDB Omni 筆記本會說明如何使用 AlloyDB for PostgreSQL
,透過 AlloyDBChatStore
類別儲存對話記錄。您將瞭解如何執行下列操作:
- 建立
AlloyDBEngine
,使用AlloyDBEngine.from_connection_string()
連線至 AlloyDB Omni 執行個體。 - 初始化預設
AlloyDBChatStore
。 - 建立
ChatMemoryBuffer
。 - 建立 LLM 類別例項。
- 在沒有儲存空間情境的情況下使用
AlloyDBChatStore
。 - 搭配儲存空間內容使用
AlloyDBChatStore
。 - 建立及使用 Chat Engine。
文件讀取者
Document Reader 可有效率地從 AlloyDB Omni 擷取資料,並轉換為 LlamaIndex 相容格式以建立索引。Document Reader 介面提供的方法可從來源載入資料,並轉換為 Documents
。
Document 類別會儲存一段文字和相關聯的中繼資料。您可以使用「文件讀取器」載入要儲存在「文件儲存區」的文件,或用於建立索引。
詳情請參閱 LlamaIndex 文件讀取器。
以文件形式擷取資料
Document Reader 的 AlloyDB Omni 筆記本說明如何使用 AlloyDB Omni,透過 AlloyDBReader
類別將資料擷取為文件。您將瞭解如何執行下列操作:
- 建立
AlloyDBEngine
,使用AlloyDBEngine.from_connection_string()
連線至 AlloyDB Omni 執行個體。 - 建立
AlloyDBReader
。 - 使用
table_name
引數載入文件。 - 使用 SQL 查詢載入文件。
- 設定網頁內容格式。
- 載入文件。