Google 搜尋架構在 2001 年跨過一道成本門檻:60 個索引分片各有約 20 份副本,合計約 1,200 台伺服器的記憶體已足以放下一份完整索引。 Google 首席科學家 Jeff Dean 後來回顧,這筆估算促使團隊把索引從硬碟搬進分散式記憶體。查詢延遲下降只是第一層收益;更重要的是,系統終於有餘裕把使用者輸入的三、四個字詞擴成約 50 個相關詞,搜尋品質跟著改變。

這段歷史常被濃縮成「把硬碟換成記憶體,所以 Google 變快了」。這個說法沒有錯,卻漏掉最值得工程團隊帶走的一課:當流量、複本數與硬體規模跨過臨界點,原本不合理的架構可能突然變得划算。此時若只優化舊系統,團隊往往會錯過更大的產品收益。

1,200 台伺服器改變了成本模型

早期 Google 搜尋採分片架構。索引愈大,分片就愈多;流量愈高,每個分片需要的副本也愈多。Dean 在 2026 年 2 月的訪談中給出一組具體數字:大約 60 個分片,每個分片約 20 份副本,整個資料中心因此有約 1,200 台裝有硬碟的機器。

團隊重新計算後發現,這 1,200 台機器的記憶體加總起來,已容得下一份完整索引。硬體原先是為了承接查詢量而擴充,流量帶來的複本規模反而創造了另一種資源:足以改寫讀取路徑的分散式記憶體容量。

60 個索引分片與 20 份副本組成約 1,200 台伺服器的記憶體索引架構

2003 年,Luiz André Barroso、Jeff Dean 與 Urs Hölzle 公開的 Google 叢集架構論文,描述了超過 15,000 台平價 PC 組成的叢集。搜尋索引被切開後,可讓單一查詢同時使用多台處理器;故障則交給軟體容錯。這份論文補上了商業面:Google 追求的是單位成本下的總吞吐量,而非單台伺服器的最高效能。

這個成本結構很容易被忽略。若一家公司只看每 GB 記憶體比硬碟貴多少,記憶體方案會顯得奢侈。Google 當時面對的問題不同。為了處理流量,公司已經支付多份索引副本、機架、電力與維運成本;應該比較的是「維持大量硬碟搜尋」與「利用既有機群的總記憶體改寫查詢能力」,而非兩個零組件的牌價。

省下來的延遲,被拿去買搜尋品質

硬碟方案限制了每次查詢可碰觸的詞數。加入一個新詞,可能讓每個分片多一次磁碟尋道;分片數增加後,這筆成本會被放大。團隊因此必須克制查詢擴展,避免一個簡短問題拖慢整條服務鏈。

完整索引進入記憶體後,成本曲線變了。Dean 說,系統可以把使用者原本三、四個字詞的查詢擴成約 50 個詞,納入單複數、同義詞與相關說法。搜尋開始處理「restaurant、restaurants、cafe、bistro」之間的關係,而非只追逐完全相同的字面形式。

硬碟索引限制查詢擴展,記憶體索引讓三、四個字詞擴成約 50 個相關詞

這不是今日以向量嵌入或大型語言模型為基礎的語意搜尋。它是較早期的查詢擴展,仍建立在傳統倒排索引與檢索流程上。真正的轉折在於:架構改善釋放了一筆延遲預算,產品團隊把預算用在更寬的候選集合,而不是只讓同一批結果快幾毫秒出現。

時間 原有瓶頸 可驗證的尺度 架構改變 使用者得到的結果
2001 年 每個擴展詞都可能觸發多次磁碟尋道 約 60 個分片 × 20 份副本 = 1,200 台機器 完整索引改放分散式記憶體 三、四個查詢詞可擴成約 50 個相關詞
2003 年 單機升級無法經濟地承接全球查詢量 叢集超過 15,000 台平價 PC 分片、平行查詢與軟體容錯 以較低單位成本增加吞吐量
2012 年 傳統聲學模型的辨識錯誤率遇到瓶頸 5,870 小時 Voice Search、1,400 小時 YouTube 語音 深度神經網路進入大型語音系統 Android 語音辨識相對錯誤率下降超過 20%
2019 年 約 2 GB 解碼圖難以放進手機 450 MB 的 RNN-T 模型達到伺服器模型同等準確度 端到端模型移到裝置端 離線可用,省去網路延遲與斷線風險

第二個故事發生在 2012 年,不是 2013 年

另一段常見說法把 Google 深度學習語音辨識的實用化放在 2013 年。Google 的公開紀錄指向更早的時間。2012 年 8 月 6 日,Google Research 已宣布 Android Jelly Bean 的語音輸入使用神經網路,並稱相對錯誤率降低超過 20%。

同年的 Interspeech 論文提供更細的測試資料。研究團隊以 5,870 小時 Voice Search 語音和 1,400 小時 YouTube 語音訓練大型詞彙辨識系統;相較當時的高斯混合模型基準,兩套資料的字詞錯誤率分別下降 3.7 與 4.7 個百分點。這些是絕對差值,不能直接拿來替換官方公告中的相對降幅。

Jeff Dean 等人發表的 DistBelief 論文則說明了底層條件。系統可用數千台機器與數萬個 CPU 核心分散訓練,研究團隊曾訓練比當時公開文獻大 30 倍的深度網路,也把相同方法用在商用語音辨識服務。演算法進步很重要,能把模型訓練、服務與產品發布接成一條線的系統同樣重要。

這裡有一個容易犯的歸因錯誤:把成果寫成某位明星工程師單獨完成。公開論文列出 Navdeep Jaitly、Patrick Nguyen、Andrew Senior、Vincent Vanhoucke 等研究者;DistBelief 也有十多位共同作者。Dean 的價值在於他清楚說明了設計方法,成果本身屬於跨系統與語音團隊的共同工作。

三次改寫,共用的是同一種判斷方式

搜尋索引、深度學習訓練與裝置端語音辨識用了不同技術,決策形狀卻相似。團隊先量出主導成本,再找出規模跨越點,最後把省下來的資源換成使用者能感受到的品質。

2019 年的裝置端語音辨識是另一個乾淨案例。Google 表示,傳統伺服器端語音系統的解碼圖接近 2 GB,不適合直接放進手機。新的 RNN Transducer 約 450 MB,準確度與伺服器模型相當。模型縮小後,檔案變小只是表面收益。語音輸入可以離線工作,也不再受網路延遲與連線品質牽制。

我喜歡這幾個案例的地方,在於它們都不把效能當成終點。快取命中率、模型大小或每秒查詢數只是工程指標。只有當這些數字換成更多可搜尋的意思、更少聽錯的字或離線可用的功能,投資才完成。

現在的 AI 團隊該重算哪些數字

生成式 AI 系統也在重演相同問題。很多團隊一看到延遲過高,就先換更快的模型或增加 GPU;一看到檢索品質不穩,就先調提示詞。這些動作可能有效,但會把架構問題留在原地。

在改程式之前,至少先把下列數字放在同一張估算表:尖峰每秒請求數與並行量、模型權重與 KV cache 每次搬移的位元組數、檢索索引的大小與副本數、端到端延遲目標、失敗重試造成的額外成本。接著找交叉點:現有副本的總記憶體是否已容得下完整索引?批次處理省下的資料搬移,能否換成更好的重排模型?小模型若把回應時間降十倍,產品是否能多做一次驗證?

這套方法也有邊界。記憶體方案會增加成本與故障後的重建壓力;多一步重排可能改善品質,也可能拉長尾端延遲。估算不能取代壓力測試。它的用途是及早淘汰不合比例的設計,讓工程時間花在值得實驗的路徑上。

常見問題

Google 在 2001 年把整個網際網路放進一台伺服器嗎?

沒有。Dean 描述的是把一份完整搜尋索引分散放進約 1,200 台機器的記憶體,不是塞進單機。索引仍採分片與複本設計,叢集也需要軟體容錯。

搬進記憶體等於 Google 在 2001 年就有現代語意搜尋嗎?

不等於。當時的改善主要是查詢擴展,可一次查更多同義詞與變形詞。今日的向量檢索與大型語言模型使用不同表示法;兩者共同點是都試圖放寬精確字詞比對。

Google 的深度學習語音辨識是在 2013 年才上線嗎?

Google 的官方紀錄顯示,Android Jelly Bean 在 2012 年已使用神經網路語音辨識。2012 年 8 月的 Google Research 文章也公布超過 20% 的相對錯誤率改善,因此把產品轉折點寫成 2013 年不夠準確。

AI 或 RAG 團隊怎麼套用這套工程方法?

先用實際流量與資料大小估算成本,不從工具名稱開始。若副本數、記憶體、資料搬移或模型延遲已跨過交叉點,就比較新的整體架構;再用壓力測試驗證尾端延遲、品質與單位請求成本。

權威引用

Author Insight

我在評估 AI agent、RAG 與推論架構時,最怕看到團隊太早討論品牌與框架,卻沒有一張基本的容量估算。真正省時間的文件通常很樸素:五個關鍵數字、兩個交叉點、一個可被測試推翻的假設。它不會替你完成設計,卻能避免三週後才發現整條路走反。

Tenten 近期協助團隊檢視 AI agent 與檢索系統時,也會先把流量、延遲、資料搬移和失敗成本量化,再決定模型與基礎架構。如果你正準備重整現有系統,可以和 Tenten 團隊討論架構評估

術語表

  • 倒排索引(inverted index):以詞彙反查文件位置的資料結構,是傳統全文搜尋的基礎。
  • 分片(shard):把大型資料集切成多份,分散到不同機器處理。
  • 複本(replica):同一份資料的額外副本,用來增加查詢容量與容錯能力。
  • 字詞錯誤率(word error rate, WER):語音辨識輸出與正確逐字稿的差異比例。
  • RNN Transducer(RNN-T):將聲音序列直接轉成文字序列的神經網路架構,適合串流辨識。
  • KV cache:大型語言模型推論時保存注意力鍵值的暫存資料,可減少重複計算,也會占用大量記憶體。
Share this post
Ewan Mak

I'm a Full Stack Developer with expertise in building modern web applications that fast, secure, and scalable. Crafting seamless user experiences with a passion for headless CMS, Vercel and Cloudflare

Loading...