使用 LlamaIndex 開始使用無伺服器 AI 聊天與 RAG
使用由 LlamaIndex、Azure Functions 和無伺服器技術管理的數據,簡化 RAG 的 AI 應用程式開發。 這些工具會自動管理基礎結構和調整,讓您專注於聊天機器人功能。 LlamaIndex 會一路處理數據管線,從擷取到串流回應。
架構概觀
應用程式流程包括:
- 使用聊天介面輸入提示。
- 透過 HTTP 呼叫將使用者的提示傳送至無伺服器 API。
- 接收使用者的提示,然後使用 LlamaIndex 架構來處理和串流回應。 無伺服器 API 會使用引擎來建立 Azure OpenAI 大型語言模型 (LLM) 的連線,以及來自 LlamaIndex 的向量索引。
下圖顯示聊天應用程式的簡單結構:
此範例會使用 LlamaIndex 來產生內嵌,並將其儲存在自己的向量存放區中。 LlamaIndex 也提供 與其他向量存放區的整合, 包括 Azure AI 搜尋。 此範例不會示範該整合。
此架構中的 Azure 在哪裡?
應用程式的架構依賴下列服務和元件:
- Azure OpenAI 代表我們傳送用戶查詢的 AI 提供者。
- LlamaIndex 是一種架構,可協助我們擷取、轉換和向量化內容(PDF 檔案),並從數據建立搜尋索引。
- Azure Container Apps 是裝載應用程式的容器環境。
- Azure 受控識別 可協助我們確保類別安全性最佳,並消除身為開發人員來處理認證和 API 金鑰的需求。
LlamaIndex 會管理從擷取到擷取的數據
若要使用 LlamaIndex 實作 RAG(擷取增強世代)系統,請使用指定的 LlamaIndex 功能來識別下列重要步驟:
處理 | 描述 | LlamaIndex |
---|---|---|
資料擷取 | 從 PDF、API 或資料庫等來源匯入數據。 | SimpleDirectoryReader |
區塊檔 | 將大型檔分解成較小的區塊。 | SentenceSplitter |
向量索引建立 | 建立向量索引,以便進行有效率的相似性搜尋。 | VectorStoreIndex |
遞歸擷取 (選擇性) 從索引 | 使用階層式擷取來管理複雜的數據集。 | |
轉換成查詢引擎 | 將向量索引轉換成查詢引擎。 | asQueryEngine |
進階查詢設定 (選擇性) | 針對多代理程式系統使用代理程式。 | |
實作RAG管線 | 定義接受用戶查詢並擷取相關文件區塊的目標函式。 | |
執行擷 | 處理查詢並重新排名檔。 | RetrieverQueryEngine、CohereRerank |
必要條件
開發容器環境可提供完成本文所需的所有相依性。 您可以在 GitHub Codespaces (瀏覽器中) 或使用 Visual Studio Code 在本機執行開發容器。
若要使用本文,您需要下列必要條件:
- Azure 訂用帳戶 - 免費建立一個訂用帳戶
- Azure 帳戶權限 - 您的 Azure 帳戶必須具有 Microsoft.Authorization/roleAssignments/write 權限,例如,使用者存取系統管理員或擁有者。
- 在所需的 Azure 訂用帳戶中授與 Azure OpenAI 的存取權。 目前只有應用程式會授予此服務的存取權。 您可以填妥 https://aka.ms/oai/access 的表單,以申請 Azure OpenAI 的存取權。 如果您遇到問題,請在此存放庫上提出問題,以與我們連絡。
- GitHub 帳戶
開啟開發環境
立即使用已安裝所有相依性的開發環境開始,以完成本文。
GitHub Codespaces 會使用網頁版 Visual Studio Code 作爲使用者介面,執行由 GitHub 管理的開發容器。 如需最直接的開發環境,請使用 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 Developer CLI 命令來刪除 Azure 資源並移除原始程式碼:
azd down --purge
清除開發人員環境
刪除 GitHub Codespaces 環境,可確保您可將您為帳戶取得的每個核心免費時數權利數量最大化。
重要
如需 GitHub 帳戶權利的詳細資訊,請參閱 GitHub Codespaces 每月包含的儲存體和核心時數。
登入 GitHub Codespaces 儀表板 (https://github.com/codespaces)。
找出您目前執行中的 Codespaces,而其來源為
Azure-Samples/llama-index-javascript
GitHub 存放庫。開啟操作功能表 ,
...
針對codespace,然後選取 [ 刪除]。
取得協助
此範例存放庫可提供疑難排解資訊。