Ternlight:基於瀏覽器的語意搜尋,僅 7 MB 嵌入模型

Ternlight:基於瀏覽器的語意搜尋,僅 7 MB 嵌入模型

Ternlight 透過在 CPU 上以 WebAssembly(WASM)執行的高度壓縮嵌入模型,實現在瀏覽器內的高效能語意搜尋。藉由省去伺服器端 API 呼叫,它能提供「即時搜尋」功能,具備毫秒級延遲並提升使用者隱私。

技術實作與架構

Ternlight 不是大型語言模型(LLM),而是一個句子編碼器,旨在將文字轉換為 384 維向量。這些向量讓系統能以餘弦相似度判斷兩段文字的語意關係,從而根據意義而非關鍵字重疊進行匹配(例如,將「reset my password」與「I forgot my password」匹配)。

主要技術規格包括:

  • 模型來源:從 MiniLM 透過三元量化感知訓練蒸餾而來。
  • 推論引擎:全新以 Rust 撰寫,編譯為 WASM SIMD,以獲得最佳 CPU 效能。
  • 硬體需求:僅需 CPU,無需 GPU。
  • 效能:產生嵌入向量約需 2.5 ms 至 5 ms。

模型層級與部署

Ternlight 以 npm 套件形式發佈,免除額外模型下載步驟或後端基礎設施需求。它提供兩種尺寸層級,以在功能與效能之間取得平衡:

層級 套件 大小 推論速度
Base @ternlight/base 7 MB 約 5 ms
Mini @ternlight/mini 5 MB 約 2.5 ms

開發者只需少量程式碼即可實作語意搜尋:

import { embed, similar } from '@ternlight/base';

similar('easy weeknight dinner ideas', recipes, { topK: 3 });
// 在約 5 ms 內返回排序結果,且無任何網路延遲

使用情境與實務應用

在裝置端執行嵌入模型開啟了多項具體技術機會:

  • 語意搜尋:為文件(如 React 文件示範)或商品目錄實作快速本地搜尋。
  • FAQ 與意圖匹配:將使用者查詢對應至預先定義的答案,無需將資料傳至伺服器。
  • 分群:在客戶端本地將相似文字分組。
  • 隱私保護搜尋:確保使用者查詢永遠不離開本機裝置,對敏感資料尤為重要。

社群見解與考量

社群討論同時凸顯了分散式搜尋的潛力與客戶端資源使用的顧慮。

整合潛力

使用者建議將 Ternlight 與其他本地優先技術結合,打造完整的靜態向量搜尋生態系。一位使用者提議與 Astro 插件結合,自動解析 HTML 檔案並產生嵌入;另一位則建議搭配可透過 HTTP range 查詢 Parquet 檔案的可攜式 HNSW(Hierarchical Navigable Small World)搜尋,構建不受中心化公司控制的分散式搜尋系統。

資源與隱私顧慮

雖然隱私優勢明顯,但仍有使用者擔心系統資源的影響:

"當打開網頁時,我的風扇竟然開始狂轉,真是讓人吃驚。"

此外,也有人關注自動下載模型至瀏覽器的安全性,認為若處理不當,可能被濫用來佔用記憶體或散佈惡意程式碼。


摘要: Ternlight 是一個極小的嵌入模型(5‑7 MB),完全在客戶端透過 WASM 執行,實現快速且保護隱私的語意搜尋,無需 API 呼叫。

標題: Ternlight:基於瀏覽器的語意搜尋,僅 7 MB 嵌入模型

Sources