LSA (Latent Semantic Analysis) 導入後も DB 側のベクトルサイズが 768次元のまま(LLMからの残滓)であり、検索ロジックも速度面で非効率だったため、これを LSA 最適な 50次元に統一し、DB の高速検索機能を有効化するため。
vec_items テーブルが 768次元で作成されており、実質的に使われていなかった(Rust側で全計算していた)。sqlite-vec の MATCH 演算子を活用し、DB 側で高速なベクトル検索を完結させる。lib.rs の初期化設定を 50次元に変更し、DB の再構築を促すようにした。MATCH 機能を使っていない。
mcp.rs の search_text を刷新し、sqlite-vec の仮想テーブルに対して MATCH クエリを発行するように変更した。AIエージェント(Antigravity)は以下の手順で実施した。
lib.rs 内の dimension 定数を 50 に変更。add_item_text / update_item 時に、LSA プロジェクション結果を f32 型の配列として JSON 文字列化し、vec_items テーブルの embedding カラムに保存。search_text において、クエリを 50次元の LSA 空間に射影し、sqlite-vec の MATCH 構文で近傍検索を実行。lsa_retrain ツールを更新し、全体の再学習後に vec_items も 50次元で一括更新するように実装。cargo check および既存の単体テストをパスし、次元不整合が解消されたことを確認した。graph LR
Input[Query Text] --> Tok[Vibrato]
Tok --> LSA[LSA Projection - 50D]
LSA --> SQV[sqlite-vec MATCH]
SQV --> DB[(vec_items - 50D)]
DB --> Res[Similarity Score]
Res --> UI[App Display]
subgraph "Legacy (Removed)"
LLM[Gemma 768D]
Loop[Rust-side Loop Calculation]
end
AIエージェントは、DB スキーマとモデルのランクを 50次元で完全に一致させることで、リソース効率と検索速度を最大化した。また、sqlite-vec の機能を活用することで、将来的なドキュメント増加に対してもスケーラブルな構成を構築できたと判断する。