Retrieval-Augmented 產生 (RAG) 模式是一種業界標準的方法,可用來建置使用語言模型來處理模型不知道的特定或專屬數據的應用程式。 此架構很簡單,但設計、實驗及評估適合此架構的RAG解決方案,牽涉到許多受益於嚴格、科學方法的複雜考慮。
本文是一系列簡介。 本系列中的每個文章都涵蓋RAG解決方案設計中的特定階段。
本系列中的其他文章涵蓋下列考慮:
- 如何判斷評估期間要使用的測試檔和查詢
- 如何選擇區塊化策略
- 如何判斷您應該擴充哪些區塊以及如何擴充它們
- 如何選擇正確的內嵌模型
- 如何設定搜尋索引
- 如何判斷哪些搜尋,例如向量、全文檢索、混合式和手動多個搜尋,您應該執行
- 如何評估每個步驟
RAG 架構
RAG 應用程式流程
下列工作流程描述 RAG 應用程式的高階流程。
- 使用者會在智慧型手機應用程式使用者介面中發出查詢。
- 智慧型應用程式會呼叫協調器。 您可以使用語意核心、Azure Machine Learning 提示流程或 LangChain 等工具或平台來實作協調器。
- 協調器會決定在 Azure AI 搜尋上執行的搜尋,併發出查詢。
- 協調器會封裝查詢中前 N 個 結果。 它會將頂端結果和查詢封裝為提示內的內容,並將提示傳送至語言模型。 協調器會傳回智慧型手機應用程式的回應,讓用戶可讀取。
RAG 數據流
下列工作流程描述數據管線的高階流程,可提供RAG應用程式的地面數據。
- 檔會推送或提取至數據管線。
- 數據管線會完成下列步驟,個別處理每個檔:
- 區塊檔:將檔細分成語意相關的部分,理想情況下具有單一概念或概念。
- 擴充區塊:新增管線根據區塊中的內容所建立的元數據欄位。 數據管線會將元數據分類為離散欄位,例如標題、摘要和關鍵詞。
- 內嵌區塊:使用內嵌模型來向量化區塊,以及用於向量搜尋的任何其他元數據欄位。
- 保存區塊:將區塊儲存在搜尋索引中。
RAG 設計和評估考慮
設計RAG解決方案時,您必須做出各種實作決策。 下圖說明您在做出這些決策時應詢問的一些問題。
下列清單提供您在RAG解決方案開發的每個階段應該執行的簡短描述。
在 準備階段期間,您應該:
- 判斷解決方案網域。 清楚定義RAG解決方案的商務需求。
- 收集代表性測試檔。 收集代表您檔案集合之RAG解決方案的測試檔。
- 收集測試查詢。 收集資訊和測試查詢,併產生檔未涵蓋的綜合查詢和查詢。
在 區塊化階段期間,您應該:
- 瞭解區塊經濟學。 瞭解在評估文字集合之區塊化解決方案的整體成本時要考慮的因素。
- 執行檔分析。 詢問下列問題,以協助您在分析文件類型時做出決策:
- 您要忽略或排除文件中的內容為何?
- 您想要以區塊擷取哪些內容?
- 您要如何將內容區塊化?
- 瞭解區塊化方法。 瞭解區塊化的不同方法,包括句子型、固定大小和自定義方法,或使用語言模型增強、檔版面配置分析和機器學習模型。
- 瞭解文件結構如何影響區塊化。 根據文件擁有的結構程度,選擇區塊化方法。
在 區塊擴充階段期間,您應該:
- 清除區塊。 實作清除方法,以消除不會影響文字意義的差異。 這個方法支援接近比對。
- 擴大區塊。 請考慮使用一般元數據欄位來增強區塊數據,並瞭解其在搜尋中的潛在用途。 瞭解用來產生元數據內容的常用工具或技術。
在 內嵌階段期間,您應該:
- 瞭解內嵌模型的重要性。 內嵌模型可大幅影響向量搜尋結果的相關性。
- 為您的使用案例選擇正確的內嵌模型。
- 評估內嵌模型。 藉由可視化內嵌和計算內嵌距離,評估內嵌模型。
在 資訊擷取階段期間,您應該:
- 建立搜尋索引。 將適當的向量搜尋組態套用至向量欄位。
- 了解搜尋選項。 請考慮不同類型的搜尋,包括向量、全文檢索、混合式和手動多個搜尋。 瞭解如何將查詢分割成子查詢和篩選查詢。
- 評估搜尋。 使用擷取評估方法來評估您的搜尋解決方案。
在 語言模型端對端評估階段期間,您應該:
- 了解語言模型評估計量。 有數個計量,包括基礎性、完整性、使用率和相關性,可用來評估語言模型的回應。
- 瞭解相似度和評估計量。 您可以使用相似度和評估計量來評估RAG解決方案。
- 瞭解文件、報告和匯總的重要性。 記錄超參數和評估結果。 匯總多個查詢的結果,並將結果可視化。
- 使用RAG實驗加速器。 您可以使用 RAG 實驗加速器 GitHub 存放庫,藉由執行多個實驗、保存及評估結果,協助小組找出RAG實作的最佳策略。
結構化方法
由於步驟和變數的數目,請務必遵循RAG解決方案的結構化評估程式。 評估每個步驟的結果,並根據需求進行變更。 您應該獨立評估每個步驟以進行優化,但請記住,最終結果就是您的客戶體驗。 在您決定每個步驟的接受準則之前,請務必先瞭解此程式中的所有步驟。
參與者
本文由 Microsoft 維護。 它最初是由下列參與者所撰寫。
主要作者:
- Raouf Aliouat |軟體工程師II
- Rob Bagby |主要架構中心內容潛在客戶
- prabal Deb |首席軟體工程師
- 查德·基特爾 |首席軟體工程師
- Ritesh Modi |首席工程師
- 里安·普法爾茨 |資深技術計劃經理
- 蘭迪·瑟曼 |首席 AI 雲端解決方案架構師
若要查看非公用LinkedIn配置檔,請登入LinkedIn。