共用方式為


使用 LlamaIndex 開始使用無伺服器 AI 聊天與 RAG

使用由 LlamaIndex、Azure Functions 和無伺服器技術管理的數據,簡化 RAG 的 AI 應用程式開發。 這些工具會自動管理基礎結構和調整,讓您專注於聊天機器人功能。 LlamaIndex 會一路處理數據管線,從擷取到串流回應。

瀏覽器中聊天應用程式的螢幕快照,其中顯示聊天輸入和回應。

架構概觀

應用程式流程包括:

  • 使用聊天介面輸入提示。
  • 透過 HTTP 呼叫將使用者的提示傳送至無伺服器 API。
  • 接收使用者的提示,然後使用 LlamaIndex 架構來處理和串流回應。 無伺服器 API 會使用引擎來建立 Azure OpenAI 大型語言模型 (LLM) 的連線,以及來自 LlamaIndex 的向量索引。

下圖顯示聊天應用程式的簡單結構:

LlamaIndex RAG 聊天應用程式的架構圖表。

此範例會使用 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 每月包含的儲存體和核心時數

  1. 在 Codespace 中開啟。

    在 GitHub Codespaces 中開啟

  2. 等候 Codespace 開始。 此啟動程序可能需要幾分鐘的時間。

  3. 在畫面底部的終端機中,使用 Azure Developer CLI 登入 Azure。

    azd auth login
    

    完成驗證程式。

  4. 本文中的其餘工作會在此開發容器的內容中進行。

部署和執行

範例存放庫包含您將無伺服器聊天應用程式部署至 Azure 所需的所有程式代碼和組態檔。 下列步驟會逐步引導您完成將範例部署至 Azure 的程序。

部署聊天應用程式至 Azure

重要

在本節中建立的 Azure 資源會產生立即成本,主要是來自 Azure AI 搜尋服務資源。 即使您在命令完整執行之前中斷命令,這些資源仍可能會產生成本。

  1. 若要布建 Azure 資源並部署原始程式碼,請執行下列 Azure 開發人員 CLI 命令:

    azd up
    
  2. 使用下表回答提示:

    提示 回答
    環境名稱 保持簡短和小寫。 新增您的名稱或別名。 例如: john-chat 。 它用來作為資源組名的一部分。
    訂用帳戶 選取要在其中建立資源的訂用帳戶。
    位置 (用於載入) 從清單中選取您附近的位置。
    OpenAI 模型的位置 從清單中選取您附近的位置。 如果有與您的第一個位置相同的位置,請選取該位置。
  3. 等候應用程式部署。 部署可能需要 5-10 分鐘才能完成。

  4. 成功部署應用程式之後,您會看到終端機中顯示的兩個URL。

  5. 選取標示為 Deploying service webapp 的 URL,以在瀏覽器中開啟聊天應用程式。

    顯示 Web 應用程式 URL 的部署命令輸出螢幕快照。

使用聊天應用程式從 PDF 檔案取得答案

聊天應用程式會預先載入 PDF 檔案目錄中國內郵政郵件實體標準的相關信息。 您可以使用聊天應用程式來詢問有關郵寄信件和套件的問題。 下列步驟會逐步引導您完成使用聊天應用程式的程序。

  1. 在瀏覽器中,選取或輸入 將大型套件傳送至法國的成本是多少?

  2. 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 每月包含的儲存體和核心時數

  1. 登入 GitHub Codespaces 儀表板 (https://github.com/codespaces)。

  2. 找出您目前執行中的 Codespaces,而其來源為 Azure-Samples/llama-index-javascript GitHub 存放庫。

    執行中 Codespaces 的螢幕擷取畫面,包括其狀態和範本。

  3. 開啟操作功能表 , ...針對codespace,然後選取 [ 刪除]。

取得協助

此範例存放庫可提供疑難排解資訊

如果您的問題未獲得解決,請將問題記錄至存放庫的 [問題]

後續步驟