成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

對于Advanced RAG系統,你不得不知道的三個階段優化技巧 原創

發布于 2024-11-20 11:52
瀏覽
0收藏

我閱讀了一篇有關"Advanced RAG"的論文,在閱讀這篇論文后,我發現其中的一些概念和技術具有很高的實用價值。接下來,我將結合我在公司的實踐經驗,分享以下RAG系統的三個階段的優化:

  1. 預檢索和數據索引技術
  2. 檢索技術
  3. 檢索后處理預檢索和數據索引技術

使用LLM 增加信息密度

如果來?異構數據源(例如 PDF、抓取的?絡數據、?頻記錄)的?結構化數據沒有經過特定處理,信息密度比較低下,包含不相關的信息和/或噪?,或者有很多信息重復,這使得 RAG 系統在 LLM 上下?窗?中插?更多塊以正確回答??查詢,從?增加令牌的使?和成本。此外,低信息密度會稀釋相關信息,以?于LLM可能會做出錯誤的回應。GPT-4 似乎對這個問題有相對的抵抗? 當使?少于 70,000 個令牌時,但其他模型可能不那么強 ?。

比如我們之前在用爬蟲爬取用戶網頁的時候,但原始 HTML 包含?量不相關的信息(例如 CSS 類、標頭/?腳導航、HTML 標簽、??之間的冗余信息)。即使通過編程?式剝離 CSS 和 HTML,信息密度仍然很低。因此,為了提?我們塊中的信息密度,我們嘗試使? GPT-4 作為事實提取器,從?檔中收集相關信息。刪除 CSS 和 HTML 標簽后,我們使?類似于下?的 LLM 調?來處理每個抓取的??,然后將其分塊并插?到我們的知識庫中:

fact_extracted_output = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[
        {
            "role": "system",
            "content": "You are a data processing assistant. Your task is to extract meaningful information from a scraped web page from sendme. This information will serve as a knowledge base for further customer inquiries. Be sure to include all possible relevant information that could be queried by sendme's customers. The output should be text-only (no lists) separated by paragraphs.",
        },
        {
            "role": "user", 
            "content": "<scraped web page>"
        },
    ],
    temperature=0
)

信息丟失的?險使用大型語言模型(LLMs)來提高信息密度的風險在于,關鍵信息可能會丟失。所以使用這種策略的時候你需要對知識信息密度有個判斷,以防輸入內容已經信息密集而經過LLM處理后丟失了一部分信息。

應用分層索引檢索

通過利? LLM ?成的摘要的多層檢索系統可以提?搜索效率. 分層索引檢索的實踐利??檔摘要 來簡化相關信息的識別,以便?成響應。

這些摘要?檔?持對?型數據庫進??效搜索。與僅創建由?檔塊組成的單個數據索引不同,由 ?檔摘要組成的附加數據索引創建了第?層過濾機制,該機制可從摘要與搜索查詢?關的?檔中 排除?檔塊。

對于Advanced RAG系統,你不得不知道的三個階段優化技巧-AI.x社區

生成假設性問題提高檢索對稱性

LLM 還可以將?檔轉換為適合 RAG 系統中使?的嵌?模型和查詢的格式。?種?法是使? GPT-4 為每個?檔?成假設/可能的問答對列表,然后使??成的問題作為要嵌?檢索的塊。

在檢索時,系統將檢索問題及其對應的答案并提供給LLM。因此,查詢的嵌?可能與?成的問題 的嵌?具有更?的余弦相似度。這種相似性降低了在分塊過程中丟失相關上下?的?險。因此, 每個問答對都是獨?的,理論上將包含所有所需的上下?。

我們在自己的RAG推薦系統中,當用戶上傳一個文檔時,可以指定是否生成QA, 檢索的時候會對QA和chunk同時進行召回,從而提高檢索的對稱性。Langchain和llamaindex 都有對應的QA生成的工具,你可以參考相關文檔,主要是參考它們的prompt. 這里給出一個示例prompt:

generated_question_answer_pairs = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[
        {
            "role": "system",
            "content": "Analyze the provided text or html from Example bank’s website and create questions an Example bank customer could ask a chatbot about the information in the text. You should not create a question if it does not have a useful/informative answer to it that would be helpful for a customer. For every question, please formulate answers based strictly on the information in the text. Use Q: for questions and A: for answers. Do not write any other commentary. Questions should not reference html sections or links. Create as many useful Q&A pairings as possible.",
        },
        {
            "role": "user", 
            "content": "<scraped web page>"
        },
    ],
    temperature=0
)

假設性問題指數的?險和替代?案

使?這種先進的 RAG 技術,信息丟失的?險仍然存在。對于信息密度?的?檔,LLM 可能?法 ?成?夠的問答對來涵蓋??可能對?檔中的信息提出的?系列查詢。

此外,根據?檔存儲的??,使? LLM 處理和轉換每個?檔以緩解查詢?檔不對稱可能會成本過 ?。

最后,根據 RAG 系統的流量,更有效的解決?案可能是反向?法,稱為假設?檔嵌? (HyDE), ?于轉換??查詢?不是?檔。我們將在下?的檢索技術部分進?步討論 HyDE。

測試并優化你的分塊策略

找到最佳分塊策略的唯??法是對您的 RAG 系統進??泛的 A/B 測試。以下是測試時要考慮的?些最重要的因素。

嵌?模型

不同的嵌?模型在不同輸???下具有不同的性能特征。例如,句?轉換器的嵌?模型在嵌?單 個句???表現出?,? text-embedding-ada-002 可以處理更?的輸?。理想情況下,塊?? 應根據所使?的特定嵌?模型進?量?定制,反之亦然。

嵌?內容的性質

根據?檔的信息密度、格式和復雜程度,塊可能需要達到?定的最???,才能包含?夠的上 下?,以供 LLM 使?。然?,這是?個平衡?為。如果塊太?,它們可能會稀釋嵌?中的相關 信息,從?降低語義搜索期間該塊的檢索?率。

如果您的?檔不包含?然斷點(例如,教科書章節中帶有副標題),并且?檔根據任意字符限制 (例如 500 個字符)進?分塊,則存在關鍵上下?信息被拆分的?險。在這種情況下,應考慮重 疊。例如,重疊率為 50% 的分塊策略意味著?檔中兩個相鄰的 500 個字符的塊將相互重疊 250 個字符。在決定重疊率時,應考慮信息重復和嵌?更多數據的成本。

要嵌?的查詢的復雜性或類型

如果您的 RAG 系統處理?段落的查詢,那么將數據分成?段落是有意義的。但是,如果查詢只 有?個詞,那么?塊??可能不利于最佳信息檢索。這時候可以使用混合檢索來提升信息檢索能力。

我們的經驗

通過在我們由 LLM 提供?持的 RAG 評估系統的幫助下進??泛的 A/B 測試,我們可以評估每 個?例的最佳分塊策略。

我們測試了以下分塊策略,主要針對 GPT-4 處理的改進的信息密集型?檔:

  • 1,000 個字符的塊,其中有 200 個字符的重疊
  • 500 個字符的塊,100 個字符的重疊
  • 段落(處理后的?檔中存在段落中斷)
  • 句?(使? spaCy 拆分)
  • 假設性問題(從上?詳述的?成的假設性問題索引中嵌?問題)

在我們的RAG推薦系統中,采? 200 個字符重疊策略的 1,000 個字符塊的表現略優于其他策略。

檢索技術

使用假設?檔嵌?(HyDE)修復查詢?檔不對稱

正如我們在預檢索技術部分中提到的,我們可以利? LLM 來解決查詢?檔不對稱問題并改善檢 索結果。我們還可以通過應? HyDE 在檢索階段實現更?的語義相似度。

對于Advanced RAG系統,你不得不知道的三個階段優化技巧-AI.x社區

我們通過在檢索發?之前的推理時間請求 LLM ?成?個假設?檔或?檔塊來回答查詢來實現這 ?點。下?是?個?例提?,我們將其與 1000 個字符的分塊策略?起使?來?成?于語義搜索 的假設?檔:

prompt = "Please generate a 1000 character chunk of text that hypothetically could be found on Example bank's website that can help the customer answer their question."

然后嵌?該假設?檔或塊,并?它代替??查詢進?語義搜索。這個想法是,在查詢?檔不對 稱的 RAG 系統中,假設?檔或塊與所需塊的語義相似度將?于??查詢本?。

使用 LLM 優化搜索查詢

請看以下?例對話:

客?:“你們的存單利率是多少?” 助理:“我們的利率是 XYZ?!?顧客:“哪種信?卡適合旅??”
助理:“XYZ 信?卡適合出于 ABC 原因的旅?” 客?:“告訴我更多關于這個利率的信息”

為了回答??的最后?個問題,可能需要進?語義搜索來檢索有關特定 XYZ 旅?信?卡的信息。那么,搜索查詢應該是什么?僅僅使?最后?個??消息是不夠具體的,因為?融機構可能有許 多產品會產?利息。在這種情況下,語義搜索會產??量可能不相關的信息,這些信息可能會擠 占 LLM 上下?窗?中的實際相關信息。

那么將整個對話記錄?作語義搜索查詢怎么樣?這可能會產?更好的結果,但它們仍可能包含與 對話中??最新問題?關的信息。

到?前為?,我們發現的最佳?法是使? LLM 以對話作為輸?來?成最佳搜索查詢。對于上?的 ?例對話,提?如下所?:

systemPrompt = "You are examining a conversation between a customer of Example bank and an Example bank chatbot. A documentation lookup of Example bank’s policies, products, or services is necessary for the chatbot to respond to the customer. Please construct a search query that will be used to retrieve the relevant documentation that can be used to respond to the user."

實現查詢路由或 RAG 決策器模式

查詢路由器是我們?過的更流?的?級 RAG 技術之?。其理念是當 RAG 系統使?多個數據源 時,使? LLM 將搜索查詢路由到適當的數據庫。這涉及在提?中預定義路由決策選項,并解析 LLM 的路由決策輸出,以便可以在代碼中使?。

為了幫助降低成本并提? RAG 的質量,我們開發了這種技術的變體,稱之為 RAG 決策模 式。

?個不太明顯的例?是,回答??查詢所需的所有信息都已存在于最近的對話歷史記錄中。在這 種情況下,LLM 只需重復或稍微改述之前的內容。例如,“您能將您最后?條消息翻譯成西班? 語嗎?”或“請像我五歲?孩?樣解釋?下最后?條消息?!边@兩個查詢都不需要進?新的檢 索,因為 LLM 只需使?其內置功能即可回答查詢。

在我們的案例中,當 RAG 決策者決定對于給定的??查詢不需要進?完整的 RAG 查找時,我們 會?不提及 RAG 結果或?檔的prompt來處理用戶的query。

對于Advanced RAG系統,你不得不知道的三個階段優化技巧-AI.x社區

另?種?法可能是讓單個 LLM 代理決定是否通過函數調?或其他機制(例如,在??RAG ) ? 不是委托給單獨的 LLM 調?。

檢索后處理( Post-Retrieval )

檢索后優化涵蓋檢索發?之后但在最終響應?成之前采?的策略或技術。

此時需要考慮的?個重要問題是:即使部署了上述所有預檢索和檢索策略,仍然?法保證我們檢 索到的?檔將包含 LLM 回答查詢所需的所有相關信息。這是因為檢索到的?檔可以是以下任意或所有類別的混合:

  • 相關?檔(即包含回答??查詢所需信息的?檔)
  • 相關但不相關的?件
  • 不相關和不相關的?件
  • 反事實?件(即與正確的相關?件相?盾的?件)

有研究表明相關但不相關的?檔對 RAG 系統的危害最?研究?員發現“在某些情況下,準確度會下降超過 -67%。更重要的是,僅添加?份相關?檔就會導致準確度急劇下降,峰值為 -25%……實證分析表明,引?語義?致但不相關的?檔會增加?層復雜性,可能會誤導 LLM 得出正確的答案。”

也許更令?驚訝的是,同樣的研究?員發現與查詢?關和不相關的?檔“如果放置正確,實際上 有助于提?這些系統的準確性。

通過Rerank確定搜索結果的優先級

研究表明,將最相關的?檔放在提?中最靠近查詢的位置可以提? RAG 的性能。

重新排序模型可優化給定查詢的區塊搜索結果的優先級。此技術與混合檢索系統和查詢擴展相結 合時效果很好。

使用上下?提?壓縮優化搜索結果

LLM可以處理每個塊中的信息,以過濾、重新格式化甚至壓縮數據塊生成提示符的最后幾位信息。

LLMLingua是實現這種方法的一個很有前途的框架。LLMLingua使用一個小的語言模型,如GPT2-small或LLaMA-7B,以檢測和刪除不重要的提示中的令牌。它還支持使用黑盒中的壓縮提示符進行推理llm,以最小的性能損失實現高達20倍的壓縮。LongLLMLingua通過考慮輸入查詢,進一步使其適用于RAG系統在執行壓縮以刪除通常不重要的令牌時對正在討論的查詢不重要。

值得注意的是,除了充分理解和使用壓縮提示回答查詢(例如,作為RAG的一部分),即使提示不是 人類可讀的GPT-4也可用于反轉或解壓縮輸入。

使用 corrective RAG 對檢索到的?檔進?評分和過濾

corrective RAG 通過訓練 T5-Large 模型來識別 RAG 結果對于給定問題??是正確/相關、模糊還是不正確,然后將結果提供給 LLM 以?成最終答案。未通過分類為正確/相關或模糊的閾值的 RAG 結果將被丟棄。

與使? Self-RAG 進?微調的 Llama-2 7B 模型所使?的批評?法相?,使? T5-Large 模型更加輕量,并且可以與任何?型語?模型結合使?。

總結

下面給出一些簡單的結論,這些結論可以根據你的實際需求應用到項目中:

  • 信息密度:使用 GPT-4 提取信息后,信息量顯著減少,信息密度提高。
  • 檢索效率:層次索引檢索和假設問題索引顯著提高了檢索效率和結果的相關性。
  • 分塊策略:1,000 字符分塊與 200 字符重疊的策略表現最佳。
  • 假設文檔嵌入:使用假設文檔嵌入進行語義搜索,提高了檢索結果的準確性。
  • 查詢路由和 RAG 決策模式:識別出不需 RAG 查找的查詢,避免了不必要的計算資源消耗。
  • 重新排序和壓縮:重新排序搜索結果和使用 LLM 壓縮生成提示,提高了生成響應的質量和效率。
  • 評分和過濾:使用 T5-Large 模型評分和過濾 RAG 結果,顯著提高了響應的準確性。


本文轉載自公眾號AI 博物院 作者:longyunfeigu

原文鏈接:??https://mp.weixin.qq.com/s/w4oBCnxS_vlGVf5NWarupg??

?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
標簽
已于2024-11-20 17:14:07修改
收藏
回復
舉報
回復
相關推薦
主站蜘蛛池模板: 国产精品一区2区 | 色久影院 | 国产精品免费一区二区三区四区 | 成人激情视频在线播放 | 国产一区 日韩 | 成人福利网站 | 久久91| 第四色影音先锋 | 精品一二三区 | 人人做人人澡人人爽欧美 | 精品国产99 | 色性av | 91视频在线| 国产精品自拍视频网站 | 网站黄色在线免费观看 | 热久久999| 午夜欧美一区二区三区在线播放 | 日韩一级不卡 | 久久激情视频 | 色欧美片视频在线观看 | 国产日韩精品一区 | 久久人人爽人人爽 | 99re6热在线精品视频播放 | 亚洲国产在 | 亚洲色片网站 | 久草网站 | 日韩免费一区二区 | 色橹橹欧美在线观看视频高清 | 国产成人精品在线播放 | 久国产 | 久久久久一区二区三区 | 欧美精品一二三 | 中文字幕第一页在线 | 精品国产91乱码一区二区三区 | 欧美性区 | 日日操夜夜操天天操 | 亚洲精品一区二区另类图片 | 爱综合 | 天天干com| 美国av毛片 | 欧美a在线 |