概要
最新のVLMやInsightFaceを活用したデータ処理から、Firebaseの無料枠に収めるために施した「独自のベクトル枝刈りアルゴリズム」の工夫、Transformers.jsを活用したエッジ(ブラウザ)側でのクエリ埋め込みなど、低コストで実用的なWebサービスの全アーキテクチャと工夫を、公開コードとともに紹介します。
【背景と課題】 PyCon JPには過去23,000枚を超える写真がありますが、「パネルディスカッションの写真」などを探すのは困難でした。 VLMを活用すれば実現可能ですが、コミュニティで運用するには「サーバー維持コスト」が大きな壁となります。
【無料枠に収める技術的工夫】
-
Pythonによる高速なデータ処理とPoC Google SigLIP 2(VLM)による画像ベクトル(23K件)と、InsightFace(ArcFace)による顔ベクトル(70K件)を抽出。DuckDBとJupyter Notebookを用いたPoC。
-
計算リソースのクライアントサイドへの委譲とONNXによるモデル選定 テキストクエリをベクトル化するためのEmbeddingモデルを、transformers.js を用いてユーザーのブラウザ側で実行。サーバーレス(無料枠)環境での計算リソース不足を解消。Python側での推論結果と、ブラウザ側(ONNX形式)に変換・実行した際の出力ベクトルが同一であることを検証しクロスプラットフォームで検索精度を担保できるモデルを採用。
-
独自実装によるベクトル検索のコスト削減 Firestoreのベクトル検索機能は高コストです。これを回避するため、Python側でデータをクラスタリング(IVF的な考え方)し、独自に実装したインデックスを用いてFirestore側で対象データを約8%まで事前枝刈りしてからkNN検索。
スピーカーについて
寺田 学 (Manabu TERADA)
Python Web関係の業務を中心にコンサルティングやシステム構築を(株)CMSコミュニケーションズ代表取締役として手がけている。
ベクトル研究家
Pythonをはじめとした技術話題を扱うPodcast「terapyon channel」https://podcast.terapyon.net/ を配信中。機械学習図鑑(翔泳社: 2019年4月)を共著、Pythonによるあたらしいデータ分析の教科書第3版(翔泳社: 2025年5月)を共著、スラスラわかるPython 第2版(翔泳社: 2021年12月)を監修、Pythonハッカーガイドブック(マイナビ出版: 2020年5月)を監訳、その他執筆活動も行っている。
- (株)CMSコミュニケーションズ 代表取締役 https://www.cmscom.jp
- Python Asia Organization Founder & Board Member https://pythonasia.org
- 一般社団法人Pythonエンジニア育成推進協会 顧問理事 https://www.pythonic-exam.com
- PSF(Python Software Foundation) Fellow https://www.python.org/psf/membership/
- Plone Foundation Ambassador https://plone.org