如果您在使用阿里雲百鍊應用的 RAG 功能時遇到知識召回不完整或內容不準確的問題,可以參考本文的建議和樣本以提升 RAG 效果。
1. RAG 工作流程簡介
RAG(Retrieval Augmented Generation,檢索增強產生)是一種結合了資訊檢索和文本產生的技術,能夠在大模型產生答案時利用外部知識庫中的相關資訊。
其工作流程包含解析與切片、向量儲存、檢索召回、產生答案等幾個關鍵階段。

2. RAG 效果最佳化
2.1 準備工作
首先,請確保匯入阿里雲百鍊知識庫的文檔符合以下要求:
- 包含相關知識:如果知識庫中沒有相關知識,那麼大模型大機率無法回答相關問題。解決方案就是更新知識庫,補充相關知識。
-
使用Markdown格式(推薦):PDF內容格式複雜,解析效果可能不佳,建議先轉成文字文件(Markdown/DOC/DOCX等)。例如,您可以使用阿里雲百鍊的DashScopeParse先將PDF轉成Markdown格式,然後再使用大模型整理格式,同樣可以取得不錯的效果。更多說明請參見阿里雲大模型ACP課程的 RAG 章節。
若文檔含插圖,應如何處理
知識庫當前不支援文檔中視頻和音頻內容的解析。
- 內容表達清晰、結構合理、無特殊樣式:文檔的內容排版也會顯著影響 RAG 的效果,具體請參見文檔應如何格式化排版有利於RAG。
- 與提示詞語言一致:如果使用者的提示詞更多使用外語(例如英語),建議您的文檔內容也使用相應語言。如有必要(例如文檔中的專業術語),可進行雙語言或多語言處理。
-
消除實體歧義:對文檔中相同實體的表述進行統一。例如,“ML”、“Machine Learning”和“機器學習”可以統一規範為“機器學習”。
您可以嘗試將文檔輸入到大模型中,讓大模型來協助您統一規範(如果文檔較長,可先將其拆為多個部分,再逐一輸入)。
2.2 解析與切片階段
本段落僅介紹在 RAG 的切片階段,阿里雲百鍊支援最佳化的配置項。首先,您匯入知識庫的文檔會被解析和切片。切片的主要目的是在後續向量化過程中盡量減少幹擾資訊影響,同時保持語義的完整性。因此,您在建立知識庫時所選擇的文檔切分chunk策略會對 RAG 的效果產生很大影響。如果切片方式不當,可能會導致下述問題:
文本切片過短 | 文本切片過長 | 明顯的語義截斷 |
|---|---|---|
切片範例:單個切片僅包含『參考售價:5999』一句,缺失產品名稱等關鍵上下文資訊。 | 切片範例:單個切片同時混合了百鍊 Ace Ultra、百鍊 Zephyr Z9、百鍊 Flex Fold+ 等多款手機的完整介紹,主題相互幹擾。 | 切片範例:切片01 末尾停在『內建10GB RAM 與』,後續配置資訊被強制截斷,導致語義不完整。 |
文本切片過短會出現語義缺失,導致檢索時無法匹配。 | 文本切片過長會包含不相關主題,導致召回時返回無關資訊。 | 文本切片出現了強制性的語義截斷,導致召回時缺失內容。 |
- 在建立知識庫時,文檔切分chunk選擇智能切分。
- 將文檔成功匯入知識庫後,對文本切片的內容進行人工檢查和修正。
2.2.1 智能切分
選擇適合您知識庫的文本切片長度並非易事,因為這必須考慮多種因素,例如:
- 文檔的類型:例如,對於專業類文獻,增加長度通常有助於保留更多上下文資訊;而對於社交類文章,縮短長度則能更準確地捕捉語義。
- 提示詞的複雜度:一般來說,如果使用者的提示詞較複雜且具體,則可能需要增加長度;反之,縮短長度會更為合適。
- 首先利用系統內建的分句標識符將文檔劃分為若干段落。
- 基於劃分的段落,根據語義相關性自適應地選擇切片點進行切分(語義切分),而非根據固定長度進行切分。
2.2.2 修本文本切片內容
當然,在實際切片的過程中,仍然存在一定幾率會出現意外的切分,或者出現其它問題(例如文本中的空格有時切片後會被解析為%20)。
在切片詳情彈窗右上方單擊編輯按鈕,即可對解析異常或截斷的文本切片內容進行修正。
因此,阿里雲百鍊建議您在成功將文檔匯入知識庫後,進行一次人工檢查,以確認文本切片內容的語義完整性和正確性。如果發現意外的切分或其他解析錯誤,您可以直接編輯文本切片進行修正(儲存後,文本切片原有的內容將失效,新的內容將用於知識庫檢索)。
請注意,此處您只是修改了知識庫中的文本切片,並未修改您在資料管理(臨時儲存)中的原文檔或資料表。因此,後續再次匯入知識庫時,仍需您進行人工檢查和修正。
2.3 檢索召回階段
本段落僅介紹在檢索召回階段,阿里雲百鍊支援最佳化的配置項。檢索召回階段面臨主要問題是:難以從知識庫眾多的文本切片中,找出與提示詞最相關且包含正確答案相關資訊的文本切片。在此基礎上進一步細化:
| 問題類型 | 改進策略 |
|---|---|
| 在多輪會話情境中,使用者輸入的提示詞有時可能不夠完整,或者存在歧義。 | 開啟多輪會話改寫,知識庫會自動將使用者的提示詞改寫為更完整的形式,從而更好地匹配知識。 |
| 知識庫中包含多個類別的文檔。希望在A類文檔中檢索時,召回結果中卻包含其他類別(比如B類)的文本切片。 | 建議為文檔添加標籤。知識庫檢索時,會先根據標籤篩選相關文檔。僅文檔搜尋類知識庫支援為文檔添加標籤。 |
| 知識庫中有多篇結構內容相似的文檔,例如都包含“功能概述”。希望在A文檔的“功能概述”中檢索,召回結果中卻包含其他相似文檔中的資訊。 | 提取中繼資料。知識庫會在向量檢索前使用中繼資料進行結構化搜尋,從而精準找到目的文件並提取相關資訊。僅文檔搜尋類知識庫支援建立文檔中繼資料。 |
| 知識庫的召回結果不完整,沒有包含全部相關的文本切片。 | 建議降低相似性閾值,提高召回片段數,以召回一些原本應被檢索到的資訊。 |
| 知識庫的召回結果中包含大量無關的文本切片。 | 建議提高相似性閾值,以排除與使用者提示詞相似性低的資訊。 |
2.3.1 多輪對話改寫
在多輪會話中,假設使用者某次使用了類似“阿里雲百鍊手機X1”這樣提示詞進行提問。看似簡短,卻可能導致 RAG 系統在檢索時缺乏必要的上下文資訊,原因是:
- 一款手機產品通常會有多個代際版本同時在售。
- 對於同一代產品,廠家通常會提供多種儲存容量選項,比如128GB、256GB等。 ...
2.3.2 標籤過濾
本段落內容僅適用於文檔搜尋類知識庫。想象一下,您在使用一些音樂APP時,可能有時會通過歌手名稱來篩選歌曲,從而快速找到同一類(該歌手唱的)歌曲。 類似地,為您的非結構化文檔添加標籤可以引入額外的結構化資訊。這樣應用在檢索知識庫時,會先根據標籤篩選文檔,從而提升檢索的準確性和效率。 目前阿里雲百鍊支援以下兩種方式設定標籤:
- 在上傳文檔時設定標籤:控制台操作步驟請參見匯入資料。
- 在資料管理頁面編輯標籤:對於已上傳的文檔,可單擊文檔右側的标签進行編輯。
-
通過API調用阿里雲百鍊應用時,可以在請求參數
tags中指定標籤。 -
在控制台編輯應用時設定標籤(但本方式僅適用於智能體應用(Agent 1.0))。
請注意,此處的設定將應用於該智能體應用後續的所有使用者問答。
在配置知識庫對話方塊中,選擇知識庫進階配置Tab,在標籤過濾欄位的下拉式清單中勾選需要的標籤(如智能手機、硬體),已選標籤將顯示在輸入框中。
2.3.3 提取中繼資料
本段落內容僅適用於文檔搜尋類知識庫。將中繼資料嵌入文本切片,可以有效增強每個切片的上下文資訊。在特定情境下,這種方法能夠顯著提升文檔搜尋類知識庫的 RAG 效果。 假設以下情境: 某知識庫中有大量手機產品說明文檔,文檔名稱為手機的型號(比如阿里雲百鍊X1、阿里雲百鍊Zephyr Z9等),且所有文檔都包含「功能概述」章節。 當該知識庫未啟用中繼資料時,使用者輸入以下提示詞進行檢索:
點擊測試的召回結果只保證排名,相似值的絕對值大小僅供參考。當絕對值的差別不大時(5%以內),可基本認為召回機率一樣。在未啟用中繼資料時,點擊測試結果顯示:與查詢實體無關的切片1(相似性41%,來自百鍊手機Zephyr29)和切片2(相似性40%,來自百鍊手機Flex Fold+)排名靠前,而目標切片(相似性僅37%,來自百鍊手機X1)排名墊底。 接下來,我們將手機名稱,按照metadata抽取中提到的步驟,設定為中繼資料(相當於讓每篇文檔相關的文本切片帶上各自對應的手機名稱資訊),然後再進行一次相同的測試作為對比。 完成中繼資料配置後,在資料管理列表的操作列單擊Meta資訊按鈕,可查看每個檔案的中繼資料索引值對(例如 name=百鍊手機X1)。 此時,知識庫會在向量檢索前增加一層結構化搜尋,完整過程如下:
- 從提示詞中提取中繼資料 {"key": "name", "value": "阿里雲百鍊手機X1"}。
- 根據提取的中繼資料,找到所有包含“阿里雲百鍊手機X1”中繼資料的文本切片。
- 再進行向量(語義)檢索,找到最相關的文本切片。
2.3.4 調整相似性閾值
當知識庫找到和使用者提示詞相關的文本切片後,會先將它們發送給Rank模型(在建立知識庫的自訂參數設定中)進行重排序,而相似性閾值則用於篩選經過Rank模型重排序後返回的文本切片,只有相似性分數超過此閾值的文本切片才有可能被提供給大模型。

點擊測試建議步驟 | |
| ![]() |
2.3.5 提高召回片段數
召回片段數即多路召回策略中的K值。經過前面的相似性閾值過濾後,如果文本切片數量超過K,系統最終會選取相似性分數最高的 K 個文本切片提供給大模型。也正因為此,不合適的K值也可能會導致 RAG 漏掉正確的文本切片,從而影響大模型產生完整的回答。
比如下面的這個例子,使用者通過以下提示詞進行檢索:
大量實驗結果表明:在諸如“列舉...”、“總結...”,“比較一下X、Y...”等情境中,提供更多高品質的文本切片(例如K=20)給大模型,比僅提供前10個或前5個文本切片效果更好。雖然這樣做可能會引入雜訊資訊,但如果文本切片品質較高的話,大模型通常能夠有效抵消雜訊資訊的影響。您可以在編輯阿里雲百鍊應用時調整召回片段数。 請注意,召回片段數也並非越大越好。因為有時召回的文本切片在拼裝後,其總長度會超出大模型的輸入長度限制,導致部分文本切片被截斷,反而影響了 RAG 的效果。 因此,推薦您選擇智能拼装。這一策略會在不超過大模型最大輸入長度的前提下,儘可能多地為您召回相關的文本切片。
2.4 產生答案階段
本段落僅介紹在產生答案階段,阿里雲百鍊支援最佳化的配置項。至此,大模型已經可以根據使用者的提示詞以及從知識庫檢索召回的內容,產生最終的回答。然而,返回結果有可能還是不及您的預期。
問題類型 | 改進策略 |
|---|---|
大模型並未理解知識和使用者提示詞之間的關係,感覺答案是生硬拼湊的。 | 建議選擇合適的大模型,從而有效地理解知識和使用者的提示詞之間的關係。 |
返回的結果沒有按照要求,或者不夠全面。 | 建議最佳化提示詞模板。 |
返回的結果不夠準確,其中包含了大模型自身的通用知識,並未完全基於知識庫。 | 建議開啟拒識,僅限於根據知識庫檢索到的知識回答。 |
相似的提示詞,希望每次返回的結果相同或不同。 | 建議調整大模型參數。 |
2.4.1 選擇合適的大模型
由於不同大模型在指令遵循、語言支援、長文本、知識理解等方面存在能力差異,可能導致:
模型A未能有效理解檢索到的知識與提示詞之間的關係,從而產生的答案無法準確回應使用者的提示詞。在更換為參數更多或者專業能力更強的模型B後,該問題可能就能得到解決。
您可以在編輯阿里雲百鍊應用時,根據實際需求选择模型。
您可以在編輯阿里雲百鍊應用時,根據實際需求选择模型。建議選擇通義千問的商業模型,例如通義千問Max、通義千問Plus等大模型。這些商業大模型相比開源版本,具備最新的能力和改進。
- 如果只是簡單的資訊查詢總結,小參數量的大模型足以滿足需求,例如
通義千問Turbo。 - 如果您希望RAG能完成較為複雜的邏輯推理,建議選擇參數量更大、推理能力更強的大模型,例如
通義千問Max。 - 如果您的問題需要查閱大量的文檔片段,建議選擇上下文長度更大的大模型,例如
通義千問Plus。 - 如果您構建的 RAG 應用面向一些非通用領域,例如法律領域,建議使用面向特定領域訓練的大模型,例如
通義法睿。
2.4.2 最佳化提示詞模板
我們知道,大模型本身是基於給定的文本來預測下一個Token的。這意味著您可以通過調整提示詞來影響大模型的行為(例如怎樣利用檢索到的知識等),間接提升 RAG 的效果。
以下為您介紹三種比較常見的最佳化方法:
方法一:對輸出的內容進行限定
您可以在提示詞模板中提供上下文資訊、指令以及預期的輸出形式,用於指示大模型完成任務。例如,您可以加入以下輸出指示要求大模型:
| 提示詞模板 | 使用者提示詞和阿里雲百鍊應用返回的結果 |
|---|---|
| 回答以 JSON 形式輸出 9 個欄位(型號、螢幕尺寸、解析度、重新整理率、RAM、儲存、電池容量、網路攝影機光圈值、參考售價範圍),欄位名由模型自行決定,未遵循統一命名規範。 | |
| 回答嚴格按照樣本約定的 4 個英文欄位(product、screen_size、ram_size、battery)輸出 JSON,輸出 token 數顯著降低。 |
${documents}明確分開。
此外,為了保證效果,請確保您的提示詞模板中變數${documents}只出現一次(請參考下方左邊的正確樣本)。
2.4.3 開啟拒識
如果您希望阿里雲百鍊應用返回的結果嚴格基於從知識庫中檢索到的知識,排除大模型自身通用知識的影響,您可以在編輯阿里雲百鍊應用時設定回答範圍為僅知識庫範圍。
對於在知識庫中找不到相關知識的情況,您還可以設定固定回複(自動)。
回答範圍:知識庫 + 大模型知識 | 回答範圍:仅知识库范围 |
回答列出營養早餐、定期團建活動、員工培訓和發展、健康保險和福利、其他福利等 5 類內容,融合了知識庫未必明確記錄的通用福利知識(如醫學保險、HSA 健康儲蓄賬戶等)。 | 回答嚴格限定在知識庫已記錄的範圍內:營養早餐、豐盛午餐、健康晚餐及定期團建活動,不再補充模型通用知識。 |
阿里雲百鍊應用返回的結果將綜合從知識庫中檢索到的知識和大模型自身的通用知識。 | 阿里雲百鍊應用返回的結果將嚴格基於從知識庫中檢索到的知識。 |

抱歉,未找到相關的手機型號。
使用者提示詞和阿里雲百鍊應用返回的結果(命中知識時) | 使用者提示詞和阿里雲百鍊應用返回的結果(未命中知識時) |
|---|---|
命中知識時,應用按知識庫內容詳細列出營養早餐、定期健全狀態檢查、員工培訓和發展、健康保險和福利 4 項福利及其說明。 | 未命中知識時,應用僅返回簡短的基礎福利列表:營養早餐、豐盛午餐、健康晚餐及定期團建活動。 |
2.4.4 調整大模型參數
相似的提示詞,如果您希望每次返回的結果相同或不同,您可以在編輯阿里雲百鍊應用時,修改参数配置來調整大模型參數。
溫度係數可以控制大模型產生內容的隨機性:溫度越高,產生的文本越多樣,反之,產生的文本越確定。
- 具有多樣性的文本,適用於創意寫作(如小說、廣告文案)、頭腦風暴、聊天應用等情境。
- 具有確定性文本,適用於有明確答案(如問題分析、選擇題、事實查詢)或要求用詞準確(如技術文檔、法律文本、新聞報道、學術論文)的情境。
3. 常見問題
文檔應如何格式化排版有利於RAG?
文檔應如何格式化排版有利於RAG?
文檔內容排版建議
- 文檔的各級標題層次分明,各標題下的內容表達清晰。
- 文檔中盡量不要有浮水印。
- 列表中間的某一條之下盡量不要再分級。
- 文檔中盡量不要有表格和圖片(複雜表格會影響整體文檔解析結果)。



- 各標題下內容相對獨立且清晰。
- 無浮水印。
- 標題之下是列表,但列表之下不再分級。
- 無表格、無圖片。

