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

百萬上下文RAG,Agent還能這么玩

發(fā)布于 2024-6-12 10:35
瀏覽
0收藏

?Qwen-Agent的設計思路雖然與LangChain相似,但其發(fā)布幾個的Agent示例卻很有意思。今天本文將深入探討如何使用Qwen-Agent將上下文記憶擴展到百萬量級,讓Agent的智能得到更廣泛的應用。

暴力關鍵字檢索優(yōu)于向量方案

在處理大規(guī)模文本數(shù)據(jù)時,一個關鍵的挑戰(zhàn)是如何快速準確地定位到最相關的信息塊。Qwen-Agent通過一種看似“暴力”的方法——,基于LLM判斷相關性 AND 基于關鍵字檢索,解決了這一難題。這種方法雖然簡單,但在實際操作中卻顯示出了意想不到的效果。

關鍵字檢索的基本原理

關鍵字檢索是一種直接且高效的方法,尤其是在面對大規(guī)模文本數(shù)據(jù)時。通過預先定義的關鍵字,我們可以快速定位到包含這些關鍵字的文本塊。這種方法的優(yōu)勢在于其速度和簡單性,尤其是在處理大規(guī)模數(shù)據(jù)時。

實現(xiàn)關鍵字檢索的步驟

  1. 預處理文本數(shù)據(jù):將大規(guī)模文本數(shù)據(jù)分塊。
  2. 基于LLM判斷相關性:并行處理每個分塊,讓聊天模型評估其與用戶查詢的相關性, 如果相關則輸出相關句子用于后續(xù)檢索。

百萬上下文RAG,Agent還能這么玩-AI.x社區(qū)

  1. 分析用戶指令,提取關鍵字:通過LLM對用戶指令進行兩個方面的預處理。1.區(qū)分指令信息與非指令信息。2.從查詢的信息部分推導出多語言關鍵詞

百萬上下文RAG,Agent還能這么玩-AI.x社區(qū)

  1. 最終檢索:運用BM25這一傳統(tǒng)的基于關鍵詞的檢索方法,找出與提取關鍵詞最相關的塊并生成最終答案,這一步驟的實現(xiàn)方式與通常的RAG相同。。

示例代碼

from qwen_agent.agents import Assistant
from qwen_agent.gui import WebUI

def test():
    bot = Assistant(llm={'model': 'qwen-plus'})
    messages = [{'role': 'user', 'content': [{'text': '介紹圖一'}, {'file': 'https://arxiv.org/pdf/1706.03762.pdf'}]}]
    for rsp in bot.run(messages):
        print(rsp)


def app_gui():
    # Define the agent
    bot = Assistant(llm={'model': 'qwen-plus'},
                    name='Assistant',
                    descriptinotallow='使用RAG檢索并回答,支持文件類型:PDF/Word/PPT/TXT/HTML。')
    chatbot_config = {
        'prompt.suggestions': [
            {
                'text': '介紹圖一'
            },
            {
                'text': '第二章第一句話是什么?'
            },
        ]
    }
    WebUI(bot, chatbot_cnotallow=chatbot_config).run()

if __name__ == '__main__':
    # test()
    app_gui()

實踐案例

假設我們有一個包含100萬字的維基百科語料庫,其中包含了大量關于歷史、科學、文化等方面的知識?,F(xiàn)在,用戶想要查詢 愛因斯坦在1905年發(fā)表了什么重要的理論?用英語回答

傳統(tǒng)的向量檢索方法:

  1. 將整個維基百科語料庫轉(zhuǎn)換為向量表示,并存儲在向量數(shù)據(jù)庫中。
  2. 將用戶查詢轉(zhuǎn)換為向量,并在向量數(shù)據(jù)庫中進行相似度檢索。
  3. 返回與用戶查詢向量最相似的文本塊。

由于維基百科語料庫包含了大量關于愛因斯坦的信息,傳統(tǒng)的向量檢索方法很可能會返回很多與用戶查詢不直接相關的文本塊,例如愛因斯坦的生平介紹、其他科學家的理論等等,導致檢索精度下降。

Qwen-Agent的關鍵字檢索方法:

  1. 將維基百科語料庫切分為多個小的文本塊,每個文本塊包含512字。
  2. 將用戶問題通過LLM轉(zhuǎn)換為檢索關鍵字,例如“愛因斯坦”、“1905年”、“理論”。并區(qū)分檢索信息與指令

{
"信息": ["愛因斯坦在1905年發(fā)表了什么重要的理論"], 
"指令": ["用英文回復"]
}
  1. 基于檢索信息(愛因斯坦在1905年發(fā)表了什么重要的理論),并行過濾所有分塊,查詢相關性,并抽取相關語句。
  2. 基于檢索關鍵字(“愛因斯坦”、“1905年”、“理論”)檢索分塊。
  3. 將匹配到的文本塊輸入到Qwen模型中,模型會根據(jù)這些文本塊的內(nèi)容推理出答案:“愛因斯坦在1905年發(fā)表了狹義相對論?!?/li>

通過這種方式,Qwen-Agent可以更精準地定位到與用戶查詢相關的文本塊,避免了無關信息的干擾,提高了檢索效率和答案的準確性。

檢索之前先做推理,多跳問題又快又準

在基于文檔的問題回答中,一個典型的挑戰(zhàn)是多跳推理。多跳推理是指需要結(jié)合多個文檔的信息才能回答用戶問題的情況。例如,用戶可能會問“《紅樓夢》的作者是誰的粉絲?”,要回答這個問題,就需要先找到《紅樓夢》的作者是曹雪芹,然后找到曹雪芹是哪個朝代的人,最后才能找到答案。

什么是多跳推理

多跳推理是指在回答一個問題時,需要跨越多個不同的文本塊或信息源,逐步推理得到最終答案。這種方法能夠提供更準確和全面的回答,但也增加了計算復雜度。

多跳推理的實現(xiàn)步驟

  1. 初步推理:首先將用戶問題轉(zhuǎn)化分解為逐級遞進的子問題。
  2. 子問題檢索:調(diào)用上述RAG的能力,進行問題檢索與回答。
  3. 多跳推理:逐步在推理鏈上進行推理,得到最終答案。

百萬上下文RAG,Agent還能這么玩-AI.x社區(qū)

實踐案例

例如,考慮回答問題:“與第五交響曲創(chuàng)作于同一世紀的交通工具是什么?

  1. 首先將問題轉(zhuǎn)化為子問題“貝多芬的第五交響曲是在哪個世紀創(chuàng)作的?“
  2. 通過RAG獲取答案為:19世紀
  3. 提出新的子問題:“19世紀期間發(fā)明了什么交通工具?“
  4. 通過RAG獲取答案為:自行車
  5. 最后推理出與第五交響曲創(chuàng)作于同一世紀的交通工具是自行車。

以用促訓,Agent智能反哺模型

官方實驗結(jié)果表明,4k-智能體在處理長上下文方面的表現(xiàn)優(yōu)于32k-模型。這種分塊閱讀所有上下文的方式,使得Agent能夠克服原生模型在長上下文訓練上的不足。而Agent智能在使用過程中生產(chǎn)的數(shù)據(jù),則能迭代用于后續(xù)長文本上下文的進一步微調(diào)。

百萬上下文RAG,Agent還能這么玩-AI.x社區(qū)

智能反哺模型的實現(xiàn)步驟

  1. 智能體訓練:通過與用戶交互,訓練智能體,使其能夠處理復雜的上下文推理任務。
  2. 數(shù)據(jù)合成:利用智能體生成的數(shù)據(jù),構(gòu)建新的訓練數(shù)據(jù)集。
  3. 模型微調(diào):使用新生成的數(shù)據(jù)集對模型進行微調(diào),提高模型在長上下文任務中的表現(xiàn)。

總結(jié)

通過本文的探討,我們了解到Qwen-Agent如何通過智能體擴展模型的上下文記憶,以及如何利用這些智能體來提升模型的性能。這不僅為AI技術(shù)的發(fā)展提供了新的思路,也為我們在處理大規(guī)模文本數(shù)據(jù)時提供了有效的工具。希望這篇文章能為大家在實際應用中提供一些啟發(fā)和幫助。

本文轉(zhuǎn)載自?? AI小智??,作者: AI小智

標簽
收藏
回復
舉報
回復
相關推薦