教學課程:在 Azure AI 搜尋服務中選擇內嵌和聊天模型以進行 RAG
建置在 Azure AI 搜尋服務上的 RAG 解決方案依賴於內嵌模型進行向量化,以及依賴於聊天模型對您的資料進行交談式搜尋。
在本教學課程中,您已:
- 了解 Azure 雲端中的哪些模型可與內建整合搭配使用
- 了解用於聊天的 Azure 模型
- 部署模型並收集程式碼的模型資訊
- 設定搜尋引擎對 Azure 模型的存取
- 了解用於連結非 Azure 模型的自訂技能和向量化工具
如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
必要條件
Azure 入口網站,用來在 Azure 雲端中部署模型和設定角色指派。
Azure 訂用帳戶上的擁有者或使用者存取系統管理員角色,這是建立角色指派所需的角色。 在本教學課程中,您至少使用三個 Azure 資源。 聯機是使用 Microsoft Entra ID 進行驗證,這需要能夠建立角色。 線上至模型的角色指派記載於本文中。 如果您無法建立角色,您可以改用 API 金鑰 。
模型提供者,例如 Azure OpenAI、透過 Azure AI 服務多服務資源或 Azure AI Foundry 的 Azure AI 視覺。
我們在本教學課程中使用 Azure OpenAI。 會列出其他提供者,以便您了解整合向量化的選項。
Azure AI 搜尋服務、基本層或更高層級會提供在角色指派中使用的受控識別。
共用區域。 若要完成本系列中的所有教學課程,該區域必須同時支援 Azure AI 搜尋服務和模型提供者。 請參閱以下的受支援區域:
Azure AI 搜尋服務目前在某些區域中面臨有限的可用性。 若要確認區域狀態,請檢查 Azure AI 搜尋區域清單。
提示
如需重迭區域的清單,請參閱 這篇文章 。
檢閱支援內建向量化的模型
向量化的內容改進了 RAG 解決方案中的查詢結果。 Azure AI 搜尋支援索引管線中的內建向量化動作。 它也支援在查詢時間進行向量化,將文字或影像輸入轉換成向量搜尋的內嵌。 在此步驟中,確定適合您的內容和查詢的內嵌模型。 如果您提供原始向量資料和原始向量查詢,或者您的 RAG 解決方案不包含向量資料,請跳過此步驟。
包含文字到向量轉換步驟的向量查詢必須使用索引編製期間所使用的相同內嵌模型。 如果您使用不同的模型,搜尋引擎不會擲回錯誤,但結果不佳。
為了符合相同模型的需求,請選擇可在索引編製期間透過技能以及在查詢執行期間透過向量化工具參考的內嵌模型。 下表列出技能與向量化工具組。 若要查看如何使用內嵌模型,請直接跳至 建立索引管線 ,以取得呼叫內嵌技能與相符向量化程序的程序代碼。
Azure AI 搜尋服務可為 Azure 雲端中的以下內嵌模型提供技能和向量化工具支援。
用戶端 | 內嵌模型 | 技能 | 向量化工具 |
---|---|---|---|
Azure OpenAI | text-embedding-ada-002, text-embedding-3-large, text-embedding-3-small |
AzureOpenAIEmbedding | AzureOpenAIEmbedding |
Azure AI 視覺 | 多模態 4.0 1 | AzureAIVision | AzureAIVision |
Azure AI Foundry 模型目錄 | Facebook-DinoV2-Image-Embeddings-ViT-Base, Facebook-DinoV2-Image-Embeddings-ViT-Giant, Cohere-embed-v3-english, Cohere-embed-v3-multilingual |
AML 2 | Azure AI Foundry 模型目錄 |
1 支援影像和文字向量化。
2 模型目錄中的已部署模型會透過 AML 端點存取。 我們使用現有的 AML 技能來進行此連接。
除了這裡所列的模型之外,您還可以使用其他模型。 如需詳細資訊,請參閱本文中的使用非 Azure 模型進行內嵌。
注意
內嵌模型的輸入通常是分塊的資料。 在 Azure AI 搜尋服務 RAG 模式中,分塊是在索引器管線中處理的,本系列的另一個教學課程中對此進行了說明。
在查詢時檢閱用於生成式 AI 的模型
Azure AI 搜尋服務沒有聊天模型的整合程式碼,因此您應該選擇您熟悉且符合您需求的 LLM。 您可以修改查詢程式碼來嘗試不同的模型,而無需重建索引或重新執行索引編製管線的任何部分。 檢閱搜尋並產生答案以取得呼叫聊天模型的程式碼。
以下模型通常用於聊天搜尋體驗:
用戶端 | 聊天模型 |
---|---|
Azure OpenAI | GPT-35-Turbo, GPT-4, GPT-4o, GPT-4 Turbo |
GPT-35-Turbo 和 GPT-4 模型已進行了最佳化,可以處理格式化為交談的輸入。
在本教學課程中使用 GPT-4o。 在測試期間,我們發現它不太可能補充自己的訓練數據。 例如,假設查詢「有多少地球被水覆蓋?」,GPT-35-Turbo 會使用其對地球的內建知識回答,指出 71% 的地球被水覆蓋,即使樣本數據未提供該事實也一樣。 相比之下,GPT-4o 以“我不知道”回應(正確)。
部署模型並收集資訊
模型必須透過端點進行部署和存取。 內嵌相關的技能和向量化工具都需要維度數目和模型名稱。
本教學課程系列使用以下模型和模型提供者:
- Azure OpenAI 上的文字內嵌-3-large 以進行內嵌
- Azure OpenAI 上的 GPT-4o 聊天完成
您必須擁有認知服務 OpenAI 參與者或更高權限才能在 Azure OpenAI 中部署模型。
移至 Azure AI Foundry。
選取左側功能表上的 [部署] 。
選取 [部署模型]>[部署基本模型]。
從下拉式清單中選取 文字內嵌-3-large ,並確認選取範圍。
指定部署名稱。 我們建議使用“text-embedding-3-large”。
接受預設值。
選取部署。
針對 gpt-4o 重複上述步驟。
記下模型名稱和端點。 內嵌技能和向量化工具會在內部組合完整的端點,因此您只需要資源 URI。 例如,給定
https://MY-FAKE-ACCOUNT.openai.azure.com/openai/deployments/text-embedding-3-large/embeddings?api-version=2024-06-01
,您應在技能和向量化工具定義中提供的端點為https://MY-FAKE-ACCOUNT.openai.azure.com
。
設定搜尋引擎對 Azure 模型的存取
對於管線和查詢執行,本教學課程會使用 Microsoft Entra ID 來進行驗證並使用角色進行授權。
在 Azure OpenAI 上,為您自己和搜尋服務身分識別指派權限。 本教學課程的程式碼會在本機執行。 對 Azure OpenAI 的要求源自您的系統。 此外,來自搜尋引擎的搜尋結果也會傳遞至 Azure OpenAI。 基於這些原因,您和搜尋服務都需要 Azure OpenAI 的權限。
登入 Azure 入口網站,然後尋找您的搜尋服務。
設定 Azure AI 搜尋服務以使用系統受控識別。
尋找您的 Azure OpenAI 資源。
選取左側功能表上的 [存取控制 (IAM)]。
選取 [新增角色指派]。
選取受控識別,然後選取選取成員。 在下拉式清單中尋找您的搜尋服務的系統受控識別。
接下來,選取 [使用者、群組或服務主體],然後選取 [成員]。 搜尋您的使用者帳戶,然後從下拉式清單中選取它。
請確定您有兩個安全性主體指派給角色。
選取 [檢閱並指派] 以建立角色指派。
若要存取 Azure AI 視覺上的模型,請指派認知服務 OpenAI 使用者。 針對 Azure AI Foundry,指派 Azure AI 開發人員。
使用非 Azure 模型進行內嵌
整合任何內嵌模型的模式是將其包裝在自訂技能和自訂向量化工具中。 本節提供了參考文章的連結。 如需呼叫非 Azure 模型的程式碼範例,請參閱自訂內嵌示範。
用戶端 | 內嵌模型 | 技能 | 向量化工具 |
---|---|---|---|
任意 | 任意 | 自訂技能 | 自訂向量化工具 |