# LDA 計画: 04 実装ステップ

[計画トップ](lda.md)

---

## 実装ステップ（案）

| 段階 | 内容 | v0.3.3 Community |
|------|------|-------------------|
| **Phase 1** | LDA 学習・推論のモジュールを用意する。既存語彙（LSA と共通）で BoW を組み、LDA を学習して θ・φ を取得。クエリの θ 推定と、θ 同士の類似度計算まで。DB は触らない。 | ✅ 含める |
| **Phase 2** | `items_lda` テーブルを追加し、学習後の θ を保存。起動時・再学習時の同期（heal / retrain）で LDA ベクトルを更新する。 | ✅ 含める |
| **Phase 3** | 検索パスで「LSA / LDA の切り替え」を反映。設定が LSA なら既存の LSA 検索、LDA なら items_lda とクエリ θ で類似度検索。再学習（retrain）も選択中の方式のみ実行する。 | ✅ 含める |
| **Phase 4** | **UI 改造**（[03 UI 改造](lda_03_ui.md)）。設定パネルに「ベクトル化: LSA / LDA」の単一選択、LDA 時のトピック数 K（規定 128、ユーザー指定可）、再構成ボタン。K 変更時の再構成実行。設定の永続化。 | ✅ 含める |
| **Phase 5（任意）** | トピックラベル表示（各トピックの代表語から φ で取得）、文書の主トピック表示。 | 以降 |

**v0.3.3 の範囲**: Community 版で Phase 1〜4 までを実装する。LSA と LDA の切り替え、規定 128 次元・ユーザー指定での再構成、およびそれに必要な UI 改造を含める。

---

## テスト・検証

| 種別 | 内容 |
|------|------|
| **単体** | LDA モジュール（学習・θ/φ 取得・クエリの θ 推定・類似度計算）を、既存の LSA テスト（`src/backend/src/utils/lsa.rs` の `test_lsa_variance` 相当）と同様にユニットテストする。固定 BoW で学習し、クエリを投げて類似度の順序や範囲が妥当か検証。 |
| **結合** | `items_lda` への θ 保存と、検索パスで「LDA 選択時」に items_lda を参照してランキングする流れを、テスト用 DB で検証。LSA 切り替え時は従来どおり items_lsa/vec_items が使われることも確認。 |
| **手動** | Community 版で「ベクトル化: LDA」に切り替え、再学習（再構成）後に検索クエリを実行し、結果が返ること・類似度が付与されることを確認。K を変更して再構成したあとも同様に動作することを確認。 |
| **UI / E2E** | 設定パネルで「LSA / LDA」の切り替えと「LDA 次元数 K」「再構成」ボタンが表示・操作できることを、[12 UI テスト方針](../../specification/12_ui_testing_options.md) や既存 E2E に沿って検証する（実装後にスペック追加）。 |
| **既存 KPI との関係** | Community の既存テスト（`test-and-heal`、検索ヒット確認）が LDA 導入後も壊れないことを確認。LSA 選択時は従来どおりのパスを通るため、LSA の KPI はそのまま使える。LDA 選択時用の KPI を追加するかは必要に応じて検討。 |
