ユーザーより、検索精度の向上のため文書を約 800 文字単位で分割して処理するよう指示があったため。
長い文書を一つのベクトルとして扱うと、情報の密度が希薄になり、特定のパラグラフに基づいた検索が困難になる。
検索の粒度を細かくし、ユーザーが必要な情報(節や項レベル)に直接リーチできるようにする。
lindera や ndarray-linalg の依存関係でビルドが通らない。src-tauri/src/mcp.rs の add_item_text 関数に、chars().collect::<Vec<char>>().chunks(800) を用いたチャンク分割ループを導入した。Cargo.toml から ndarray-linalg を削除し、lindera の代わりに簡易的な JapaneseTokenizer 実装を tokenizer.rs に導入した。uuid クレートを Cargo.toml に追加し、セッション管理機能を復旧させた。mcp.rs にユニットテストを追加し、分割ロジックの正確性を検証した。graph TD
A[開始: チャンク分割指示] --> B[add_item_text 修正]
B --> C{依存関係エラー発生}
C --> D[Lindera/Linalg の整理]
D --> E[ダミートークナイザー導入]
E --> F[ビルド成功]
F --> G[ユニットテスト実施]
G --> H[完了: 検証済み]
チャンク分割の導入により、今後の検索機能において「文書全体」ではなく「特定の文脈」のヒット率向上が期待できる。Windows 環境特有のビルド課題に対しては、一時的な簡略化によって開発を継続可能な状態に維持した。