共用方式為


使用 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 (Retrieval-Augmented Generation) 系統,下列主要步驟會與 LlamaIndex 功能相符:

過程 描述 LlamaIndex
數據擷取 從 PDF、API 或資料庫等來源匯入數據。 SimpleDirectoryReader
區塊檔 將大型檔分解成較小的區塊。 句子分割器
向量索引建立 建立向量索引,以便進行有效率的相似性搜尋。 VectorStoreIndex
遞歸從索引擷取(選擇性) 使用階層式擷取來管理複雜的數據集。
轉換為查詢引擎 將向量索引轉換成查詢引擎。 asQueryEngine
進階查詢設定 (選擇性) 使用代理來構建多代理系統。
實作 RAG 管線 定義接受用戶查詢並擷取相關文件區塊的目標函式。
執行檢索 處理查詢並重新排序文件。 RetrieverQueryEngine、CohereRerank

先決條件

可用的 開發容器 環境,其中包含完成本文所需的所有相依性。 您可以在 GitHub Codespaces(瀏覽器中)或使用 Visual Studio Code 在本機執行開發容器。

若要使用本文,您需要下列必要條件:

開放的開發環境

使用下列指示來部署預先設定的開發環境,其中包含完成本文所需的所有相依性。

GitHub Codespaces 會執行由 GitHub 所管理的開發容器,並以適用於網頁的 Visual Studio Code 作為使用者介面。 為了最簡單直接的開發環境,請使用 GitHub Codespaces,因為它可以預先安裝正確的開發工具和相依性,從而方便您完成本文的操作步驟。

重要

所有 GitHub 帳戶都可以使用 Codespaces 每月最多 60 小時,且有 2 個核心實例。 如需詳細資訊,請參閱 GitHub Codespaces 每月包含的儲存空間和核心時數

  1. 在 codespace 中開啟。

    在 GitHub Codespaces 中開啟

  2. 等候程式空間啟動。 此啟動程式可能需要幾分鐘的時間。

  3. 在畫面底部的終端機中,使用 Azure 開發人員 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 開發人員 CLI 命令來刪除 Azure 資源並移除原始碼:

azd down --purge

清除開發人員環境

刪除 GitHub Codespaces 環境可確保您能充分利用帳戶的免費每核心時數配額。

重要

如需 GitHub 帳戶權利的詳細資訊,請參閱 GitHub Codespaces 每月包含的記憶體和核心時數

  1. 登入 GitHub Codespaces 控制台(https://github.com/codespaces)。

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

    所有執行中 Codespace 的螢幕快照,包括其狀態和範本。

  3. 開啟程式代碼空間的內容選單 ...,然後選取 [刪除]

獲得幫助

此範例存放庫提供 疑難解答資訊。

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

下一步