共用方式為


以自有資料為基礎的 Azure OpenAI

使用本文來了解 Azure OpenAI On Your Data,讓開發人員能夠更輕鬆地連線、擷取及建基其企業資料,以快速建立個人化共同作業 (預覽)。 其可增強使用者理解、加速完成工作、提高作業效率,以及協助制定決策。

什麼 Azure OpenAI On Your Data

Azure OpenAI On Your Data 可讓您在自己的企業資料上執行進階 AI 模型,例如 GPT-35-Turbo 和 GPT-4,而不需要定型或微調模型。 您可以在資料上聊天,並更準確地分析您的資料。 您可以指定來源,以根據指定資料來源中可用的最新資訊來支援回應。 您可以透過 Azure OpenAI Studio 中的 SDK 或 Web 型介面,使用 REST API 存取 Azure OpenAI On Data。 您也可以建立連線至資料的 Web 應用程式,以啟用增強的聊天解決方案,或在 Copilot Studio 中將其直接部署為 Copilot (預覽版)。

開始使用

若要開始使用,請使用 Azure OpenAI Studio 連線您的資料來源,並開始詢問問題並針對您的資料進行聊天。

注意

若要開始使用,您必須已獲得 Azure OpenAI 存取權的核准,並使用 gpt-35-turbo 或 gpt-4 模型將 Azure OpenAI 服務資源部署在支援的區域中。

新增資料來源的 Azure 角色型存取控制 (Azure RBAC)

若要完整使用 Azure OpenAI On Your Data,您必須設定一或多個 Azure RBAC 角色。 如需詳細資訊,請參閱安全地使用 Azure OpenAI On Your Data

資料格式和檔案類型

Azure OpenAI On Your Data 支援下列檔案類型:

  • .txt
  • .md
  • .html
  • .docx
  • .pptx
  • .pdf

具有上傳限制,而且有一些文件結構的相關注意事項,及其如何影響來自模型的回應品質:

  • 如果您要將資料從不支援的格式轉換成支援的格式,請確保轉換來最佳化模型回應的品質:

    • 不會造成重大資料遺失。
    • 不會將非預期的雜訊新增至您的資料。
  • 如果您的檔案具有特殊的格式設定,例如資料表和資料行或項目符號點,請使用 GitHub 上可用的資料準備指令碼來準備資料。

  • 對於具有長文字的文件和資料集,您應該使用可用的資料準備指令碼。 指令碼會將資料區塊化,使模型的回應更精確。 此指令碼也支持掃描的 PDF 檔案和影像。

支援的資料來源

您必須連線到資料來源,才能上傳您的資料。 當您要使用您的資料與 Azure OpenAI 模型聊天時,您的資料會在搜尋索引中區塊化,以便根據使用者查詢找到相關資料。

以 V 核心為基礎的 Azure Cosmos DB for MongoDB 中的整合向量資料庫原生支援與 Azure OpenAI On Your Data 整合。

對於某些資料來源,例如從本機電腦 上傳檔案(預覽) 或 Blob 儲存體帳戶中包含的資料 (預覽),則會使用 Azure AI 搜尋。 當您選擇下列資料來源時,您的資料會擷取至 Azure AI 搜尋服務索引。

透過 Azure AI 搜尋服務擷取的資料 描述
Azure AI 搜尋服務 使用現有的 Azure AI 搜尋服務索引搭配 Azure OpenAI On Your Data。
上傳檔案 (預覽) 從本機電腦上傳要儲存在 Azure Blob 儲存體資料庫中的檔案,並擷取至 Azure AI 搜尋服務。
URL/網址 (預覽) URL 中的 Web 內容會儲存在 Azure Blob 儲存體中。
Azure Blob 儲存體 (預覽) 從 Azure Blob 儲存體上傳要擷取至 Azure AI 搜尋服務索引的檔案。

向量索引服務的圖表。

部署至 copilot (預覽) 或 Web 應用程式

將 Azure OpenAI 連線至您的資料之後,您可以使用 Azure OpenAI Studio 中的 [部署至] 按鈕來部署資料。

顯示 Azure OpenAI Studio 中模型部署按鈕的螢幕擷取畫面。

這可讓您選擇部署獨立 Web 應用程式,讓您的使用者使用圖形化使用者介面與聊天模型互動。 如需詳細資訊,請參閱使用 Azure OpenAI Web 應用程式

您也可以直接從 Azure OpenAI Studio 部署至 Copilot Studio (預覽) Copilot,讓您將交談體驗帶入各種頻道,例如:Microsoft Teams、網站、Dynamics 365 和其他 Azure Bot Service 頻道。 Azure OpenAI 服務和 Copilot Studio (預覽) 中使用的租用戶應該相同。 如需詳細資訊,請參閱使用 Azure OpenAI On Your Data 的連線

注意

在 Copilot Studio (預覽) 中部署至 Copilot 僅適用於美國區域。

安全地使用 Azure OpenAI On Your Data

您可以使用 Microsoft Entra ID 角色型存取控制、虛擬網路和私人端點來保護資料和資源,以安全地使用 Azure OpenAI On Data。 您也可以使用 Azure AI 搜尋服務安全性篩選器,來限制可用於回應不同使用者的文件。 請參閱安全地使用 Azure OpenAI On Your Data

最佳作法

使用下列各節來了解如何改善模型所提供的回應品質。

擷取參數

將資料擷取至 Azure AI 搜尋服務時,您可以在 Studio 或 擷取 API 中修改下列其他設定。

區塊大小 (預覽)

在擷取文件之前,Azure OpenAI On Your Data 會先將其分割成區塊來處理文件。 區塊大小是搜尋索引中任何區塊權杖數目的大小上限。 區塊大小和擷取的文件數目一起可控制傳送至模型的提示中包含多少資訊 (權杖)。 一般而言,區塊大小乘以擷取的文件數目等於傳送至模型的權杖總數。

設定您使用案例的區塊大小

預設區塊大小為 1,024 個權杖。 不過,鑒於資料的唯一性,您可能會發現不同的區塊大小 (例如 256、512 或 1,536 個權杖) 更有效率。

調整區塊大小可以增強聊天機器人的效能。 雖然尋找最佳區塊大小需要一些試驗和錯誤,但請從考慮資料集的性質開始進行。 較小的區塊大小通常較適合具有直接事實和較少內容的資料集,而較大的區塊大小可能會對更相關的資訊有所幫助,但可能會影響擷取效能。

小型區塊大小 (如 256) 會產生更細微的區塊。 此大小也表示模型會利用較少的權杖來產生其輸出 (除非擷取的文件數目非常高),而且成本可能較低。 較小的區塊也表示模型不必處理及解譯長段的文字,可減少雜訊和干擾。 不過,這種細微度和焦點會造成潛在的問題。 重要資訊可能不在擷取數最高的區塊中,特別是當擷取的文件數目設定為低值 (例如 3) 時。

提示

請記住,改變區塊大小需要重新擷取您的文件,因此最好先調整執行階段參數,例如嚴格度和擷取的文件數目。 如果您仍未取得所需的結果,請考慮變更區塊大小:

  • 如果您遇到大量諸如回答「我不知道」,但您的文件中應有問題的解答這類的回應,請考慮將區塊大小降低為 256 或 512 以改善細微性。
  • 如果聊天機器人提供一些正確的詳細資料,但卻遺漏其他詳細資料,而在引文中變得很明顯,將區塊大小增加至 1,536 可能有助於擷取更多內容資訊。

執行階段參數

您可以在 Azure OpenAI Studio 和 API 的 [資料參數] 區段中修改下列其他設定。 當您更新這些參數時,不需要重新擷取您的資料。

參數名稱 描述
限制資料的回應 此旗標會設定聊天機器人在處理與資料來源無關的查詢,或搜尋文件不足以取得完整答案時的方法。 停用此設定時,除了您的文件之外,模型也會以自己的知識補充其回應。 啟用此設定時,模型會嘗試只依賴您的文件進行回應。 這是 API 中的 inScope 參數,預設會設定為 true。
擷取的文件 此參數是一個整數,可以設定為 3、5、10 或 20,並控制提供給大型語言模型的文件區塊數目,以制定最終回應。 根據預設,這項設定為 5。 搜尋程序可能會造成雜訊,有時由於區塊化,相關資訊可能會分散在搜尋索引中的多個區塊。 選取前 K 個數字,例如 5,可確保在搜尋和區塊化的固有限制下,模型仍可以擷取相關資訊。 不過,將數字增加得太高可能會分散模型的注意力。 此外,可以有效使用的文件數目上限取決於模型的版本,因為每個文件都有不同的內容大小和處理文件的容量。 如果您發現回應遺漏重要內容,請嘗試增加此參數。 這是 API 中的 topNDocuments 參數,預設為 5。
嚴格 根據系統的相似度分數來決定篩選搜尋文件的積極度。 系統會查詢 Azure 搜尋服務或其他文件存放區,然後決定要提供給 ChatGPT 等大型語言模型的文件。 篩選出無關的文件可大幅提升端對端聊天機器人的效能。 如果有些文件在轉送至模型之前的相似度分數偏低,則會從前 K 個結果中排除。 這是由介於 1 到 5 的整數值所控制。 將此值設定為 1 表示系統會根據使用者查詢的搜尋相似度來篩選文件。 相反地,設定為 5 表示系統會積極篩選出文件,並套用非常高的相似度閾值。 如果您發現聊天機器人省略相關資訊,請降低篩選條件的嚴格性 (將值設定為接近 1),以包含更多文件。 相反地,如果無關的文件分散回應的注意力,請增加閾值 (將值設定為接近 5)。 這是 API 中的 strictness 參數,預設會設定為 3。

未引用的參考

模型可以針對從資料來源擷取的文件,在 API 中傳回 "TYPE":"UNCITED_REFERENCE" 而不是 "TYPE":CONTENT,但不包含在引文中。 這對於偵錯很有用,且您可以修改上述的嚴格性擷取的文件執行階段參數來控制此行為。

系統訊息

您可以在使用 Azure OpenAI On Your Data 時定義系統訊息,以引導模型的回覆。 此訊息可讓您在 Azure OpenAI On Your Data 使用的擷取擴增生成 (RAG) 模式之上自訂回覆。 除了內部基底提示之外,系統訊息也會用來提供體驗。 為了支援這項功能,我們會在特定數目的權杖之後截斷系統訊息,以確保模型可以使用您的資料回答問題。 如果您要在預設體驗之外定義額外的行為,請確定系統提示詳盡,並且說明確切的預期自訂。

選取 [新增資料集] 之後,您可以使用 Azure OpenAI Studio 中的 [系統訊息] 區段,或 role_informationAPI 中的 參數

顯示 Azure OpenAI Studio 中系統訊息選項的螢幕擷取畫面。

潛在的使用模式

定義角色

您可以定義您需要小幫手的角色。 例如,如果您要建置支援 Bot,您可以新增「您是專家事件支援小幫手,可協助使用者解決新的問題。」

定義所擷取的資料類型

您也可以新增您提供給小幫手的資料本質。

  • 定義資料集的主題或範圍,例如「財務報告」、「學術論文」或「事件報告」。 例如,針對技術支援,您可以新增「您可以使用所擷取文件中類似事件的資訊來回答查詢。」
  • 如果您的資料具有特定特性,您可以將這些詳細資料新增至系統訊息。 例如,如果您的文件為日文,您可以新增「您擷取了日文文件,且您應該以日文仔細閱讀,並使用日文來回答。」
  • 如果您的文件包含如財務報告中資料表的結構化資料,您也可以在系統提示字元中新增此事實。 例如,如果您的資料具有資料表,您可以新增「您是以與財務結果相關的資料表形式取得資料,您應該逐行讀取資料表行,以執行計算來回答使用者問題。」

定義輸出樣式

您也可以定義系統訊息來變更模型的輸出。 例如,如果您想要確保助理答案是使用法文,您可以新增如下提示 「您是協助了解法文的使用者尋找資訊的 AI 小幫手。使用者的問題可以是英文或法文。請仔細閱讀擷取的文件,並以法文回答。請將文件中的知識翻譯成法文,以確保所有答案皆為法文。」

重申重要行為

Azure OpenAI On Your Data 的運作方式是透過以提示形式將指示傳送至大型語言模型,以使用您的資料回應使用者查詢。 如果某個行為對應用程式很重要,您可以重複系統訊息中的行為,以提高其精確度。 例如,若要引導模型僅依據文件回答,您可以新增「請只使用擷取的文件回答,而不使用您的知識。請針對答案中的每個宣告產生引文,以擷取文件。如果無法使用擷取的文件回答使用者問題,請說明文件與使用者查詢相關的原因。在任何情況下,請勿使用您自己的知識進行回答。」

提示工程技巧

提示工程有許多技巧,可供您嘗試來改善輸出。 其中一個範例是思維鏈提示,您可以在其中新增「讓我們逐步思考所擷取文件中的資訊,以回答使用者查詢。從文件逐步將相關知識擷取至使用者查詢,並從相關文件擷取到的資訊由下而上形成答案。」

注意

系統訊息可用來根據擷取的文件修改 GPT 小幫手回應使用者問題的方式。 這不會影響擷取程序。 如果您想要提供擷取程序的指示,最好將這些程序包含在問題中。 系統訊息僅具指導作用。 模型可能不會遵守指定的每個指令,因為其已參考特定行為,例如客觀性,並避免使用爭議性語句。 如果系統訊息與這些行為衝突,則可能會發生非預期的行為。

最大回應

設定每個模型回應的權杖數目限制。 Azure OpenAI On Your Data 的上限為 1500。 這相當於在 API 中設定 max_tokens 參數。

限制資料的回應

此選項鼓勵模型僅使用您的資料來回應,並預設為已選取。 如果您取消選取此選項,模型可能會更傾向於套用其內部知識來回應。 根據您的使用案例和情節來判斷正確的選取範圍。

與模型互動

使用下列做法在與模型聊天時獲得最佳結果。

交談記錄

  • 開始新的交談 (或詢問與先前交談無關的問題) 之前,請清除聊天記錄。
  • 若在第一個交談回合和後續回合之間針對相同問題取得不同的回應,則可能是因為交談記錄會變更模型的目前狀態。 如果您收到不正確的回答,請將其回報為品質錯誤。

模型回應

  • 如果您對特定問題的模型回應不滿意,請嘗試讓問題更具體或更泛型,以了解模型回應的方式,並據以重新架構您的問題。

  • 已顯示思維鏈提示,讓模型針對複雜問題/工作有效地產生所需的輸出。

問題長度

避免詢問過長的問題,並盡可能將問題細分成多個問題。 GPT 模型對於可接受的權杖數目具有限制。 權杖限制會計入:使用者問題、系統訊息、擷取的搜尋文件 (區塊)、內部提示、交談記錄 (若有),以及回應。 問題超過權杖限制時將會被截斷。

多語言支援

  • 目前,Azure OpenAI On Data 中的關鍵字搜尋和語意搜尋支援查詢的語言與索引中的資料相同。 例如,如果您的資料是日文,則輸入查詢也必須使用日文。 若要擷取跨語言文件,建議您建立啟用向量搜尋的索引。

  • 為了協助改善資訊擷取和模型回應的品質,建議您啟用下列語言的語意搜尋:英文、法文、西班牙文、葡萄牙文、義大利文、德文、中文(Zh)、日文、韓文、俄文、阿拉伯文

  • 建議您使用系統訊息來通知模型您的資料是另一種語言。 例如:

  • *「*您是 AI 小幫手,設計目的是協助使用者從擷取的日文文件中擷取資訊。請先仔細審查日文文件後,再制定回應。使用者的查詢會以日文顯示,且您也必須以日文回應。」

  • 如果您有使用多種語言的文件,建議您為每個語言建置新的索引,並將其個別連線至 Azure OpenAI。

串流資料

您可以使用 stream 參數傳送串流要求,允許以累加方式傳送和接收資料,而不需要等待整個 API 回應。 這可以改善效能和使用者體驗,特別是針對大型或動態資料。

{
    "stream": true,
    "dataSources": [
        {
            "type": "AzureCognitiveSearch",
            "parameters": {
                "endpoint": "'$AZURE_AI_SEARCH_ENDPOINT'",
                "key": "'$AZURE_AI_SEARCH_API_KEY'",
                "indexName": "'$AZURE_AI_SEARCH_INDEX'"
            }
        }
    ],
    "messages": [
        {
            "role": "user",
            "content": "What are the differences between Azure Machine Learning and Azure AI services?"
        }
    ]
}

交談記錄可獲得更好的結果

當您與模型聊天時,提供聊天的記錄可協助模型傳回更高品質的結果。 您不必在 API 要求中包含小幫手訊息的 context 屬性,以提升回應品質。 如需範例,請參閱 API 參考文件

函式呼叫

某些 Azure OpenAI 模型可讓您定義 tools 和 tool_choice 參數,以啟用函式呼叫。 您可以透過 REST API /chat/completions設定函式呼叫。 如果要求中同時有 tools資料來源,則會套用下列原則。

  1. 如果 tool_choicenone,則會忽略工具,且只會使用資料來源來產生答案。
  2. 否則,如果 tool_choice 未指定或指定為 auto 或物件,則會忽略資料來源,且回應會包含選取的函式名稱和引數 (若有)。 即使模型決定未選取任何函式,仍會忽略資料來源。

如果上述原則不符合您的需求,請考慮其他選項,例如:提示流程小幫手 API

Azure OpenAI On your Data 的權杖使用量估計

Azure OpenAI On Your Data 擷取擴增生成 (RAG) 是一項服務,可運用搜尋服務 (例如 Azure AI 搜尋服務) 和生成 (Azure OpenAI 模型),讓使用者根據提供的資料取得問題解答。

在此 RAG 管線中,高層級有三個步驟:

  1. 將使用者查詢重新格式化為搜尋意圖清單。 若要這麼做,請透過提示來呼叫模型,其中包含指示、使用者問題和交談記錄。 讓我們將此稱為意圖提示

  2. 針對每個意圖,會從搜尋服務擷取多個文件區塊。 根據使用者指定的嚴格度閾值篩選掉不相關的區塊,並根據內部邏輯重新調整/彙總區塊之後,會選擇使用者指定的文件區塊數目。

  3. 這些文件區塊,以及使用者問題、交談記錄、角色資訊和指示會傳送至模型,以產生最終的模型回應。 讓我們將這個稱為生成提示

總共對模型進行兩個呼叫:

  • 若要處理意圖:意圖提示的權杖估計包括使用者問題、交談記錄,以及傳送至模型以生成意圖的指示。

  • 若要產生回應:產生提示的權杖估計包括使用者問題、交談記錄、擷取的文件區塊清單、角色資訊,以及傳送至模型以進行生成的指示。

模型產生的輸出權杖 (意圖和回應) 必須考慮到權杖估計總計。 總結下列全部四個資料行,可提供用於產生回應的平均權杖總計。

模型 生成提示權杖計數 意圖提示權杖計數 回應權杖計數 意圖權杖計數
gpt-35-turbo-16k 4297 1366 111 25
gpt-4-0613 3997 1385 118 18
gpt-4-1106-preview 4538 811 119 27
gpt-35-turbo-1106 4854 1372 110 26

以上數字是以測試資料集為基礎,當中包含:

  • 191 個交談
  • 250 個問題
  • 每個問題 10 個平均權杖
  • 每個交談平均 4 個交談回合

以及下列參數

設定
擷取的文件數 5
嚴格度 3
區塊大小 1024
限制擷取資料的回應? True

這些估計值會根據上述參數所設定的值而有所不同。 例如,如果擷取的文件數目設定為 10,且嚴格性設定為 1,則權杖計數將會上升。 如果傳回的回應不限於擷取的資料,則提供給模型的指示較少,且權杖數目將會降低。

估計值也取決於文件的性質以及所詢問的問題。 例如,如果問題為開放式,則回應可能會較長。 同樣地,較長的系統訊息會導致取用更多權杖的較長提示,且如果交談記錄很長,則提示會更長。

模型 系統訊息的權杖最大值 模型回應的權杖最大值
GPT-35-0301 400 1500
GPT-35-0613-16K 1000 3200
GPT-4-0613-8K 400 1500
GPT-4-0613-32K 2000 6400

上表顯示可用於系統訊息和模型回應的權杖數目上限。 此外,下列項目也會取用權杖:

  • 中繼提示:如果您將模型的回應限制為建基資料內容 (在 API 中為 inScope=True),則權杖數目上限會較高。 否則 (例如,如果 inScope=False) 最大值較低。 此數字會根據使用者問題和交談記錄的權杖長度而變動。 此估計值包含基礎提示和進行擷取的查詢重寫提示。

  • 使用者問題和歷程記錄:變數,但上限為 2,000 個權杖。

  • 擷取的文件 (區塊):所擷取的文件區塊使用的權杖數目取決於多個因素。 這個的上限是擷取的文件區塊數目乘以區塊大小。 不過,其會根據計算其餘欄位之後所使用特定模型的權杖可用權杖來截斷。

    20% 的可用權杖會保留給模型回應。 其餘 80% 的可用權杖包括中繼提示、使用者問題和交談記錄,以及系統訊息。 擷取的文件區塊會使用剩餘的權杖預算。

若要計算輸入 (例如您的問題、系統訊息/角色資訊) 所取用的權杖數目,請使用下列程式碼範例。

import tiktoken

class TokenEstimator(object):

    GPT2_TOKENIZER = tiktoken.get_encoding("gpt2")

    def estimate_tokens(self, text: str) -> int:
        return len(self.GPT2_TOKENIZER.encode(text))
      
token_output = TokenEstimator.estimate_tokens(input_text)

疑難排解

若要針對失敗的作業進行疑難排解,請一律查看 API 回應或 Azure OpenAI Studio 中所指定的錯誤或警告。 以下是一些常見的錯誤和警告:

擷取作業失敗

配額限制問題

無法建立服務 Y 中名稱為 X 的索引。 此服務已超過索引配額。 您必須先刪除未使用的索引、新增索引建立要求之間的延遲,或升級服務以取得更高的限制。

此服務已超過 X 個標準索引子配額。 您目前有 X 個標準索引子。 您必須先刪除未使用的索引子、變更索引子 'executionMode',或升級服務以取得更高的限制。

解決方法:

升級至較高的定價層,或刪除未使用的資產。

前置處理逾時問題

無法執行技能,因為 Web API 要求失敗

無法執行技能,因為 Web API 技能回應無效

解決方法:

將輸入文件細分為較小的文件,然後再試一次。

權限問題

此要求沒有權限執行此作業

解決方法:

這表示無法使用指定的認證來存取儲存體帳戶。 在此情況下,請檢閱傳遞至 API 的儲存體帳戶認證,並確定儲存體帳戶不會隱藏在私人端點後方 (如果未針對此資源設定私人端點)。

每個使用者訊息都可以轉譯成多個搜尋查詢,這些查詢全都會以平行方式傳送至搜尋資源。 當搜尋複本和分割區數目很低時,這可能會產生節流行為。 單一分割區和單一複本可支援的每秒查詢數目上限可能不足。 在此情況下,請考慮增加複本和分割區,或在應用程式中新增睡眠/重試邏輯。 如需詳細資訊,請參閱 Azure AI 搜尋服務文件

區域可用性和模型支援

區域 gpt-35-turbo-16k (0613) gpt-35-turbo (1106) gpt-4-32k (0613) gpt-4 (1106-preview) gpt-4 (0125-preview) gpt-4 (0613) gpt-4o** gpt-4 (turbo-2024-04-09)
澳大利亞東部
加拿大東部
美國東部
美國東部 2
法國中部
日本東部
美國中北部
挪威東部
美國中南部
印度南部
瑞典中部
瑞士北部
英國南部
美國西部

**這是純文字實作

如果您的 Azure OpenAI 資源位於另一個區域,您將無法使用 Azure OpenAI On Your Data。

下一步