使用 LlamaIndex 開始體驗無伺服器 AI 聊天系統,並結合 RAG 技術
使用由
架構概觀
應用程式流程包括:
- 使用聊天介面輸入提示。
- 透過 HTTP 呼叫將使用者的提示傳送至無伺服器 API。
- 接收使用者的提示,然後使用 LlamaIndex 架構來處理和串流回應。 無伺服器 API 使用引擎來與 Azure OpenAI 大型語言模型 (LLM) 和 LlamaIndex 的向量索引建立連線。
下列圖表顯示聊天應用程式的簡單架構:
此範例會使用 LlamaIndex 來產生內嵌,並將其儲存在自己的向量存放區中。 LlamaIndex 也提供與其他向量存放區的
此架構中的 Azure 在哪裡?
應用程式的架構依賴下列服務和元件:
- Azure OpenAI 代表我們傳送使用者查詢的 AI 提供者。
- LlamaIndex 是一種架構,可協助我們擷取、轉換和向量化內容 (PDF 檔案),並從數據建立搜尋索引。
- Azure Container Apps 是裝載應用程式的容器環境。
- Azure 受控識別 協助我們確保一流的安全性,並免除開發人員處理認證和 API 金鑰的需求。
LlamaIndex 會管理從資料匯入到擷取的資料
若要使用 LlamaIndex 實作 RAG (Retrieval-Augmented Generation) 系統,下列主要步驟會與 LlamaIndex 功能相符:
過程 | 描述 | LlamaIndex |
---|---|---|
數據擷取 | 從 PDF、API 或資料庫等來源匯入數據。 | SimpleDirectoryReader |
區塊檔 | 將大型檔分解成較小的區塊。 | 句子分割器 |
向量索引建立 | 建立向量索引,以便進行有效率的相似性搜尋。 | VectorStoreIndex |
遞歸從索引擷取(選擇性) | 使用階層式擷取來管理複雜的數據集。 | |
轉換為查詢引擎 | 將向量索引轉換成查詢引擎。 | asQueryEngine |
進階查詢設定 (選擇性) | 使用代理來構建多代理系統。 | |
實作 RAG 管線 | 定義接受用戶查詢並擷取相關文件區塊的目標函式。 | |
執行檢索 | 處理查詢並重新排序文件。 | RetrieverQueryEngine、CohereRerank |
先決條件
可用的 開發容器 環境,其中包含完成本文所需的所有相依性。 您可以在 GitHub Codespaces(瀏覽器中)或使用 Visual Studio Code 在本機執行開發容器。
若要使用本文,您需要下列必要條件:
- Azure 訂用帳戶 - 免費建立訂用帳戶
- Azure 帳戶許可權 - 您的 Azure 帳戶必須具有 Microsoft.Authorization/roleAssignments/write 許可權,例如 使用者存取系統管理員 或 擁有者。
- GitHub 帳戶。
開放的開發環境
使用下列指示來部署預先設定的開發環境,其中包含完成本文所需的所有相依性。
GitHub Codespaces 會執行由 GitHub 所管理的開發容器,並以適用於網頁的 Visual Studio Code 作為使用者介面。 為了最簡單直接的開發環境,請使用 GitHub Codespaces,因為它可以預先安裝正確的開發工具和相依性,從而方便您完成本文的操作步驟。
重要
所有 GitHub 帳戶都可以使用 Codespaces 每月最多 60 小時,且有 2 個核心實例。 如需詳細資訊,請參閱 GitHub Codespaces 每月包含的儲存空間和核心時數。
部署和執行
範例存放庫包含您將無伺服器聊天應用程式部署至 Azure 所需的所有程式代碼和組態檔。 下列步驟將逐步引導您將範例部署至 Azure。
將聊天應用程式部署至 Azure
重要
本節中建立的 Azure 資源會產生立即成本,主要是來自 Azure AI 搜尋資源。 即使您在命令完全執行之前中斷命令,這些資源仍可能會產生成本。
若要布建 Azure 資源並部署原始程式碼,請執行下列 Azure 開發人員 CLI 命令:
azd up
使用下表回答提示:
提示 答 環境名稱 保持簡短和小寫。 新增您的名稱或別名。 例如, john-chat
。 它用來作為資源群組名稱的一部分。訂閱 選取要在其中建立資源的訂用帳戶。 位置 (用於托管) 從清單中選取您附近的位置。 OpenAI 模型的位置 從清單中選取您附近的位置。 如果某個位置與您的第一個位置相符且可選,請選擇該位置。 等候應用程式部署。 部署可能需要 5-10 分鐘的時間才能完成。
成功部署應用程式之後,您會看到終端機中顯示的兩個URL。
選取標示為
Deploying service webapp
的 URL,以在瀏覽器中開啟聊天應用程式。
使用聊天應用程式從 PDF 檔案取得答案
聊天應用程式會預先載入來自 PDF 檔案目錄的國內郵政郵件實體標準相關信息。 您可以使用聊天應用程式來詢問有關郵寄信件和套件的問題。 下列步驟會逐步引導您使用聊天應用程式。
在瀏覽器中,選取或輸入 將大型包裹傳送至法國需要多少費用?。
LlamaIndex 衍生答案會使用 PDF 檔案並串流回應。
答案來自 Azure OpenAI,其中包含內嵌至 LlamaIndex 向量存放區之 PDF 資料的影響。
清除資源
若要清除資源,有兩件事需要解決:
- Azure 資源,您可以使用 Azure Developer CLI azd 清理這些資源。
- 您的開發人員環境;透過 Visual Studio Code 的 GitHub Codespaces 或 DevContainers。
清除 Azure 資源
本文中建立的 Azure 資源會向您 Azure 訂用帳戶收費。 如果您預計未來不需要這些資源,請將其刪除,以避免產生更多費用。
執行下列 Azure 開發人員 CLI 命令來刪除 Azure 資源並移除原始碼:
azd down --purge
清除開發人員環境
刪除 GitHub Codespaces 環境可確保您能充分利用帳戶的免費每核心時數配額。
重要
如需 GitHub 帳戶權利的詳細資訊,請參閱 GitHub Codespaces 每月包含的記憶體和核心時數。
登入 GitHub Codespaces 控制台(https://github.com/codespaces)。
找出您目前執行的 Codespaces,其來源為 GitHub 的
Azure-Samples/llama-index-javascript
存放庫。開啟程式代碼空間的內容選單
...
,然後選取 [刪除]。
獲得幫助
此範例存放庫提供
如果您的問題未解決,請將問題記錄至存放庫的 問題。