進階 RAG 策略與 Progress Agentic RAG 選項
RAG 的進階策略
以下列出一些我們針對特定使用情境所發展出的進階策略範例。你可以把這些作法當作靈感,來設計屬於你自己的 RAG 策略。
查詢重述(Rephrasing)
重述使用者的查詢是提升語意搜尋結果品質的常見技巧。這種方法通常不建議用在關鍵字搜尋,因為可能會產生意料之外的結果。
當使用者的查詢表述不佳時,語意搜尋可能無法檢索到最佳的文字區塊。透過定期的查詢重述,可以更好地判斷使用者意圖、優化查詢,並提升從資料來源檢索到最佳文字區塊的機率。
此外,你也可以透過設計專屬的 Prompt 來讓重述更具針對性。
一個經典的例子是多語環境:假設文件都是英文,但你希望使用者能以母語提問。這時候使用多語言的 embedding 模型來索引內容是可行的。
不過,在某些情況下,使用英文 embedding 模型可能更有效率。這種情況下,可以透過一個 Prompt,先將使用者查詢重述成英文,再去檢索英文 embedding。
以標題過濾(Filtering on Titles)
文件形式多樣,有些很廣泛,涵蓋許多不同主題;有些則非常專注,只針對單一議題深入探討。
如果你希望 LLM 使用特定文件,並且知道該文件的標題中包含許多與查詢相關的關鍵字提示,那麼就可以把標題納入檢索文字區塊的過濾條件。
在這種情況下,通常比較有效率的作法是:
1.先只針對標題進行關鍵字搜尋。
2.再從符合條件的文件裡,用語意搜尋與關鍵字搜尋的組合來檢索文字區塊。
自動過濾(Automatic Filtering)
例如,查詢:「披頭四樂團在 2003 年最大的成就是什麼?」
檢索結果可能會找到「Yellow Submarine 是一大成功」,卻沒有提到它實際上發生在 1968 年。從表面上看,這段內容符合大部分查詢參數,但事實上並不正確。
為了避免這種情況,你需要檢視查詢的表述,並提取出可用來作為過濾條件的元素。
接著,將這些條件重新應用到語意搜尋,藉由後設資料(metadata)過濾來縮小搜尋結果範圍,確保只保留真正符合條件的內容。
提升特定來源權重(Boosting Specific Sources)
但實際上,語意搜尋可能會在不那麼可靠的來源中找到與查詢語意最接近的文字區塊,導致有價值的資訊被淹沒,甚至完全沒有浮現出來。
為了確保檢索結果來自可靠來源,可以嘗試將查詢重複執行並分別處理:
- 僅針對可靠來源執行查詢(透過適當的過濾條件)。
- 針對其他來源執行查詢(使用反向過濾)。
將兩組結果合併,並給可信來源的內容較高的權重。這樣一來,可靠來源的檢索結果會在排序中得到提升,讓 LLM 更傾向使用它們來生成答案。
除了透過過濾來指定來源,你也可以利用特定重述 Prompt,讓查詢更符合來源的語言特性。
例如,如果可信來源是法律文件,就可以在 Prompt 中加入法律專業用語,而在針對其他來源時則保持一般用語。
加入注意事項(Injecting Caveats)
但如果你必須使用通用型 LLM,則可以透過加入注意事項(Caveats)的方式來處理。
例如,在金融領域,LLM 可能會混淆「質性寬鬆(qualitative easing)」與「量化寬鬆(quantitative easing)」。
為了避免這種情況,你可以在 Prompt 中加入一個注意事項,說明這兩個詞的定義與差異,並要求 LLM 在生成答案時注意區分。
不過,在金融語境中,可能存在遠不止這兩個容易混淆的專有名詞。如果要在 Prompt 裡逐一列出,會相當繁瑣。
比較有效率的方式是建立一份「注意事項資源文件」,把所有這類注意事項集中在一起。
當使用者提出問題時,可以同時進行一般查詢與針對注意事項資源的關鍵字搜尋,並將檢索到的相關文字區塊加入脈絡,供 LLM 一併參考。
注意:這裡建議使用關鍵字搜尋,因為可以合理假設使用者並不是直接詢問「質性寬鬆與量化寬鬆的差異」,所以相關的注意事項文字區塊不太可能會出現在語意搜尋結果中。
多步驟查詢(Multi-Step Queries)
有時候,你希望答案只來自資訊庫中的某一特定部分;若該部分沒有答案,才再從其他資料中尋找。
舉例來說,如果你的資訊庫包含合約(contracts)、修正案(amendments)和會議記錄(meeting minutes),你可能希望在回答問題時,依下列優先順序來檢索:
1.先檢索修正案
2.若沒有找到有價值的結果,再檢索合約
3.如果合約也沒有有用結果,最後才檢索會議記錄
根據這些步驟收集到的結果,再讓 LLM 生成最終答案。
多步驟查詢也可以搭配自動過濾(Automatic Filtering)使用。
例如,使用者問:「修正案對新政策是怎麼說的?」這種情況下,你就只需要執行第一步(修正案查詢)即可。
想了解更多嗎?
如果您想進一步了解 Agentic RAG (Nuclia),或希望我們協助您導入相關解決方案,歡迎填寫表單與我們聯繫,獲得技術支援與即時交流。
👋 期待與您見面!
Progress Agentic RAG 的實用選項
以上提到的各種策略,都可以透過 Progress Agentic RAG 平台內建的選項來實作。
搜尋選項
Search Options
- features(semantic 和/或 keyword):選擇要執行的搜尋類型
- filters:依後設資料(metadata)縮小搜尋範圍至特定來源
- keyword_filters:限定搜尋結果必須包含特定關鍵字的來源
- autofilter:根據使用者查詢,自動過濾搜尋結果
- top_k:限制檢索文字區塊的數量
- reranker:依使用者查詢重新排序檢索到的文字區塊
- rephrase:將使用者查詢重述,以提升語意搜尋的結果品質
- prompt.rephrase:提供自訂的重述提示(prompt),用來改寫使用者查詢
RAG 與生成選項
RAG & Generation Options
- generative_model:選擇要使用的 LLM
- prompt.user:提供自訂的使用者提示(user prompt),供 LLM 生成答案時使用
- prompt.system:提供自訂的系統提示(system prompt),供 LLM 生成答案時使用
- rag_strategies:
- full_resource:當檢索到文字區塊時,擷取整份文件
- field_extension:當檢索到文字區塊時,一併擷取文件中的其他欄位
- hierarchy:當檢索到文字區塊時,擷取該文件的標題與摘要
- neighboring blocks:當檢索到文字區塊時,一併擷取相鄰文字區塊
- metadata_extension:當檢索到文字區塊時,附加文件的部分後設資料
- prequeries:在主要查詢前先執行額外查詢,用來過濾來源或加入來自語料庫其他部分的額外脈絡
- rag_images_strategies:可將檢索到的文字區塊中所包含的圖片,或該文字區塊所在頁面的完整截圖,一併傳給 LLM 使用。
結果選項
Results Options
- answer_json_schema:產生結構化的 JSON 格式答案,並依脈絡計算特定屬性
- citations:提供檢索到的文字區塊來源
- citation_threshold:調整引用來源的準確度高低
如何使用Progress Agentic RAG來識別知識缺口
RAG Prompt Labs的重要性
Progress Agentic RAG 的 AI 治理與可稽核性優勢
想了解更多嗎?
如果您想進一步了解 Agentic RAG (Nuclia),或希望我們協助您導入相關解決方案,歡迎填寫表單與我們聯繫,獲得技術支援與即時交流。
👋 期待與您見面!