この記事でわかること
- ベクトル検索アプリの コード全体の構成(ファイル分割の考え方)
- 各ファイルの役割と実装方針
- 後続の「実装編」で深掘りするポイント
ここから実際のコードや仕組みに踏み込んでいきます。
まずはアプリを実装する前に、全体をどのように分けて管理していくかを整理します。
コードの詳細は次回以降の記事で扱いますので、まずは 全体像を解説します。
プロジェクト全体の構成イメージ
アプリは大きく 管理者用(インデックス構築) と ユーザー用(検索のみ) の2つに分かれます。
ディレクトリ構成の例は以下です。
vector_search_app/
├── README.md # プロジェクト説明
├── requirements.txt # 依存パッケージ
├── config_admin.yaml # 管理アプリ用設定
├── config_user.yaml # ユーザアプリ用設定
├── scripts/ # 共通ユーティリティ
│ └── utils.py
├── admin_app/ # 管理アプリ(インデックス構築)
│ ├── __init__.py
│ ├── build_index.py # インデックス構築スクリプト
│ ├── reader.py # Excel読み込み・チャンク化
│ ├── vectorizer.py # 埋め込みモデルロード・エンコード
│ └── config.py
└── user_app/ # ユーザアプリ(検索GUI)
├── __init__.py
├── search_app.py # Flet GUI本体
├── retriever.py # ベクトル検索処理
└── config.py
各フォルダ・ファイルの役割
📁 admin_app/
— 管理アプリ
- reader.py
Excelデータベースを読み込み、適切なサイズに分割(チャンク化)します。 - vectorizer.py
埋め込みモデルをロードし、テキストを数値ベクトルに変換します。 - build_index.py
上記の処理をまとめ、ベクトルストア(FAISSなど)を構築します。
📁 user_app/
— ユーザーアプリ
- retriever.py
ユーザーの検索クエリを埋め込み化し、ベクトルストアから類似度検索を実行します。 - search_app.py
FletベースのGUI。検索ボックス・検索結果表示・フィードバック機能を持ちます。
📁 scripts/
— 共通処理
- utils.py
ログ出力、共通関数、ファイルパス管理など。
処理の流れ(全体像)
管理アプリ(admin_app)
- Excelデータベースを読み込む
- 埋め込みモデルでベクトル化
- FAISSに保存し、検索用データベースを完成させる
ユーザーアプリ(user_app)
- ユーザーが検索ワードを入力
- 入力をベクトル化
- FAISSに問い合わせて類似度の高い候補を取得
- GUIに結果を表示
まとめ
- アプリは「管理アプリ」と「ユーザーアプリ」に分けると整理しやすい
- コードは役割ごとにファイル分割して、再利用性を高める
- 次回からは、実際にコードを書きながら「ベクトルストアの作成」を行う
今後の連載内容
- 【④ 実装編 – ベクトルストア作成】
→admin_app/build_index.py
を中心に、実際にベクトルDBを構築する処理を解説 - 【⑤ 実装編 – 検索アプリ開発】
→user_app/search_app.py
を中心に、検索GUIの作り方を紹介