自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

對于Advanced RAG系統(tǒng)你不得不知道的三個階段優(yōu)化技巧 原創(chuàng)

發(fā)布于 2024-11-26 10:20
瀏覽
0收藏

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

  1. 預檢索和數(shù)據(jù)索引技術
  2. 檢索技術
  3. 檢索后處理

預檢索和數(shù)據(jù)索引技術

使? LLM 增加信息密度

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

比如我們之前在用爬蟲爬取用戶網(wǎng)頁的時候,但原始 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 ?成的摘要的多層檢索系統(tǒng)可以提?搜索效率. 分層索引檢索的實踐利??檔摘要 來簡化相關信息的識別,以便?成響應。

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

對于Advanced RAG系統(tǒng)你不得不知道的三個階段優(yōu)化技巧-AI.x社區(qū)

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

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

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

我們在自己的RAG推薦系統(tǒng)中,當用戶上傳一個文檔時,可以指定是否生成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
)

假設性問題指數(shù)的?險和替代?案

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

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

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

測試并優(yōu)化你的分塊策略

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

嵌?模型

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

嵌?內容的性質

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

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

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

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

我們的經驗

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

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

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

在我們的RAG推薦系統(tǒng)中,采? 200 個字符重疊策略的 1,000 個字符塊的表現(xiàn)略優(yōu)于其他策略。

檢索技術

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

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

對于Advanced RAG系統(tǒng)你不得不知道的三個階段優(yōu)化技巧-AI.x社區(qū)

image-20240905175950117

我們通過在檢索發(fā)?之前的推理時間請求 LLM ?成?個假設?檔或?檔塊來回答查詢來實現(xiàn)這 ?點。下?是?個?例提?,我們將其與 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 系統(tǒng)中,假設?檔或塊與所需塊的語義相似度將?于??查詢本?。

使? LLM 優(yōu)化搜索查詢

請看以下?例對話:

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

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

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

到?前為?,我們發(fā)現(xiàn)的最佳?法是使? 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."

實現(xiàn)查詢路由或 RAG 決策器模式

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

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

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

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

對于Advanced RAG系統(tǒng)你不得不知道的三個階段優(yōu)化技巧-AI.x社區(qū)

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

檢索后處理( Post-Retrieval )

檢索后優(yōu)化涵蓋檢索發(fā)?之后但在最終響應?成之前采?的策略或技術。

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

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

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

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

通過Rerank確定搜索結果的優(yōu)先級

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

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

使?上下?提?壓縮優(yōu)化搜索結果

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

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

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

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

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

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

總結

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

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


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

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

?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
已于2024-11-26 10:21:03修改
收藏
回復
舉報
回復
相關推薦