必要條件:收集需求

評估驅動開發工作流程

定義清楚且全面的使用案例需求,是開發成功 RAG 應用程式的第一個重要步驟。 這些需求有兩個主要用途。 首先,它們有助於判定 RAG 是否為指定使用案例的最合適方法。 如果 RAG 確實適合,這些需求可指導解決方案設計、實作和評估決策。 在專案開始時投資時間以收集詳細需求,可避免開發程序後期出現重大挑戰和挫折,並確保產生的解決方案符合終端使用者和利害關係人的需求。 妥善定義的需求為開發生命週期的後續階段提供基礎,我們將逐步解說。

如需本節中的範例程式碼,請參閱 GitHub 存放庫。 您也可以使用存放庫程式代碼作為範本,用來建立您自己的 AI 應用程式。

使用案例是否適合 RAG?

您需要建立的第一件事是 RAG 是否適用於您的使用案例。 鑒於對 RAG 的炒作,大家很容易將其視為任何問題的可能解決方案。 不過,RAG 何時適合以及何時不適合存在細微差別。

RAG 在下列情況下為合適:

  • 因擷取的資訊 (非結構化和結構化) 而無法完全符合 LLM 的內容視窗
  • 從多個來源合成資訊 (例如,從主題的不同文章產生重點的摘要)
  • 根據使用者查詢進行動態擷取是必要的 (例如,指定使用者查詢,判定要從中擷取的資料來源)
  • 使用案例需要根據擷取的資訊產生新內容 (例如,回答問題、提供說明、提供建議)

RAG 在下列情況下可能不合適:

  • 任務不需要查詢特定的擷取。 例如,產生通話文字記錄摘要;即使個別文字記錄在 LLM 提示中以內容的形式提供,擷取的資訊仍會針對每個摘要保持不變。
  • 要擷取的整個資訊集適合 LLM 的內容視窗
  • 需要極低延遲的回應 (例如,當需要回應時,以毫秒為單位)
  • 以規則為基礎的簡單或範本式回應就已足夠 (例如,根據關鍵字提供預先定義答案的客戶支援聊天機器人)

探索的需求

在您確定 RAG 適合使用案例之後,請考慮下列問題,以擷取具體需求。 需求的優先順序如下:

🟢 P0:啟動 POC 之前,必須先定義此需求。

🟡 P1:在進入實際執行環境之前必須定義,但在 POC 期間可以反覆精簡完善。

⚪ P2:最好有需求。

這不是問題的完整清單。 不過,它應該為擷取 RAG 解決方案的主要需求提供紮實的基礎。

使用者體驗

定義使用者如何與 RAG 系統互動,以及預期的回應種類

🟢 [P0] RAG 鏈結的一般要求看起來會是什麼樣子的? 詢問利害關係人是否有潛在使用者查詢的範例。

🟢 [P0] 使用者預期會有哪種回應 (簡短答案、長格式說明、組合或其他內容)?

🟡 [P1] 使用者如何與系統互動? 透過聊天介面、搜尋列或其他形式?

🟡 [P1] hat 聲調或樣式應該產生回應? (正式、交談、技術?)

🟡 [P1] 應用程式如何處理模棱兩可、不完整或無關的查詢? 在這種情況下,是否應該提供任何形式的意見反應或指導?

⚪ [P2] 產生的輸出是否有特定的格式或簡報需求? 除了鏈結的回應之外,輸出是否應該包含任何中繼資料?

資料

判定將用於 RAG 解決方案的資料本質、來源和品質。

🟢 [P0] 有哪些可用來源可供使用?

對於每個資料來源:

  • 🟢 [P0] 資料是結構化還是非結構化?
  • 🟢 [P0] 擷取資料的來源格式為何 (例如 PDF、具有影像/資料表的文件、結構化 API 回應)?
  • 🟢 [P0] 該資料位於何處?
  • 🟢 [P0] 有多少資料可供使用?
  • 🟡 [P1] 資料更新的頻率為何? 應如何處理這些更新?
  • 🟡 [P1] 每個資料來源是否有任何已知的資料品質問題或不一致?

請考慮建立詳細目錄資料表來合併這項資訊,例如:

資料來源 來源 檔案類型 大小 更新頻率
資料來源 1 Unity 目錄磁碟區 JSON 10GB 每日
資料來源 2 公用 API XML NA (API) 即時
資料來源 3 SharePoint PDF、.docx 500MB 每月

效能條件約束

擷取 RAG 應用程式的效能和資源需求。

🟡 [P1] 產生回應的可接受延遲上限為何?

🟡 [P1] 第一個權杖可接受的最大時間為何?

🟡 [P1] 如果輸出正在進行串流,可接受的總延遲是否較高?

🟡 [P1] 計算資源是否有任何成本限制可供推斷?

🟡 [P1] 預期的使用模式和尖峰負載為何?

🟡 [P1] 系統應該能夠處理多少並行使用者或要求? Databricks 會透過使用模型服務自動調整的能力,以原生方式處理這類可擴縮性需求。

評估

建立隨著時間評估及改善 RAG 解決方案的方式。

🟢 [P0] 您想要影響的業務目標/KPI 為何? 什麼是基準值以及什麼事目標?

🟢 [P0] 哪些使用者或利害關係人會提供初始和持續的意見反應?

🟢 [P0] 應該使用哪些計量來評估產生的回應品質? Mosaic AI 代理程式評估提供一組建議使用的計量。

🟡 [P1] RAG 應用程式必須擅長哪些問題集才能進入實際執行環境?

🟡 [P1] [評估集] 是否存在? 是否可以取得使用者查詢的評估集,以及應擷取的基準真相答案和 (選用) 正確支援文件?

🟡 [P1] 如何收集並納入系統的使用者意見反應?

安全性

識別任何安全性和隱私權考量。

🟢 [P0] 是否有需要謹慎處理的敏感性/保密資料?

🟡 [P1] 存取控制是否需要在解決方案中實作 (例如,指定的使用者只能從一組受限制的文件擷取)?

部署

了解 RAG 解決方案如何整合、部署和維護。

🟡 RAG 解決方案應如何與現有的系統和工作流程整合?

🟡 模型應該如何部署、調整及進行版本設定? 本教學課程涵蓋如何使用 MLflow、Unity 目錄、代理程式 SDK 和模型服務,在 Databricks 上處理端對端生命週期。

範例

例如,請考慮這些問題如何套用至 Databricks 客戶支援小組使用的此範例 RAG 應用程式:

區域 考量 需求
使用者體驗 - 互動形式。
- 一般使用者查詢範例。
- 預期的回應格式和樣式。
- 處理模棱兩可或無關的查詢。
- 與 Slack 整合的聊天介面。
- 範例查詢:「如何減少叢集啟動時間?」 「我有什麼樣的支援計劃?」
- 適當時,清除程式碼片段的技術回應,以及相關文件的連結。
- 必要時提供內容相關的建議,並呈報至支援工程師。
資料 - 資料來源的數目和類型。
- 資料格式和位置。
- 資料大小和更新頻率。
- 資料品質與一致性。
- 三個資料來源。
- 公司文件 (HTML、PDF)。
- 已解決的支援票證 (JSON)。
- 社群論壇文章 (差異資料表)。
- 儲存在 Unity 目錄的資料,每周更新一次。
- 資料大小總計:5GB。
- 專用 DOC 與支援小組維護的資料結構和品質一致。
效能 - 可接受延遲上限。
- 成本條件約束。
- 預期的使用方式和並行。
- 延遲需求上限。
- 成本條件約束。
- 預期的尖峰負載。
評估 - 評估資料集可用性。
- 品質計量。
- 使用者意見反應收集。
- 來自每個產品領域的主題專家可協助檢閱輸出,並調整不正確的答案來建立評估資料集。
- 商務 KPI。
- 增加支援票證解決率。
- 減少每個支援票證花費的使用者時間。
- 品質計量。
- LLM 判斷的回答正確性和相關性。
- LLM 評委擷取精確度。
- 使用者附議或反對。
- 意見反應收集。
- 檢測 Slack 已提供讚成/反對。
安全性 - 敏感性資料處理。
- 存取控制需求。
- 擷取來源中不應含有敏感性客戶資料。
- 透過 Databricks Community SSO 進行使用者驗證。
部署 - 與現有系統整合。
- 部署與版本設定。
- 與支援票證系統整合。
- 部署為 Databricks 模型服務端點的鏈結。

後續步驟

開始步驟 1. 複製程式碼存放庫並建立計算

< 上一個:評估驅動開發

下一步:步驟 1。複製存放庫和建立計算 >