目錄
- RAG場景的坑
- 知識等級金字塔
- 初級RAG存在的問題
- 高級RAG
- 索前優化
- 檢索優化
- 檢索后優化
- 優化經驗總結
- 參考
RAG場景的坑
- 晦澀的專業術語
誤區:在專業領域中。許多文獻和資料中充滿了專業術語,這些術語對于非專業人士(甚至是大模型)來說都是難以理解的。
風險:當知識庫內容包含大量專業術語、且文獻錯綜復雜,對術語沒有做出很好的解釋和關聯時,模型可能就會“倒在”第一步。因為它根本無法很好地理解這些術語,更遑論最終輸出正確的答案了。
- 信息提取困難
誤區:有時候,文獻量太大,RAG系統在處理大量文本數據時,它可能無法有效地從中抽取關鍵信息。
風險:如果模型無法從復雜的文獻中提取出核心要點,那么生成的答案可能會缺乏重點,或者包含大量無關緊要的細節,例如,在法律文獻中,關鍵條款往往隱藏在大量法律條文中,模型在檢索時可能會“忽略”,或者一股腦地提取。導致回答要么缺漏重點,要么又多又雜、找不到重點。
- 自相矛盾/不一致的信息
誤區:有時候文獻過多,輸入到RAG系統中的數據可能包含不準確或錯誤的信息。比如,一個醫療的RAG系統,它的目的為醫生和患者在進行詢問時,提供準確的藥品信息。但是,這個系統在知識庫的建立時,收集了多種來源的藥品說明書、臨床試驗報告以及最新的醫學研究論文。就極有可能出現以下情況:
說明書A(來自制造商X,2020年發布):“阿莫西林適用于治療多種細菌感染,如肺炎、咽炎和皮膚感染。,成人每日劑量為500毫克,每日三次。”
最新研究論文C(2023年發表):“最新的臨床研究表明,阿莫西林對某些類型的細菌感染不再有效,因為它可能導致耐藥性。”
風險:生成答案時,可能會出現自相矛盾的回答,或者是每次的回答都不一致,容易誤導用戶。
- 過時內容
誤區:過時內容是指知識庫中的某些信息可能已經不再適用當前的情況。
風險:如果RAG系統提供了過時的信息,那么這些信息可能會導致用戶做出基于過時數據的決策。例如,在技術快速發展的領域,如信息技術或生物醫藥,幾年前的研究成果可能已經不再適用。
- 無關且多余的信息
誤區:無關且多余的信息是指知識庫中包含了一些與當前問題無關或多余的內容。
風險:這些信息可能會干擾模型的判斷,導致生成的答案中包含不必要的細節,從而使答案顯得冗長而不切題。例如,在用戶詢問某一產品的具體規格時,系統卻給出了大量與產品無關的市場營銷材料。
- 與“世界(知識)為敵”
誤區:這種經常出現在一些“軟”知識上,比如公司管理、領導力咨詢等等。在這種知識領域,并沒有唯一的、正確的答案,而是不同的“學派”會有不同的切入點和理論體系。這樣,同一個概念,在私有知識庫和世界知識的說法不同,就可能產出沖突。
風險:模型回答的輸出不穩定。面對“外掛”給到的知識點和自己訓練時就有的數據,大模型容易陷入“本能遷移”,更傾向于用自己訓練時的數據做回答。
知識等級金字塔
并不是所有的知識都是平等的。你需要評估哪些知識“有價值”,而價值的私有知識,才可以稱之為“知識資產”,并放入知識庫之中。
那什么是有價值的知識資產?盡管各領域的知識內容不盡相同,但在實踐中,我們可以遵循金字塔梯度的思路:
- 頂層,核心資產:這應該是公司私有化/專業領域中最為核心、最關鍵的知識內容。也是這個私有知識庫最想給用戶傳遞、最有競爭力的知識體系。例如,一家咨詢公司賴以成名的核心方法論,就是這家公司最核心的知識資產。在RAG的實踐中,一旦涉及到這類范圍的知識理解和輸出,必須要求準確、全面、深入,能夠體現權威性。
- 次層,獨家資產:重要等級比關鍵知識略低,但同樣是私有知識庫中的獨特的資產。這些知識也許會和世界知識有重合,但在私有知識庫中,必須按照私有知識庫中的要求回答。這類知識的一種常見場景就是公司的規章制度/文化內容/績效規則等,世界知識庫也許有大量類似的內容,但是在公司中必須要按照公司的要求進行。因此,對這類知識的解讀也同樣要求準確,且必須以私有知識庫為準,不得混淆世界知識。
- 第三層,普通資產:在實踐中,經常會出現一種情況:“私有”即“世界”。說白了,不管是多私有的知識,它的源頭必然能追溯到人類公有的知識體系中。所以,私有知識庫免不了有一些“其實和世界知識差不多,但表述、范圍上略有差異”的內容。這類其實是最容易和世界知識發生混淆,造成輸出不準確/冗余的“元兇”。因此,這類知識,我們建議不必“敝帚自珍”,在建立知識庫時大刀闊斧地去除即可。
- 第四層,不良資產:包括自相矛盾、過時、無用的信息,這些不良資產,一定要盡早剝離。在進行知識庫的建設時,就不能存在。
初級RAG存在的問題
主要在三個方面面臨挑戰:檢索質量低、生成質量差和增強過程難。
- 檢索質量低:首先使用長文本做索引,不能很好的突出主題,建立索引時,核心知識湮沒在大量無用的信息中,其次,使用用戶原始query做檢索,不能很好的突出其核心訴求,這就導致用戶query和知識索引不能很好的匹配,檢索質量比較差。
- 生成質量差:未檢索到知識或檢索知識質量差時,大模型自主回答私域問題時,容易產生幻覺,或回答內容比較空洞,無法直接使用,知識庫失去了本身的意義。
- 增強過程難:將檢索到的信息與不同任務整合可能具有挑戰性,有時會導致輸出不連貫或不一致。此外,還有一個擔憂是生成模型可能過度依賴增強信息,導致輸出僅僅是復述檢索內容而沒有添加有洞察力或綜合信息。
高級RAG
索前優化
檢索前優化集中在知識切分、索引方式和query改寫的優化上。
知識切分主要把較長的文本按照語義內聚性的分析切成小塊,解決核心知識湮沒以及語義截斷的問題。
索引方式優化技術通過優化數據索引組織方式提升檢索效果。比如去除無效數據或插入某些數據來提高索引覆蓋程度,從而達到與用戶問題的高匹配度問題。
query改寫主要需要理解用戶想表達的意圖,把用戶原始的問題轉換成適合知識庫檢索的問題,從而提高檢索的精準程度。
檢索優化
檢索階段的目標是召回知識庫中最相關知識。通常,檢索基于向量搜索,它計算查詢與索引數據之間的語義相似性。因此,大多數檢索優化技術都圍繞嵌入模型展開:
- 微調嵌入模型,將嵌入模型定制為特定領域的上下文,特別是對于術語不斷演化或罕見的領域。例如,BAAI/bge是一個高性能的嵌入模型,可以進行微調。
- 動態嵌入根據單詞的上下文進行調整,而靜態嵌入則為每個單詞使用單一向量。例如,OpenAI的embeddings-ada-02是一個復雜的動態嵌入模型,可以捕獲上下文理解。
- 除了向量搜索之外,還有其他檢索技術,例如混合搜索,通常是指將向量搜索與基于關鍵字的搜索相結合的概念。如果您的檢索需要精確的關鍵字匹配,則此檢索技術非常有益。
檢索后優化
對檢索到的上下文進行額外處理可以幫助解決一些問題,例如超出上下文窗口限制或引入噪聲,從而阻礙對關鍵信息的關注。在RAG調查中總結的檢索后優化技術包括:
提示壓縮:通過刪除無關內容并突出重要上下文,減少整體提示長度。
重新排序:使用機器學習模型重新計算檢索到的上下文的相關性得分。
優化經驗總結
RAG想做出來比較容易,但想做好還是比較難的,每個步驟都有可能對最終效果產生影響。
- 我們在RAG中也做了大量的探索,比如: 知識切分方面,做了固定字符切分的效果驗證,分析索引噪音點,利用大模型做了大量的降噪處理;
- 在query改寫方面,利用大模型做了更加明確的意圖抽取,并對用戶的query進行降噪的探索;
- 在數據召回方面,embedding模型基于bge、voyage和cohere做了大量的測評,探索向量+分詞的召回策略;
- 在后置處理優化上,做了知識的去重以及rerank的探索等。
RAG的發展會越來越迅速,只要知識依賴和知識更新的問題沒有得到解決,RAG就有其存在的價值和一席之地。
參考
- 阿里云開發者《一文詳談RAG優化方案與實踐》
- RAG實踐篇(一):知識資產的“梯度”
【RAG的6個坑和知識等級分類】
https://www.woshipm.com/aigc/6130455.html