Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ベクトル検索のフィルタを用いた機械学習モデルとの統合 / python-meetup-fuku...

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

ベクトル検索のフィルタを用いた機械学習モデルとの統合 / python-meetup-fukuoka-06-vector-attr

2026.03.04 [AI/ML特集] Python Meetup Fukuoka #6
https://lycorptech-fukuoka.connpass.com/event/380867/

Avatar for monochromegane

monochromegane

March 04, 2026
Tweet

More Decks by monochromegane

Other Decks in Programming

Transcript

  1. 目次 はじめに . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ⁠3 ベクトル検索とは . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ⁠5 ベクトル検索のサービス適用上の課題 . . . . . . . . . . . . . . . . . . . . . . . . . ⁠10 ベクトル検索のフィルタを用いた解決 . . . . . . . . . . . . . . . . . . . . . . . . . ⁠15 Vertex AI による実装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ⁠20 まとめ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ⁠29 2 / 31
  2. k 近傍探索の課題 • 大規模な埋め込みに対する線形探索(全数比較)はコストが高い • スカラ値のようなインデックスが欲しい ‣ KD-Tree、Ball-Tree などの空間分割インデックスが存在 •

    しかし、次元数が増えると性能が劣化し、線形探索に近づく ‣ 埋め込みベクトルは数百〜数千次元 → 厳密な探索は現実的でない 8 / 31
  3. 近似最近傍探索(ANN) • 厳密な最近傍の近似解を高速に返すアプローチ • 代表的な手法: ‣ 量子化: ベクトルを圧縮して比較を高速化(PQ, ScaNN) ‣

    クラスタリング: ベクトルをクラスタに分割し探索範囲を限定(IVF) ‣ グラフ: 近傍グラフを辿って近似解を探索(HNSW) ‣ 実用上はこれらを組み合わせて使う(例: IVF + PQ) 9 / 31
  4. 課題の具体例 EC サイトの商品検索を考える: • クエリ: 「赤いワンピース」 • ベクトル検索の結果: 視覚的に類似した商品が上位に •

    しかしビジネス上は… ‣ 購入されやすさが低い商品が上位に来てしまう ‣ 在庫切れ、価格帯のミスマッチ、季節外れ… → 埋め込みは学習タスクに最適化された表現であり、それ以外の観点は反映されな い → 意味的な類似性に独自のビジネス指標の考慮を加えるアプローチが必要 12 / 31
  5. 検索モデルの改善の課題 • オープンウェイトのモデルが自ドメインで有用とは限らない • ファインチューンやリランカーの構築にも相応の投資が必要: ‣ 学習データ: ドメイン固有のペアデータ(正例・負例)の収集 ‣ 評価基盤:

    検索品質を定量的に測定する仕組み(Recall@k、MRR 等) ‣ 計算資源: GPU/TPU による学習、ハイパーパラメータ探索 ‣ 運用: モデルバージョン管理、インデックスの再構築 → 検索モデルの改善は中長期的な取り組み → 検索の仕組みに手を入れずに短期的に効果を出す手段が必要 13 / 31
  6. アプローチ • 埋め込みベクトルはそのまま利用する • 別軸の ML モデルで推論した値をベクトルの属性として付与 • 検索時にその属性値でフィルタリングする 利点:

    • 埋め込みモデルの再学習が不要 • 推論モデルは独立して開発・更新できる • 軽量・迅速な開発が可能 16 / 31
  7. 属性の付与方法 • ベクトルとは別に「属性」を管理し、検索時にフィルタとして適用する • 属性の付与方法は 2 通り: 直接抽出 推論 データ

    埋め込みモデル ベクトル 属性 (カテゴリ等) ML モデル 属性 (推論値) フィルタ付き 検索 17 / 31
  8. 具体的な適用例 EC サイトでの商品ベクトル検索に適用する場合: 1. 既存: 商品画像の埋め込みベクトルで Vector Search インデックスを構築済 み

    2. 推論モデル: 商品の特徴量から「購入されやすさスコア」を予測する軽量モデル を学習 3. バッチ推論: 全商品に対してスコアを算出し、ベクトルの属性として登録 4. 検索時: score >= 0.7 のようなフィルタを付与して検索 → 類似商品の中からビジネス指標の高い商品に絞り込める 18 / 31
  9. 推論モデルの開発サイクル 小さいモデルだからこそ短いサイクルで回せる: 特徴量設計 + 学習 バッチ推論 + 属性登録 検索結果の 評価

    モデル改善 • 埋め込みモデルの再学習・インデックス再構築は不要 • 推論モデルの更新だけで属性値を差し替えられる • チーム間でモデル知見を再利用する基盤にもなりうる 19 / 31
  10. Vertex AI の活用 Google Cloud の機械学習プラットフォーム Vertex AI が提供する機能を組み合 わせて実現:

    • Model Registry: 学習済みモデルの登録・バージョン管理 • Prediction: 登録モデルによるオンライン推論とバッチ推論を提供 • Vector Search: マネージドなベクトル検索サービス ‣ ANN インデックスの構築・運用 ‣ 属性によるフィルタリングをサポート さらにデータウェアハウスサービス BigQuery との統合により: • バッチ推論の入出力を BigQuery テーブルで直接指定 • 推論結果から属性登録までのデータパイプラインがシンプルに 21 / 31
  11. システム構成 属性登録 フィルタ 検索 BigQuery (学習データ) Vertex AI Training Vertex

    AI Model Registry BigQuery (入力データ) Vertex AI Batch Prediction BigQuery (推論結果) Vertex AI Vector Search アプリ 22 / 31
  12. モデル構築の 2 つのコンテナ Vertex AI にモデルを登録するには 2 つのコンテナが必要: コンテナ 役割

    学習用 モデルの学習を実行し、アーティファクトをエクスポート 推論用 アーティファクトを読み込み、HTTP サーバーとして推論を提供 23 / 31
  13. バッチ推論ジョブの実行(REST) { "displayName": "attribute-prediction", "model": "projects/PROJECT/locations/REGION/models/MODEL_ID", "inputConfig": { "instancesFormat": "bigquery",

    "bigquerySource": { "inputUri": "bq://PROJECT.DATASET.INPUT" } }, "outputConfig": { "predictionsFormat": "bigquery", "bigqueryDestination": { "outputUri": "bq://PROJECT.DATASET.OUTPUT" } }, "instanceConfig": { ... } // 後述 } 25 / 31
  14. 実装のポイント: instanceConfig BigQuery の各行は自動的に推論 API のリクエストに変換される。 instanceConfig でその変換方法を制御: • includedFields:

    入力に含めるカラムを指定 • instanceType: "object" にすると各行をキーと値のペアとして渡す ‣ デフォルト("array")では配列形式になり、推論コンテナの期待する形式と不 一致になる "instanceConfig": { "includedFields": ["id", "features"], "instanceType": "object" } → {"id": 1, "features": [...]} の形式でリクエストが組み立てられる 26 / 31
  15. 2 種類の属性型 Vertex AI Vector Search では 2 種類の属性型をサポート: 型

    説明 トークン型(restricts) 文字列の許可/拒否リストによるフィルタ 数値型(numericRestricts) 数値の比較演算によるフィルタ 検索時に datapoint へフィルタ条件を指定: "restricts": [ {"namespace": "category", "allowList": ["dress"]}], "numericRestricts": [ {"namespace": "score", "op": "GREATER_EQUAL", "valueFloat": 0.7}] 27 / 31
  16. まとめ • ベクトル検索のフィルタ機能を活用し、既存の埋め込みベクトルを変更せずに ML モデルを統合 • 推論値を属性として付与することで軽量かつ迅速な統合を実現 • バッチ推論 +

    ベクトル属性の組み合わせでシステムをシンプルに保つ 展望: Bernardi ら(2019)が提唱する意味的レイヤ(semantic layer)の構 築 • チーム間でのモデル知見の再利用 • 推論結果の横断的な活用基盤へ 参考: Bernardi et al., “150 Successful Machine Learning Models: 6 Lessons Learned at Booking.com,” KDD 2019. 30 / 31