「...民有、民治、民享的政府...」

亞伯拉罕·林肯,《蓋茲堡演說》(1863)

人工智慧的成本正迅速下降。2023年初,GPT-4等級的功能每百萬個token約需30美元;如今相同服務已降至1美元以下,部分供應商甚至將成本推低至0.10美元以下。

在各項基準測試中,推論價格每年下降9到900倍,中位數降幅接近50倍。即使是前沿模型,每一代也都顯著變得更便宜,開源模型也緊隨其後。

更關鍵的是,即使「諾貝爾獎級天才」智慧尚未到來,但足以應付絕大多數知識工作的智慧已經存在,並且每月都在變得更便宜。照此速度,我們很快將進入一個幾乎免費的智慧時代,這種智慧對於日常知識工作來說綽綽有餘。

聲明:這篇文章是由加州大學柏克萊分校電機工程與電腦科學系副教授、EPIC資料實驗室共同主任Aditya G. Parameswaran及其合作者共同撰寫的觀點。它部分是現況調查,部分是觀點論述,其中討論的幾項研究方向(包括代理人推測、結構化記憶體以及從頭合成客製化資料系統)都源於作者們正在進行的工作。

那麼,這個近乎免費的智慧新時代對資料系統意味著什麼?我們認為,近乎零的推論成本帶來了三大新挑戰,同時也是機會:

為代理人設計的資料系統(Data Systems For Agents)。代理人很快將成為資料系統的主要工作負載,每個終端使用者請求都會啟動大量的代理人群體。考量到代理人與人類(或代表人類運作的應用程式)之間的特性差異,我們該如何為這類代理人使用者重新設計資料系統?

由代理人組成的資料系統(Data Systems Of Agents)。隨著代理人開始承擔大部分知識工作,需要一個新的基礎架構,讓數千個代理人在長期任務中管理狀態、協調並達成共識,並處理故障。能夠可靠且高效地運行和管理代理人群體的資料系統會是什麼樣子?

由代理人生成的資料系統(Data Systems By Agents)。代理人正迅速具備一次性合成整個資料系統的能力,這意味著我們可以為每個新工作負載重建客製化系統。驗證這些系統是否符合預期行為是一項挑戰。要讓代理人合成出我們真正可以信任的資料系統,需要具備什麼條件?

為代理人、由代理人、以及代理人生成的資料系統

接下來,我們將更詳細地討論每個面向,然後探討資料系統與代理人交織的未來,特別是當這三大挑戰相互交會時。

代理人查詢資料庫的行為不像人類或商業智慧(BI)工具。它執行我們所謂的「代理人推測」(agentic speculation):一種高流量、異質性的工作流,涵蓋了綱要內省、欄位探索,以及部分到完整的查詢建構。

當多個代理人各自探索假設空間的不同部分時,每個使用者請求可能產生數千個獨立的SQL查詢。現在,使用者可以發出「高階」資料任務,例如根本原因分析,像是「為什麼今年柏克萊的咖啡銷量下降了」,或探索性群組分析,例如「哪些使用者群體下個季度最有可能流失」,這些任務都涉及潛在的聯結、聚合和篩選組合的組合空間。

重新設計資料系統以更有效地支援代理人推測

這些代理人的請求存在各種最佳化機會。例如,在一個多個代理人嘗試執行每個任務的文字轉SQL基準測試中,只有10-20%的子計畫是獨特的。

因此,80-90%的子查詢執行的是重複工作。相同的實驗顯示,隨著代理人嘗試次數的增加,任務成功率顯著提高,所以這種冗餘實際上是有幫助的。但從資料系統的角度來看,這卻是浪費的工作。

一個「代理人優先」的資料系統可以利用這些特性,幫助代理人更快地推進工作。它可以重複使用重疊子計畫的結果,借鑒數十年來關於多查詢最佳化和共享掃描的文獻中的思想。

或者,資料系統可以嘗試「滿意化」(satisfice),返回足夠讓代理人推進工作的近似答案,利用來自近似查詢處理(AQP)文獻中的研究成果。它也可以串流傳輸最終或中間運算元的結果,以幫助代理人判斷是否需要或有助於查看其餘部分。

另一個機會是徹底重新思考查詢介面:代理人不再一次發出單個SQL查詢,而是可以發出批次查詢,每個查詢都有自己的近似要求。

由於枚舉指數級的搜尋空間(如上述根本原因或群組分析範例)並非代理人推理能力的最佳用途,資料系統或許應該支援更高階的原語,而不是要求代理人明確列出每個SQL查詢。這裡的一個想法是借鑒DBT風格的Jinja巨集,為代理人提供基於循環的原語,以便與資料系統互動。

一支精力充沛、不知疲倦地完成資料任務的代理人軍團

最後一個機會是停止將資料系統視為查詢的被動執行者;資料系統可以變得主動,因為它們在資料和系統特性方面擁有更多基礎,而這些是代理人可能先驗缺乏的。

資料系統可以引導代理人朝不同方向發展,提供相關查詢的結果,並提供效能層級的回饋(例如,系統可以先向代理人提供延遲估計,而不是執行昂貴的查詢)。我們現在能夠這樣做的原因,與過去不同,是因為代理人可以接受任何形式的文字回饋,並且不期望嚴格的SQL查詢結果。

事實上,資料系統還可以預先為代理人準備實體化視圖和虛擬視圖,作為上下文的一部分提供給代理人,因為這可能比讓代理人自行建立或使用它們更便宜或更有效。

由代理人組成的資料系統(Data Systems Of Agents)

之前,我們專注於代理人如何與資料系統互動。現在,我們考慮代理人持續工作所需的一切:它們的「棲息地」、如何記憶、如何相互協調,以及如何處理彼此的故障。

這個代理人基礎架構獨立於驅動原始智慧的推論堆疊。然而,推論堆疊本身正透過API(例如來自OpenAI或Anthropic)被抽象化,或者對於開源模型,則透過隱藏底層細節的服務框架來實現。

到目前為止,代理人基礎架構一直透過像Claude Code和Codex這樣的工具來管理,並結合各種儲存和檢索記憶的機制。

首先,在記憶方面,目前的普遍觀點是檔案就足夠了;代理人寫入非結構化的Markdown(MD)檔案,然後可以使用grep或透過基於嵌入的檢索進行搜尋。

事實上,許多人認為持續學習的解決方案是讓代理人吸收大量資訊(例如,整個程式碼庫、Slack、公司維基等),然後將其學習內容寫入MD檔案,再按需選擇性地檢索。

確實,檔案系統、bash腳本和MD檔案對於代理人來說仍然很重要。然而,當代理人執行絕大多數知識工作時,這種方法在大規模應用時將不再有效。

鑑於有限的上下文視窗,檢索所有可能相關的MD檔案片段並將其塞入上下文,最終將會失效。即使上下文視窗持續增長,不將所有資訊放入上下文也有延遲方面的優勢。

在許多情況下,例如當知識工作涉及與大型資料庫或程式碼庫互動時,將所有相關資料序列化到上下文是不可行的。

作為多代理人群體基礎架構的資料系統

可以使用知識圖譜表示,但知識圖譜由於缺乏結構化搜尋,與非結構化MD記憶體面臨相同的限制。

我們需要的是能夠僅檢索與任務相關的記憶,並跨越多個感興趣的屬性(或面向)。例如,一個偵錯不穩定測試的代理人應該能夠只提取標記有相關模組、語言、框架和故障模式的記憶,而不是基於關鍵字或嵌入相似性進行檢索。

另一個問題是實際要檢索什麼;帶有錯誤的原始代理人追蹤記錄用處不大,因為它們會導致代理人重複相同的錯誤,相反地,我們希望檢索到的記憶是具有糾正性的。

我們最近探索了一個相關的「結構化記憶體」概念,其中我們將記憶體組織在各種屬性中,每個屬性都可以設定為 * 表示普遍適用,或設定為要匹配的值列表。

對於資料代理人來說,這些維度可以包括欄位和表格、操作類型,以及最終的開放式自然語言糾正指令。因此,我們可以包含僅適用於特定操作類型(例如,「執行日期時間操作時,使用會計年度而非日曆年度慣例」)或特定表格(例如,「查詢產品名稱時,product_cleaned 欄位優於 product 欄位」)的記憶。

一個開放性問題是定義應用程式特定的結構化記憶體,或者其他人稱之為記憶體的世界模型。我們認為這類似於為每個應用程式定義綱要,或許代理人本身可以隨著時間的推移幫助我們定義和完善它。

一種儲存和檢索結構化知識的可能方式

結構化記憶體對於演化框架有效管理搜尋空間也將非常有用。事實上,儲存、組織和挖掘大量的單代理人及多代理人追蹤記錄,可以幫助未來的代理人變得更有效率,潛在地透過基於結構化記憶體的機制實現有效的遞迴式自我改進。

另一個挑戰是,當許多代理人執行轉換時,如何支援對共享記憶體的並行編輯以及一般的並行編輯。儘管在支援多版本控制和寫入時複製(copy-on-write)語義方面已有一些有用的嘗試,但當數千個代理人同時嘗試編輯共享狀態時,這些技術是否足夠尚不明確。

例如,當代理人為了回應使用者請求而嘗試各種潛在交易時,絕大多數這些交易的影響都需要回溯,只有一個「正確」交易的結果會被保留。支援「恰好一次」(exactly-once)語義的工作在這裡是相關的,基於CRDTs和操作轉換的底層技術也是如此。

對於記憶體等模糊機制的更新,我們為了延遲考量,可能可以在一致性上犧牲一些完美正確性。雖然代理人可以透過語義推理來補償或回溯其操作,最終完成大多數任務,但主要挑戰在於它們在此過程中相互干擾的程度。一個需要避免的重要故障模式是「活鎖」(livelock)形式,其中不斷的補償動作阻礙了任何有意義的進展。

除了共享狀態之外,當試圖支援一支代理人軍團時,還會出現其他問題,包括代理人失敗時該怎麼辦、代理人之間應如何溝通(直接溝通或透過中間共享狀態),以及如何處理落後代理人。

在支援持久性多代理人執行方面已有一些進展,例如Temporal,但這些解決方案是否能在大規模數千個代理人中應用,仍有待觀察。

關於溝通,我們需要機制來讓代理人之間能夠協商。想像四個開發者代理人試圖就一個共享綱要達成共識,它們各自的目標不同但有重疊。在人類環境中,這將涉及反覆討論和妥協;對於代理人群體,我們必須定義讓它們能夠達成設計共識的機制。