The Future of Knowledge Assistants: Jerry Liu
各位好,我是 Llama Index 的共同創辦人兼執行長 Jerry。今天我很高興能在這裡與大家分享關於知識輔助未來發展的看法。
首先,我們看到現在各行各業都在運用大型語言模型(LLM)開發各種應用。在企業中,最常見的應用場景包括文件處理、標記和資訊提取,以及知識搜尋和問答系統。如果你過去一年有關注我們的 Twitter,你會發現我們大約75%的內容都在討論檢索增強生成(RAG)技術。
除此之外,我們還看到這種問答界面逐漸演變成更全面的對話助理。它不僅能進行單次查詢搜尋,還能隨時間記錄對話歷史。今年,更多人開始對建立智能代理工作流程感到興奮,這種工作流程不僅能整合資訊,還能執行實際操作,與多種服務互動,為用戶提供所需的結果。
讓我們具體談談知識助理的概念,這是我們公司從創立之初就非常關注的領域。我們的目標是開發一個能夠接受各種任務輸入並產生相應輸出的介面。輸入可以是簡單問題、複雜問題或模糊的研究任務,而輸出則可能是簡短答案、研究報告或結構化資料。
RAG 技術只是起點。去年我曾說過,RAG 基本上只是一種權宜之計,我們還有很多工作可以做,使其變得更加先進和複雜。如果僅僅使用基礎的 RAG 流程來構建知識助理,你會遇到一些問題:首先是過於簡單的資料處理流程,雖然設置起來很快,但並不適合實際生產環境。其次,它缺乏理解複雜和廣泛查詢的能力,也就是說,查詢理解和規劃能力不足。此外,它與其他服務的互動方式也不夠複雜,而且是無狀態的,沒有記憶功能。
因此,我們認為如果 RAG 僅僅是一個簡單的流程,那就太過乏味了。它實際上只是在幾十年前就存在的檢索方法之上加了一層花哨的搜尋系統,有很多問題和任務是基礎 RAG 無法回答的。
我們一直在探索的方向是如何從簡單的搜尋和基礎 RAG 發展到構建一個通用的、具有上下文增強功能的研究助理。我們將討論三個步驟,其中包括一些令人興奮的新功能發布。
第一步是開發進階的資料處理和檢索模組。即使你不關心複雜的智能代理功能,你也需要高品質的核心資料處理模組來提升系統性能。這是構建強大知識助理的基礎。
接下來,讓我們談談知識助理開發的三個關鍵方向。
第二個方向是開發進階的單一代理查詢流程。這包括在現有的數據服務之上建立一個智能化的檢索增強生成(RAG)層,作為提升問答界面查詢理解能力的工具。
第三個方向,也是最引人注目的,是開發通用多代理任務解決器。這種技術不僅超越了單一代理的能力,更邁向了多個 AI 代理協同工作的新境界。
現在,讓我們深入探討第一個方向:進階數據處理和檢索技術。首先要強調的是,任何大型語言模型(LLM)應用的品質都取決於輸入的數據品質。正如機器學習工程師常說的「垃圾進,垃圾出」,這一原則同樣適用於 LLM 應用開發。高品質的數據是打造生產級 LLM 應用的基石。
為了實現這一目標,我們需要一個強大的數據處理層,將原始的非結構化或半結構化數據轉換成 LLM 應用可以有效利用的形式。數據處理主要包括三個步驟:解析、分塊和索引。讓我們先聚焦於解析這一關鍵步驟。
要建立一個有效的 RAG 系統,首先需要一個優秀的文件解析器。無論是 PDF、PowerPoint 還是其他複雜文檔格式,我們都需要能夠準確提取信息並保持結構完整的解析工具。舉例來說,如果你用普通的 PDF 解析工具處理一份包含表格的財務報告,很可能會導致信息混亂,數字和文字混為一體,最終造成 AI 產生幻覺(即生成錯誤信息)。
因此,即使是單純改進解析過程,也能顯著提升系統性能,減少 AI 幻覺的發生。我們曾做過一個簡單的實驗,用我們的 Lama Parse 工具解析加州火車(Caltrain)的週末時刻表。由於 LLM 能夠理解經過良好排版的文本,當我們詢問特定班次的時間時,系統能夠準確回答。相比之下,如果使用普通的 PDF 解析工具,系統很可能會產生大量錯誤信息。
除了優秀的解析工具,我們還可以結合先進的索引模組,更好地處理文檔中的多樣化數據。今天,我很高興地宣布,我們幾個月前推出的 Llama Parse 已經取得了驚人的成果:擁有數萬用戶,處理了數千萬頁文檔。如果你是一位企業開發者,面對大量需要處理的 PDF 文件,歡迎來試用 Llama Parse。這正是我們在知識管理領域努力打造的核心工具。
雲端技術方面,下一個重要步驟是發展進階的單一代理流程。目前,我們已經擁有優質的資料檢索模組,但仍局限於使用單一的大型語言模型(LLM)提示呼叫。那麼,我們如何突破這個限制,邁向更有趣、更複雜的領域呢?
我們與 Andrew Ang 在 deeplearning.ai 完成了一整套課程,並在近幾個月密集撰寫了相關文章。簡而言之,我們可以在基本的檢索增強生成(RAG)系統上疊加不同的代理元件,以建立在查詢理解、規劃和工具使用方面更為精密的系統。
這些元件可以根據成本和延遲進行權衡:左側是一些簡單、低成本、低延遲的元件;右側則是可以獨立運作,甚至能與其他代理協作的完整代理系統。
目前,構建問答系統的核心代理要素包括:函式呼叫和工具使用、查詢規劃(無論是順序式或有向無環圖(DAG)式),以及長期對話記憶維護。這使得系統成為一個有狀態的服務,而非無狀態的。
我們開創了「代理式 RAG」的概念。這不僅僅是單一 LLM 提示呼叫的 RAG,其職責不只是綜合資訊,更是在查詢理解和處理階段廣泛運用 LLM。在這個框架中,查詢不再只是直接輸入向量資料庫,而是由 LLM 與一系列作為工具的資料服務互動。
理解這個框架很重要,因為在任何 LLM 軟體中,LLM 都需要與其他服務(如資料庫或其他代理)互動,並進行查詢規劃,以確定如何利用這些工具解決給定的任務。
我們還探討了代理推理循環。目前最穩定的方式可能是某種基於函式呼叫或 React 的 while 循環。但我們也看到了更複雜的代理論文出現,主要處理基於 DAG 的規劃(規劃出整個決策 DAG)或基於樹的規劃(規劃出一整套可能的結果並嘗試優化)。
如果能夠實現這些技術,我們就能構建出能處理更複雜問題的個人化問答系統。例如,跨多個文件的比較問題、長期維護使用者狀態以便重訪先前的查詢內容,以及從結構化和非結構化資料中檢索資訊,將一切視為資料服務或工具。
然而,這個領域仍存在一些挑戰。首先...
首先,我們與業界同仁就此議題進行了一些有趣的討論。普遍認為,單一代理通常無法處理無限多的任務。事實上,若試圖讓一個代理同時掌握千種工具,在目前的技術條件下,該代理很可能會不知所措,最終失敗。因此,我們得出一個結論:專精特定領域的代理,在面對特定輸入時,往往能夠表現得更出色。
另一個值得關注的趨勢是,代理正越來越多地與其他服務互動,而這些服務本身可能也是代理。這促使我們開始思考一個多代理協作的未來。
那麼,讓我們深入探討多代理系統及其對知識輔助的影響。首先,為什麼要選擇多代理系統呢?除了我們之前提到的原因外,多代理系統還提供了一些單一代理無法比擬的優勢:
專業化:每個代理可以專注於特定的任務集,提高可靠性。這樣一來,我們可以將不同的專業代理組合起來,共同解決更為複雜的任務。
系統效能提升:通過部署多個相同的大型語言模型(LLM)代理,我們可以並行處理大量任務,大幅提高處理速度。
資源優化:在多代理框架下,我們可以讓每個代理只負責 5 到 10 個工具,而不是讓單一代理掌握 1,000 個工具。這使得我們可以使用較輕量但更快速的模型,潛在地降低成本並減少延遲。
近幾個月來,業界推出了一些令人驚艷的多代理框架。相信不少人已經在使用或開發自己的框架。然而,要在實際生產環境中可靠地部署這些系統,仍面臨一些挑戰:
代理間的互動:我們需要決定是讓代理自由互動,形成不受約束的工作流程,還是在代理之間設置一定的限制,明確規定每個代理在特定輸入下的行為方式。
生產環境的服務架構:目前,大多數代理都是以 Jupyter Notebook 中的函數形式實現的。我們需要為生產環境中的代理設計合適的服務架構。
有鑑於此,我很高興今天能夠為大家介紹我們正在開發的新項目——Lama Agents 的預覽版。這是一個 alpha 版本的功能,其核心理念是將代理視為微服務。除了借鑒了現有多代理框架的優秀之處外,Lama Agents 的主要目標是探索如何將每個代理作為獨立的服務,並通過中央 API 通信接口實現這些服務之間的協同工作和互相溝通。
這個設計不僅能協同工作以解決特定任務,還具備可擴展性、能同時處理多重請求,且易於部署到各類服務中。本質上,每個代理都能封裝一組邏輯,同時保持彼此間的溝通能力,並可在不同任務中重複使用。因此,我們的核心思考是:如何將這些代理從實驗環境轉移到實際生產中?這個想法我們醞釀已久,我們認為這是協助您建立生產級知識助手的關鍵要素,尤其是在這個日益智能化的世界裡。
在這個架構中,每個代理都被視為一個獨立的服務。您可以使用Lama index或其他框架自由編寫代理。我們提供了一些介面來協助您建立客製化代理。這些代理可以部署為服務,並通過某種訊息佇列相互溝通。代理間的協調則通過一個通用控制平台進行。我們的靈感部分來自現有的資源分配器(如Kubernetes)和其他開源系統級專案。這種協調可以是明確的,即您明確定義服務間的流程;也可以是隱含的,讓某種大型語言模型(LLM)協調器根據當前情況決定任務分配。
接下來,我想向您展示這個概念與知識助手的關聯。我們認為多代理系統將成為其中的核心組件。這裡有一個我們迅速製作的演示,展示如何在基本的檢索增強生成(RAG)流程上運行Lama代理。這是一個相當簡單的RAG流程,包含一個查詢重寫服務和一個執行搜索檢索的預設代理。您還可以添加其他組件和服務,如反思功能或其他工具,甚至是通用工具服務。
這個演示的核心在於展示,給定某種輸入後,這些代理如何通過API協議相互溝通。這使得您可以同時處理多個來自不同客戶端的請求,讓這些代理作為封裝的微服務運作。具體而言,查詢重寫代理接收並處理查詢,將其重新編寫後傳給第二個代理,後者進行搜索和檢索,最後輸出最終回應。
雖然對於已經建立RAG流程的人來說,這些邏輯可能相對簡單,但我們的目標是向您展示如何將這些概念,即使是簡單的概念,轉化為可部署的服務集合。這正是將代理技術從實驗階段推進到實際應用的關鍵一步。
這個範例進一步展示了多代理系統的運作方式,說明了多個代理如何協同工作以完成特定任務。我們已經將相關資訊編入二維碼中。目前,這個系統處於alpha測試階段,我們非常期待與社群分享這項技術。我們採取了高度透明的方式公開發展路線圖,歡迎大家查看討論區,了解目前已實現和尚未實現的功能。
我們計劃推出約十二個入門教程,指導用戶如何建立一系列微服務,協助開發生產級的智能知識助理工作流程。我們也公開了一個程式碼儲存庫,供大家參考。我們熱切期待社群對通用通訊協議的反饋,以及如何與社群其他優秀成果進行整合,共同實現打造生產級多代理助理的核心目標。
最後,針對那些主要關注數據質量而非代理技術的使用者,我們正在為Llama Cloud開放候補名單。這項服務旨在解決文件解析、分塊、索引等問題,確保含有圖表、表格和圖像的PDF文件能被正確處理和解析。如果您是有這方面需求的企業開發者,歡迎與我們聯繫。
以上就是我們的簡報內容,感謝各位的聆聽,希望大家有所收穫。
Last updated