【ベクトル検索アプリ開発③】実装編-全体構成-

この記事でわかること

  • ベクトル検索アプリの コード全体の構成(ファイル分割の考え方)
  • 各ファイルの役割と実装方針
  • 後続の「実装編」で深掘りするポイント

ここから実際のコードや仕組みに踏み込んでいきます。
まずはアプリを実装する前に、全体をどのように分けて管理していくかを整理します。
コードの詳細は次回以降の記事で扱いますので、まずは 全体像を解説します。

プロジェクト全体の構成イメージ

アプリは大きく 管理者用(インデックス構築)ユーザー用(検索のみ) の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の作り方を紹介