Newer
Older
TelosDB / journals / 20260219-0006-非LLM検索移行.md

20260219-0006-非LLM検索移行

作業実施の理由

TelosDB を LLM 依存のない、軽量で自己完結したデスクトップアプリケーション(「軽さは正義」)に進化させるため。

指示

  • 背景: 現行の実装では LSA が導入されているものの、依然として Gemma (llama-server) がサイドカーとして起動し、検索ロジックも LLM に依存していた。
  • 観点: セマンティック検索の実装を LSA に一本化し、サイドカーの起動を停止することで、バイナリサイズとメモリ使用量の削減を図る。
  • 意図: LLM なしで実用的な日本語検索を実現し、セットアップの煩雑さを解消する。

指摘事項とその対応

  • 指摘: UI 上でモデル名が "Gemma" と表示され続けている。
    • 対応: lib.rsMODEL_NAME 定数を LSA 用に更新した。
  • 指摘: search_text が LLM の埋め込み生成に失敗した際に LIKE 検索にフォールバックするが、最初から LSA を使うべき。
    • 対応: search_text 内部から get_embedding 呼び出しを削除し、直接 LSA モデルによる Cosine Similarity 計算を行うようリダイレクトした。
  • 指摘: 不要な llama-server プロセスが起動している。
    • 対応: lib.rssetup ライフサイクルからサイドカー起動処理をコメントアウトし、完全に停止した。

作業詳細

AIエージェント(Antigravity)は以下の手順で移行を実施した。

  1. バックエンド刷新: src-tauri/src/mcp.rs を大幅に書き換え、埋め込み生成 API への依存を排除した。
  2. LSA 統合: mcp.rs 内で LsaModel を読み出し、ドキュメントの追加時や検索時に即座に LSA ベクトルを計算・照合するロジックを実装した。
  3. UI 調整: src/index.html において、スコアの計算式を 1 - distance から LSA の similarity に変更し、ステータス表示を LSA 稼働状況に合わせて調整した。
  4. 検証: cargo check によるビルド確認および cargo test による形態素解析・LSA コアロジックの動作検証を行い、全て正常であることを確認した。

Mermaid図解

graph TD
    A[User Request] --> B[Tauri App]
    B --> C{LSA Model Loaded?}
    C -- Yes --> D[Vibrato Tokenizer]
    D --> E[LSA Vector Projection]
    E --> F[Cosine Similarity Search]
    C -- No --> G[SQL LIKE Search Fallback]
    F --> H[Search Results]
    G --> H
    H --> I[UI Display]
    
    subgraph "Excluded Components (Non-LLM)"
        X[llama-server Sidecar]
        Y[Gemma GGUF Model]
    end
    X -.->|Disabled| B

AI視点での結果

AIエージェントは、LLM 依存を排除することで起動速度の向上とリソース消費の劇的な削減を達成した。LSA モデルはメモリ上で完結し、外部サーバーとの通信や重い推論エンジンが不要になったため、本来の TelosDB のコンセプトである「究極の軽快さ」を実現できたと評価する。