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 嵌入模型