共用方式為


大型語言模型端對端評估

在此階段中,您會評估您的 Retrieval-Augmented 產生(RAG)解決方案,方法是根據包含已擷取基礎數據的預期使用者提示來對照語言模型進行檢視。 到達這個階段之前,您應該先完成上述階段。 您需要收集測試文件和查詢、區塊化測試檔、擴充區塊、內嵌區塊、建立搜尋索引,以及實作搜尋策略。 然後您應該評估每個階段,並確定結果符合您的預期。 此時,您應該確信解決方案會傳回使用者查詢的相關地面數據。

此基礎數據會形成您傳送至語言模型以處理用戶查詢之提示的內容。 提示工程策略 超出本文章的範圍。 本文從基礎數據的角度探討對語言模型進行設計調用的評估。 本文涵蓋常見的語言模型評估指標,以及可在模型評估計算中或作為獨立指標使用的具體相似度和評估指標。

本文不會嘗試提供語言模型計量或相似度和評估計量的完整清單。 您從本文應了解的重點是,各種指標都有各自不同的使用情境。 只有您能全面瞭解您的工作負載。 您和數據科學家必須確定您想要衡量的項目,以及哪些指標是適合的。

本文是一系列文章的一部分。 請先閱讀 簡介

語言模型評估指標

您應該使用數個計量來評估語言模型的回應,包括基礎性、完整性、使用率、相關性和正確性。 因為RAG模式的整體目標是在產生回應時提供相關數據做為語言模型的內容,在理想情況下,上述每個計量都應該得分很高。 不過,視您的工作負載而定,您可能需要優先處理某些任務而非其他任務。

重要

語言模型回應不具決定性,這表示語言模型相同的提示通常會傳回不同的結果。 當您在評估程式中使用語言模型時,請務必瞭解此概念。 當您評估語言模型使用時,請考慮使用目標範圍,而不是單一目標。

基礎性

紮實性,有時稱為 忠實性,衡量回應是否完全基於上下文。 它會驗證回應沒有使用除了內容中存在的資訊以外的資料。 低扎根性指標表示語言模型可能會輸出不正確或沒有意義的回應。

計算基礎性

使用下列方法來計算回應的基礎性:

評估基礎性

低基礎計算表示語言模型不會將區塊視為相關。 您應該評估您是否需要將數據新增至集合、調整區塊化策略或區塊大小,或微調提示。

完整性

完整性 測量回應是否回答查詢的所有部分。 完整性可協助您了解內容中的區塊是否相關、與查詢直接相關,並提供完整的答案。

計算完整度

使用下列方法來計算回應的完整性:

  • AI 協助檢索分數提示
  • 語言模型可協助您測量語言模型響應的品質。 您需要問題、內容和產生的答案,才能進行這項測量。 下列步驟概述高階流程:
    1. 使用語言模型來重新整理、摘要或簡化問題。 此步驟會識別意圖。
    2. 請模型檢查是否能在擷取的文件中找到意圖或該意圖的答案,或者是否可以從這些文件中推導出來。 每個檔的答案可以是「是」或「否」。 開頭為「yes」的回答表示檢索到的文件與意圖或意圖的答案相關。
    3. 計算答案開頭為「是」的意圖比例。
    4. 將分數設為正方形,以醒目提示錯誤。

評估完整性

如果完整性很低,請開始透過評估您的嵌入模型來提高完整性。 將內容中的詞彙與內嵌模型中的詞彙進行比較。 判斷您是否需要特定領域內嵌模型,還是應該微調現有的模型。 下一個步驟是評估您的區塊化策略。 如果您使用固定大小的區塊化,請考慮增加區塊大小。 您也可以評估測試數據是否有足夠的數據可完全解決問題。

使用

使用率 測量回應包含內容中區塊信息的範圍。 目標是要判斷每個區塊在響應中的程度。 低使用率表示您的結果可能與查詢無關。 您應該同時考量使用率和完整性。

計算使用率

使用語言模型來計算使用率。 您可以將包含區塊的響應和內容傳遞至語言模型。 您可以要求語言模型判斷需要答案的區塊數目。

評估使用率

下表提供如何評估完整性和使用率的指引。

高使用率 低使用率
高度完整性 不需要採取任何動作。 在此情況下,傳回的數據會處理問題,但也會傳回無關的區塊。 請考慮減少 top-k 參數值,以產生更可能或具決定性的結果。
低完整性 在此情況下,語言模型會使用您提供的區塊,但無法完全解決問題。 請考慮採取下列步驟:
  • 檢閱您的區塊化策略,以增加區塊內的內容。
  • 藉由增加 top-k 參數值來增加區塊數目。
  • 評估您是否有未傳回的區塊,這些區塊可以提高完整性。 如果是,請調查為何未傳回它們。
  • 請遵循 完整性一節中的指引,
在此情況下,傳回的數據不會完全回答問題,而且您提供的區塊不會完全使用。 請考慮採取下列步驟:
  • 檢閱您的區塊化策略,以增加區塊內的內容。 如果您使用固定大小的區塊化,請考慮增加區塊大小。
  • 微調您的提示以改善回應。

關聯

相關性 測量語言模型響應與查詢相關的程度。

計算相關性

使用下列方法來計算回應的相關性:

注意

您可以使用 Azure AI Foundry 入口網站來執行計算,或使用本文中的指引自行計算相關性。

評估相關性

當相關性很低時,請執行下列工作:

  1. 請確定提供給語言模型的區塊是相關的。
    • 判斷是否有任何相關的可行區塊未被傳回。 如果您發現這些區塊,請評估您的內嵌模型。
    • 如果沒有可行的區塊,請查看相關數據是否存在。 如果這樣做,請評估您的區塊化策略。
  2. 如果傳回相關的區塊,請評估您的提示。

評估方法的分數,例如 完整性和 輸出,應該會產生與相關性分數相似的結果。

正確性

正確性 測量回應準確和事實的程度。

計算正確性

有數種方式可以評估正確性,包括:

  • 語言模型 - 使用語言模型來計算正確性。 您可以將響應傳遞至語言模型,在理想情況下,與用來產生結果的語言模型不同。 您可以要求語言模型判斷回應是否為事實。
  • 外部信任的來源 - 使用外部信任的來源來驗證回應的正確性。 視受信任來源的 API 而定,您可以單獨使用受信任的來源,或使用語言模型。

評估正確性

正確性很低時,請執行下列工作:

  1. 請確定提供給語言模型的區塊是事實正確的,而且沒有數據偏差。 您可能需要更正源檔或內容中的任何問題。
  2. 如果這些段落事實上是正確的,請評估您的提示。
  3. 評估模型中是否存在固有的不精確性,需要利用額外的事實基礎數據或進行微調來加以克服。

相似度和評估計量

您可以在資料科學中使用數百個相似度和評估計量。 某些演算法專屬於定義域,例如語音轉換文字或語言到語言翻譯。 每個演算法都有計算其計量的唯一策略。

數據科學家會決定您想要測量的內容,以及可以用來測量的指標或指標組合。 例如,對於語言翻譯,雙語評估替工(BLEU)計量會檢查機器翻譯和人工翻譯中出現的 n-gram 數量,以檢查翻譯是否使用相同的單字來衡量相似度。 餘弦相似度會使用機器與人工翻譯之間的內嵌來測量語意相似性。 如果您的目標是具有較高的語意相似性,並使用類似字組進行人工翻譯,則您想要具有高餘弦相似性的高BLEU分數。 如果您只關心語意相似性,請專注於餘弦相似性。

下列清單包含常見相似度和評估計量的範例。 請注意,列出的相似度量被描述為詞元型、序列型或編輯型。 這些描述說明計量用來計算相似度的方法。 此清單也包含三種演算法,用來評估從一種語言到另一種語言的文字翻譯品質。

  • 最長的常見子字串 是以序列為基礎的演算法,可尋找兩個字串之間最長的常見子字串。 最長公共子字串百分比是將最長公共子字串的長度,除以較小或較大輸入字串的字元數。
  • 最長的常見子序列 (LCS) 是一種序列型演算法,可尋找兩個字串之間最長的子序列。 LCS 不需要以連續順序排列子序列。
  • 余弦相似性 是以標記為基礎的演算法,可計算兩個向量之間角度的餘弦值。
  • Jaro-Winkler 距離 是以編輯為基礎的演算法,可計算將一個字串轉換成另一個字串的最小步驟數目。
  • 哈明距離 是以編輯為基礎的演算法,可測量將一個字串轉換成另一個字串所需的最小替代數目。
  • Jaccard 索引 是以令牌為基礎的演算法,其計算相似度的方式是將兩個字串的交集除以這些字串的聯集。
  • Levenshtein 距離 是以編輯為基礎的演算法,可藉由判斷將一個字串轉換成另一個字元串所需的單一字元編輯數目下限,來計算相似度。
  • BLEU 會評估由機器自動翻譯後的文本品質。 BLEU 計算機器翻譯與人類優質翻譯之間的 n-gram 重疊情況來進行評估。
  • ROUGE 是一種計量,可比較一種語言的機器翻譯與人為建立的翻譯。 有數個使用 n-gram、skip-bigrams 或最長常見子序列重疊的 ROUGE 變體。
  • METEOR 藉由查看精確匹配、詞幹提取、同義詞、改寫和對齊,評估機器翻譯結果的文本品質。

如需常見相似度和評估計量的詳細資訊,請參閱下列資源:

同時使用多個評估計量

您應該一起使用語言模型評估計量,以進一步瞭解RAG解決方案的執行效果。 以下是使用多個評估計量的數個範例。

基礎性和正確性

基礎性和正確性計量一起有助於判斷系統是否正確地解譯和使用內容。 如果基礎性很高,但正確性很低,則表示語言模型正在使用內容,但提供不正確的回應。 不正確的回應可能是因為內容不當使用或源數據的問題所造成。 例如,如果基礎性為 0.9,但正確性為 0.4,表示系統參考正確的來源數據,但得出了不正確的結論。 請考慮一個回應,內容基於分別提及愛因斯坦與量子力學這個前提,指出「愛因斯坦開發了量子力學」。 此回應有根據,但事實上不正確。

這個度量組合中,可能需要對其中一個優先於另一個,這對您的特定工作負載來說可能非常重要。 例如,如果源數據依設計包含可能虛假的資訊,而且系統在回應中保留該虛假資訊可能很重要。 在這種情況下,您應優先考量務實的回應,而非正確的回應。 在其他情況下,你的工作任務可能會更需要參考上下文數據,但最終正確性仍然是優先考量。

使用率和完整性

使用率和完整性計量一起有助於評估擷取系統的有效性。 高使用率 (0.9) 與低完整性 (0.3) 表示系統擷取準確但不完整的資訊。 例如,當被問及二戰原因時,該系統可能會完美地擷取有關入侵波蘭的資訊,但錯過了其他關鍵因素。 此情境可能表示有包含相關資訊的區塊未被用作上下文的一部分。 若要解決此案例,請考慮傳回更多區塊、評估區塊排名策略,以及評估您的提示。

基礎性和使用率和相似性

基礎性、使用率和相似度計量一起有助於識別系統在轉換資訊時維持真相的方式。 基礎性高(0.9)和使用率高(0.9)但相似度低(0.3)表示系統使用了精確的基礎數據,但在重新表述時效果不佳。 若要解決此案例,請評估您的提示。 修改提示並測試結果。

文件、報告和匯總

您應該記錄您為實驗選擇的超參數和產生的評估計量,以便瞭解超參數如何影響結果。 您應該在細微層級記錄超參數和結果,例如內嵌或搜尋評估,以及在巨集層級,例如測試整個系統端對端。

在設計和開發期間,您可以手動追蹤超參數和結果。 不過,針對整個測試檔和測試查詢集合執行多個評估,可能會牽涉到數百個評估回合和數千個結果。 您應該將評估的參數和結果持續性自動化。

保存超參數和結果之後,您應該考慮製作圖表和圖形,以協助您可視化超參數如何影響計量。 視覺效果可協助您識別哪些選擇會導致效能下降或尖峰。

請務必瞭解設計和評估RAG解決方案不是一次性作業。 您的文件集合會隨著時間而變動。 客戶所提出的問題會隨著時間改變,您對問題類型的理解也會隨著從實際生產中學到的經驗而演變。 您應該反覆檢視此過程。 維護過去評估的檔對於未來的設計和評估工作至關重要。

RAG 實驗加速器

這些文章會逐步引導您完成設計及評估RAG解決方案所涉及的所有階段和設計選擇。 這些文章著重於您應該執行的動作,而不是如何執行。 與Microsoft頂級客戶合作的工程小組開發了稱為 RAG 實驗加速器的工具。 RAG 實驗加速器是最先進的實驗架構。 其設計目的是優化和增強RAG解決方案的開發。 RAG 實驗加速器可讓研究人員和開發人員有效率地探索和微調驅動 RAG 效能的重要元件。 這項創新最終會導致更精確且連貫的文字產生。

RAG 實驗加速器會使用命令行介面,讓您輕鬆地實驗各種內嵌模型、精簡區塊化策略,以及評估不同的搜尋方法,以釋放RAG系統的完整潛力。 它可讓您專注於RAG開發的核心層面,方法是使用簡單的設定來進行超參數微調。

此架構也提供語言模型設定的完整支援。 此支援可協助您達到模型複雜度與產生品質之間的完美平衡。 此工具可協助您簡化實驗程式、節省時間,以及大幅改善RAG模型的效能。

具有視覺應用程式架構的RAG

本文中有關在RAG解決方案中使用媒體的大部分指引,都來自另一個與Microsoft頂級客戶合作的工程小組。 此小組撰寫了一個名為 RAG 視覺應用程式框架的架構。 此架構提供以 Python 為基礎的 RAG 管線,可處理來自 MHTML 檔的文字和影像內容。

架構會從 MHTML 檔案載入、區塊及擴充文字和影像。 然後,它會將區塊內嵌至 Azure AI 搜尋服務。 架構會實作影像增強的快取,以提高處理效率和降低成本。 框架也將評估納入流程的一部分。

貢獻者

本文由 Microsoft 維護。 它最初是由下列參與者所撰寫。

後續步驟