譯者 | 朱先忠
審校 | 重樓
簡介
當下,許多生成式AI應用場景仍然圍繞檢索增強生成(RAG)展開,但始終未能滿足用戶的期望。盡管對RAG改進的研究越來越多,甚至在流程中添加了代理技術,但許多解決方案仍然無法返回詳盡的結果,遺漏了文檔中很少提及的關鍵信息,需要多次搜索迭代,并且通常難以協(xié)調(diào)多個文檔中的關鍵主題。最糟糕的是,許多實現(xiàn)方案仍然依賴于將盡可能多的“相關”信息與詳細的系統(tǒng)和用戶提示一起塞入模型的上下文窗口。協(xié)調(diào)所有這些信息通常超出了模型的認知能力,并損害了響應質量和一致性。
上述問題正是我們的代理知識蒸餾+金字塔搜索方法發(fā)揮作用的地方。我們團隊成員Jim Brown、Mason Sawtell、Sandi Besen和我不追求最佳的分塊策略、檢索算法或使用基于推理時間的推理方法,而是采用代理方法來獲取文檔。
我們在數(shù)據(jù)攝取時充分利用模型的全部功能,專注于從文檔數(shù)據(jù)集中蒸餾和保留最有意義的信息。這從根本上簡化了RAG流程,使模型能夠將其推理能力用于處理用戶/系統(tǒng)指令,而不是費力理解文檔塊中的格式和不同信息。
我們專門針對那些通常難以評估的高價值問題,因為它們有多個正確答案或解決路徑。這些情況是傳統(tǒng)RAG解決方案最難解決的情況,而現(xiàn)有的RAG評估數(shù)據(jù)集對于測試這個問題空間來說基本上是不夠的。
為了實施我們的研究,我們下載了道瓊斯工業(yè)平均指數(shù)中30家公司去年的年度和季度報告。這些文件可以在SEC EDGAR網(wǎng)站上找到。EDGAR上的信息可以訪問并可以免費下載,也可以通過EDGAR公共搜索進行查詢。有關更多詳細信息,請參閱SEC隱私政策,SEC網(wǎng)站上的信息“被視為公開信息,網(wǎng)站用戶可能會在未經(jīng)SEC許可的情況下復制或進一步分發(fā)”。我們選擇這個數(shù)據(jù)集有兩個主要原因:首先,它超出了所評估模型的知識截止范圍,確保模型不能根據(jù)預訓練的知識回答問題;其次,它非常接近現(xiàn)實世界的商業(yè)問題,同時使我們能夠使用公開數(shù)據(jù)討論和分享我們的研究結果。
雖然典型的RAG解決方案擅長事實檢索,因為答案很容易在文檔數(shù)據(jù)集中找到(例如,“Apple的年度股東大會何時舉行?”),但它們很難解決需要更深入地理解文檔中概念的細微問題(例如,“哪家DOW公司擁有最有前途的AI戰(zhàn)略?”)。與我們測試的其他標準方法相比,我們的代理知識蒸餾+金字塔搜索方法在解決這些類型的問題方面取得了更大的成功,并且克服了在RAG系統(tǒng)中使用知識圖譜的局限性。
在本文中,我們將介紹知識蒸餾過程的工作原理、這種方法的主要優(yōu)點、示例,以及關于評估這些類型的系統(tǒng)的最佳方法的公開討論,在許多情況下,沒有單一的“正確”答案。
構建金字塔:代理知識蒸餾的工作原理
人工智能生成的圖像顯示了用于文檔攝取的金字塔結構以及標記部分。
作者和團隊提供的圖像描繪了用于文檔攝取的金字塔結構,機器人代表著建造金字塔的代理。
概述
我們的知識蒸餾過程會從原始源文檔中創(chuàng)建多層信息金字塔。我們的方法受到深度學習計算機視覺任務中使用的金字塔的啟發(fā),這些金字塔允許模型以多種尺度分析圖像。我們獲取原始文檔的內(nèi)容,將其轉換為Markdown格式,然后將內(nèi)容蒸餾為原子見解、相關概念、文檔摘要和一般回憶/記憶的列表。在檢索過程中,可以訪問金字塔的任何或所有層級以響應用戶請求。
如何蒸餾文檔并構建金字塔:
- 將文檔轉換為Markdown:將所有原始源文檔轉換為Markdown。我們發(fā)現(xiàn),與JSON等其他格式相比,模型處理Markdown最適合此任務,并且它的標記效率更高。我們使用Azure文檔智能(Document Intelligence)為文檔的每一頁生成Markdown,但還有許多其他開源庫(如MarkItDown)可以執(zhí)行相同的操作。我們的數(shù)據(jù)集包括331個文檔,共計16,601頁內(nèi)容。
- 從每一頁中提取原子見解:我們使用雙頁滑動窗口處理文檔,這樣可以對每一頁進行兩次分析。這使代理有機會在最初處理頁面時糾正任何潛在錯誤。我們指示模型創(chuàng)建一個編了號的見解列表,該列表在處理文檔中的頁面時會不斷增長。如果前一頁的見解不正確,代理可以覆蓋它們,因為它會查看每一頁兩次。我們指示模型按照主謂賓(SVO)格式以簡單的句子提取見解,并將句子寫得好像英語是用戶的第二語言一樣。這通過鼓勵清晰度和準確性顯著提高了性能。多次滾動每頁并使用SVO格式還可以解決消歧問題,這對知識圖譜來說是一個巨大的挑戰(zhàn)。見解生成步驟對于從表格中提取信息也特別有用,因為模型會以清晰、簡潔的句子從表格中捕獲事實。我們的數(shù)據(jù)集產(chǎn)生了216,931條總見解,每頁約13條見解,每份文檔655條見解。
- 從洞察中蒸餾概念:從洞察的詳細列表中,我們識別出與文檔相關信息相聯(lián)系的高級概念。此步驟可顯著減少文檔中的噪音和冗余信息,同時保留基本信息和主題。我們的數(shù)據(jù)集共產(chǎn)生14,824個概念,大約每頁1個概念,每篇文檔45個概念。
- 根據(jù)概念創(chuàng)建摘要:根據(jù)文檔中的見解和概念,LLM編寫的摘要看起來比人類編寫的任何摘要都更好,并且比原始文檔中的任何摘要都更信息密集。LLM生成的摘要提供了有關文檔的極其全面的知識,并且小的標記密度包含大量信息。我們?yōu)槊糠菸臋n生成一個摘要,總共331個。
- 跨文檔存儲回憶/記憶:在金字塔的頂端,我們存儲了對所有任務都有用的關鍵信息。這可以是用戶分享的有關任務的信息,也可以是代理通過研究和響應任務隨時間了解的有關數(shù)據(jù)集的信息。例如,我們可以將DOW中的當前30家公司存儲為回憶,因為此列表與模型知識截止時DOW中的30家公司不同。隨著我們進行越來越多的研究任務,我們可以不斷改進我們的回憶,并維護這些回憶來自哪些文件的審計線索。例如,我們可以跟蹤各公司的AI戰(zhàn)略,公司在哪些地方進行重大投資等。這些高級連接非常重要,因為它們揭示了單頁或文檔中無法顯示的關系和信息。
從IBM 10Q、2024年第三季度中提取的洞察樣本子集(第4頁)
我們將金字塔每一層(頁面及以上)的文本和嵌入存儲在Azure PostgreSQL中。我們最初使用Azure AI Search,但出于成本原因改用了PostgreSQL。這要求我們編寫自己的混合搜索功能,因為PostgreSQL尚未原生支持此功能。此實現(xiàn)適用于你選擇的任何向量數(shù)據(jù)庫或向量索引。關鍵要求是在金字塔的任何級別存儲和高效檢索文本和向量嵌入。
這種方法實際上創(chuàng)建了知識圖譜的本質,但以自然語言存儲信息,這是LLM想要與之交互的方式,并且在標記檢索方面效率更高。我們還讓LLM選擇用于對金字塔的每個級別進行分類的術語,這似乎讓模型自己決定描述和區(qū)分存儲在每個級別的信息的最佳方式。例如,LLM更喜歡將“見解”而不是“事實”作為第一級蒸餾知識的標簽。我們這樣做的目的是通過讓LLM決定如何存儲和分組相關信息來更好地理解LLM如何思考這個過程。
使用金字塔:它如何與RAG和代理配合使用
在推理時,傳統(tǒng)RAG和代理方法都受益于我們知識金字塔中預處理、蒸餾的信息。金字塔結構允許在傳統(tǒng)RAG情況下(僅檢索前X條相關信息)和代理情況下(代理在返回最終響應之前迭代地計劃、檢索和評估信息)進行高效檢索。
金字塔方法的好處是,金字塔中任何級別的信息都可以在推理過程中使用。在我們的實現(xiàn)中,我們使用PydanticAI創(chuàng)建了一個搜索代理,該代理接收用戶請求、生成搜索詞、探索與請求相關的想法并跟蹤與請求相關的信息。一旦搜索代理確定有足夠的信息來滿足用戶請求,就會對結果進行重新排序并發(fā)送回LLM以生成最終答復。我們的實現(xiàn)允許搜索代理在收集有關概念/搜索詞的詳細信息時遍歷金字塔中的信息。這類似于遍歷知識圖譜,但對于LLM來說,這種方式更自然,因為金字塔中的所有信息都以自然語言存儲。
根據(jù)具體的使用場景,代理可以訪問金字塔所有級別的信息,也可以只訪問特定級別的信息(例如,僅檢索概念中的信息)。對于我們的實驗,我們沒有檢索原始頁面級數(shù)據(jù),因為我們想要專注于標記效率,并且發(fā)現(xiàn)LLM生成的見解、概念、摘要和回憶信息足以完成我們的任務。理論上,代理也可以訪問頁面數(shù)據(jù);這將為代理提供重新檢查原始文檔文本的額外機會;但是,它也會顯著增加使用的標記總數(shù)。
以下是我們用于響應用戶請求的代理方法的高級可視化展示:
作者和團隊創(chuàng)建的圖像概要性描述了代理研究和響應過程
金字塔的結果:現(xiàn)實世界的例子
為了評估我們方法的有效性,我們針對各種問題類別對其進行了測試,包括典型的事實調(diào)查問題和復雜的跨文檔研究和分析任務。
事實調(diào)查(魚叉捕魚):
這些任務需要識別文檔中隱藏的特定信息或事實。這些是典型的RAG解決方案所針對的問題類型,但通常需要進行多次搜索并消耗大量標記才能正確回答。
示例任務:“What was IBM’s total revenue in the latest financial reporting?(IBM在最新財務報告中的總收入是多少?)”
使用金字塔方法的示例響應:“IBM’s total revenue for the third quarter of 2024 was $14.968 billion [ibm-10q-q3-2024.pdf, pg. 4](IBM 2024年第三季度的總收入為149.68億美元[ibm-10q-q3-2024.pdf,第4頁])”
用于研究和生成響應的總標記數(shù)
該結果是正確的(經(jīng)過人工驗證),并且僅使用了9,994個標記生成,其中生成的最終響應中有1,240個標記。
復雜的研究和分析:
這個例子中的任務涉及研究和理解多個概念,以更廣泛地理解文檔,并根據(jù)收集到的事實做出推論和明智的假設。
示例任務:“Analyze the investments Microsoft and NVIDIA are making in AI and how they are positioning themselves in the market. The report should be clearly formatted.(分析微軟和英偉達在人工智能領域的投資以及他們在市場上的定位。報告格式應清晰。)”
示例響應:
代理分析微軟和英偉達的AI投資和定位后生成的響應
結果是一份執(zhí)行非常迅速的綜合報告,其中包含有關每家公司的詳細信息??偣彩褂昧?6,802個符號來研究和響應請求,其中很大一部分用于最終響應(2,893個符號,或約占11%)。這些結果也是經(jīng)過人工審查的,以驗證其有效性。
該代碼片段表明該任務的符號總使用量
示例任務:“Create a report on analyzing the risks disclosed by the various financial companies in the DOW. Indicate which risks are shared and unique.(創(chuàng)建一份報告,分析道瓊斯指數(shù)中各家金融公司披露的風險。指出哪些風險是共同的,哪些是獨特的。)”
示例響應如下:
代理針對披露風險生成的回復的第1部分
代理針對披露風險生成的回復的第二部分
同樣,此任務在42.7秒內(nèi)完成,總共使用了31,685個符號,其中3,116個符號用于生成最終報告。
此代碼片段表明該任務的符號總使用量
總體來看,這些針對事實調(diào)查和復雜分析任務的結果表明,金字塔方法能夠使用最少量的標記高效地創(chuàng)建詳細的報告,并且延遲時間短。用于任務的標記含義密集,噪音小,因此可以在任務間提供高質量、全面的響應。
金字塔的好處:為什么要使用它?
總體而言,我們發(fā)現(xiàn)金字塔方法顯著提高了高價值問題的響應質量和整體性能。
我們觀察到這種方法的一些主要好處包括:
- 減少模型的認知負荷:當代理收到用戶任務時,它會檢索經(jīng)過預處理的蒸餾信息,而不是原始的、格式不一致的、分散的文檔塊。這從根本上改善了檢索過程,因為模型不會浪費其認知能力來嘗試首次分解頁面/塊文本。
- 卓越的表格處理能力:通過分解表格信息并將其存儲在簡潔但描述性的句子中,金字塔方法可以更輕松地通過自然語言查詢在推理時檢索相關信息。這對于我們的數(shù)據(jù)集尤為重要,因為財務報告包含大量表格中的關鍵信息。
- 提高了對多種類型請求的響應質量:金字塔能夠對精確的事實調(diào)查問題和涉及眾多文檔的眾多主題的廣泛分析任務提供更全面的上下文感知響應。
- 保留關鍵背景:由于蒸餾過程識別并跟蹤關鍵事實,因此可能只在文檔中出現(xiàn)一次的重要信息更容易維護。例如,注意到所有的表格都以數(shù)百萬美元或特定貨幣表示。傳統(tǒng)的分塊方法經(jīng)常導致此類信息被忽略。
- 優(yōu)化的符號使用、內(nèi)存和速度:通過在攝取時蒸餾信息,我們顯著減少了推理期間所需的符號數(shù)量,能夠最大化上下文窗口中信息的價值,并提高內(nèi)存使用率。
- 可擴展性:隨著文檔數(shù)據(jù)集規(guī)模的擴大,許多解決方案都難以發(fā)揮作用。這種方法通過僅保留關鍵信息,提供了一種更高效的管理大量文本的方法。這還允許更有效地使用LLM上下文窗口,只需向其發(fā)送有用、清晰的信息即可。
- 高效的概念探索:金字塔使代理能夠探索相關信息,類似于瀏覽知識圖譜,但不需要生成或維護圖中的關系。代理可以專門使用自然語言,并以特別高效和流暢的方式跟蹤與其正在探索的概念相關的重要事實。
- 新興數(shù)據(jù)集理解:我們在測試過程中發(fā)現(xiàn)了這種方法的一個意外好處。當問“你能告訴我關于這個數(shù)據(jù)集的什么信息?”或“我可以問什么類型的問題?”等問題時,系統(tǒng)能夠做出響應并建議有效的搜索主題,因為它通過訪問金字塔中的更高層級(如摘要和回憶)對數(shù)據(jù)集上下文有了更深入的理解。
超越金字塔:評估挑戰(zhàn)和未來方向
挑戰(zhàn)
雖然我們在使用金字塔搜索方法時觀察到的結果令人驚嘆,但找到建立有意義的指標來評估整個系統(tǒng)(無論是在攝取信息時還是在信息檢索期間)的方法卻具有挑戰(zhàn)性。傳統(tǒng)的RAG和代理評估框架通常無法解決細微的問題和分析性響應,因為許多不同的響應都是有效的。
我們的團隊計劃在未來撰寫一篇關于這種方法的研究論文,我們歡迎社區(qū)的任何想法和反饋,尤其是關于評估指標的想法和反饋。我們發(fā)現(xiàn)許多現(xiàn)有數(shù)據(jù)集都側重于評估一個文檔中的RAG應用場景或跨多個文檔的精確信息檢索,而不是跨文檔和域的穩(wěn)健概念和主題分析。
我們感興趣的主要應用場景與更廣泛的問題有關,這些問題代表了企業(yè)實際上希望如何與GenAI系統(tǒng)交互。例如,“告訴我關于客戶X我需要知道的一切”或“客戶A和B的行為有何不同?我更有可能與哪個客戶成功會面?”。這些類型的問題需要深入了解來自許多來源的信息。這些問題的答案通常需要一個人綜合來自業(yè)務多個領域的數(shù)據(jù)并對其進行批判性思考。因此,這些問題的答案很少被寫在或保存在任何地方,這使得在典型的RAG過程中無法簡單地通過向量索引存儲和檢索它們。
另一個考慮因素是,許多實際場景涉及動態(tài)數(shù)據(jù)集,其中文檔不斷被添加、編輯和刪除。這使得評估和跟蹤什么是“正確”的答案變得困難,因為答案會隨著可用信息的變化而變化。
未來方向
我們相信,未來金字塔方法能夠解決其中一些挑戰(zhàn),因為它能夠更有效地處理密集文檔,并將學習到的信息存儲為回憶。然而,隨著時間的推移,跟蹤和評估回憶的有效性對于系統(tǒng)的整體成功至關重要,并且仍然是我們當前工作的重點領域。
當將這種方法應用于組織數(shù)據(jù)時,金字塔流程還可用于識別和評估業(yè)務各個領域的差異。例如,上傳公司的所有銷售宣傳材料可能會發(fā)現(xiàn)某些產(chǎn)品或服務的定位不一致。它還可用于比較從各種業(yè)務線數(shù)據(jù)中提取的見解,以幫助了解團隊是否以及在何處對主題或不同優(yōu)先級產(chǎn)生了相互沖突的理解。此應用程序超越了純粹的信息檢索應用場景,并允許金字塔作為組織協(xié)調(diào)工具,幫助識別消息傳遞、術語和整體溝通中的分歧。
結論
知識蒸餾金字塔方法意義重大,因為它充分利用了LLM在提取和檢索時的全部功能。我們的方法允許你將密集信息存儲在更少的標記中,這還具有在推理時減少數(shù)據(jù)集中噪音的額外好處。我們的方法運行速度非??欤⑶揖哂辛钊穗y以置信的標記效率,我們能夠在幾秒鐘內(nèi)生成響應,探索數(shù)百次搜索,并且在整個搜索、檢索和響應生成過程中平均使用<40K個標記(這包括所有搜索迭代!)。
我們發(fā)現(xiàn),LLM更擅長將原子見解寫成句子,并且這些見解可以有效地從基于文本和表格的數(shù)據(jù)中蒸餾信息。這些以自然語言編寫的蒸餾信息對于LLM來說非常容易理解和推理,因為它不必花費不必要的精力去推理和分解文檔格式或過濾噪音。
最后,在金字塔的任何層級檢索和聚合信息的能力也為解決各種查詢類型提供了極大的靈活性。這種方法為大型數(shù)據(jù)集提供了良好的性能,并支持需要細致入微的信息檢索和分析的高價值應用場景中。
譯者介紹
朱先忠,51CTO社區(qū)編輯,51CTO專家博客、講師,濰坊一所高校計算機教師,自由編程界老兵一枚。
原文標題:Overcome Failing Document Ingestion & RAG Strategies with Agentic Knowledge Distillation,作者:Tula Masterman