Ternlight: ブラウザベースのセマンティック検索(7 MB 埋め込みモデル)
Ternlight: ブラウザベースのセマンティック検索(7 MB 埋め込みモデル)
Ternlight は、WebAssembly(WASM)上で CPU により動作する高度に圧縮された埋め込みモデルを利用し、ウェブブラウザ内で高性能なセマンティック検索を実現します。サーバー側の 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 パッケージとして配布されており、別途モデルをダウンロードしたりバックエンドを用意したりする必要がありません。機能とパフォーマンスのバランスを取るために、以下の 2 つのサイズ階層が用意されています。
| Tier | Package | Size | Inference Speed |
|---|---|---|---|
| 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 Docs デモ参照)や商品カタログの高速ローカル検索を実装。
- FAQ とインテントマッチング: ユーザーの問い合わせをサーバーに送信せずに事前定義された回答へマッピング。
- クラスタリング: クライアント側で類似テキストをグルーピング。
- プライバシー保護検索: ユーザーのクエリがローカルデバイスを離れないようにし、機密データの取り扱いに適合。
コミュニティの洞察と考慮点
コミュニティの議論では、分散検索の可能性とクライアント側リソース使用に関する懸念の両方が取り上げられています。
統合の可能性
利用者は、Ternlight を他のローカルファースト技術と組み合わせて、完全に静的なベクトル検索エコシステムを構築することを提案しています。あるユーザーは Astro プラグインと組み合わせて HTML ファイルを自動的に解析し埋め込みを生成する案を出し、別のユーザーは Parquet ファイル上の HTTP Range クエリを利用したポータブル HNSW(階層的ナビゲーション可能小世界)検索と組み合わせ、中央集権的な企業に支配されない分散検索システムを作ることを提案しています。
リソースとプライバシーの懸念
プライバシー向上のメリットは明らかですが、システムリソースへの影響を懸念する声もあります。
"ページを開いたときにファンが狂い出すほど驚くべきことです。"
また、ブラウザにモデルを自動ダウンロードすることのセキュリティ面でのリスクも指摘されており、慎重に扱わなければメモリを食い尽くしたり、悪意あるコードを配布したりする可能性があるとの指摘があります。
要約
Ternlight は 5〜7 MB の小型埋め込みモデルで、WASM を介してクライアント側だけで実行されます。API 呼び出しなしで高速かつプライバシー保護されたセマンティック検索を実現します。
タイトル
Ternlight: ブラウザベースのセマンティック検索(7 MB 埋め込みモデル)