在現代的 AI 應用開發中,我們經常希望在資料庫查詢時直接利用大型語言模型(LLM)來處理資料。例如,我們可能想在 SQL 語句中直接篩選出所有「語意上適合深海潛水」的產品,而不是僅僅搜尋包含「深海」這個關鍵字的行。Google 的 AlloyDB 最近推出的 AI Functions 正是為了實現這個目標,讓開發者能直接在 SQL 中呼叫 ai.generate 或 ai.if 等函數。
然而,對於工程師來說,這會帶來一個嚴重的效能與成本問題:如果資料表有十萬筆資料,而每一筆資料都要呼叫一次外部的 LLM API(例如 Vertex AI),這將導致十萬次網路往返(Round Trip)、極高的 Token 費用以及巨大的延遲。為了克服這個瓶頸,AlloyDB 引入了兩層加速機制。
第一層加速是智慧批處理(Smart Batching)。傳統的處理方式是每一行資料呼叫一次模型,但智慧批處理會將多筆資料整合在單次模型呼叫中。最重要的是,它不需要為每一行重複傳送相同的系統提示詞(System Prompt),而是只傳送一次提示詞並附帶一批資料。這種方式能將吞吐量提升數千倍,非常適合單筆資料量小但提示詞較長的場景。
第二層則是更具建築意義的代理模型(Proxy Model)。這是一種將 LLM 從運行時依賴(Runtime Dependency)轉變為教學者的設計模式。代理模型的核心邏輯是將外部的高階模型(Frontier Model)視為老師,將資料庫內建的輕量化模型視為學生。
代理模型的運作分為兩個階段。首先是訓練階段,開發者使用 PREPARE 指令從資料中抽取樣本,由高階 LLM 進行判定,並利用這些結果在資料庫內部訓練一個輕量級的本地代理模型。接著在執行階段,當 SQL 查詢觸發 ai.if 等函數時,資料庫會優先使用這個本地代理模型進行推論,而不再呼叫外部 API。如果本地模型的信心水準過低,系統才會回退(Fallback)到外部高階模型。
這種設計將 LLM 的判定邏輯「蒸餾」到了資料庫內部,使得查詢速度能達到資料庫原生等級。根據 Google 的內部測試,這種方式在吞吐量上比逐行處理提升了兩萬多倍,且成本降低了六千倍。
除了效能優化,AlloyDB 還整合了模型上下文協定(Model Context Protocol, MCP)的託管伺服器,讓 AI Agent 能更方便地查詢資料庫內容,而無需開發者自行建構 MCP 基礎設施。結合其支援高達百億級向量的 ScaNN 索引,AlloyDB 試圖將結構化查詢、語意搜尋與 LLM 分析全部整合在同一個 SQL 層級中。
對於實務上的工程師而言,在使用這項技術時需要注意三個關鍵點。首先,代理模型目前仍處於預覽階段且僅適用於特定函數,實際效能會隨資料分佈而異,必須經過實測。其次,建議將其視為受控的資料庫擴展,而非萬能的篩選條件,應優先應用在讀取密集型的審核流程,而非直接將模型結果寫回核心系統。最後,在成本管理上,應將模型推論成本與傳統查詢成本分開追蹤,以精確評估 AI 導入的投資報酬率。
來源:infoq.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。