PyCon JP 2026でベクトル検索を発表し、対話から見えたこと
2026年8月21日から23日まで、広島で開催されたPyCon JP 2026に参加しました。カンファレンスでは、2.3万枚を超える写真を検索するシステムについて発表し、最終日のSprintでは初心者向けのベクトル検索レクチャーを行いました。
今回のPyCon JPは、これまで進めてきた画像検索、ANN、ベクトルの診断、検索品質の評価について、実際に動くものとともに紹介する機会になりました。それ以上に印象に残ったのは、質疑応答、個別相談、オープンスペースを通じて、参加者の皆さんが感じている疑問を直接聞けたことです。
登壇そのものについては、会社公式サイトのPyCon JP 2026登壇報告でも紹介しています。本記事ではCMScomLabとして、会場でどのような対話があり、そこから何が見えたのかを報告します。
発表だけでなく、いくつもの形でベクトル検索を伝えた
カンファレンス初日のトークは、「VLMで2.3万枚のPyCon JP写真を検索!無料クラウド枠で実用的なマルチモーダル&顔認識検索システムを構築した裏側」というタイトルで行いました。
VLMによる画像検索と顔検索を、クラウドの無料枠という制約の中でどのように構成したのかを紹介しました。Embeddingモデルの選定、Pythonとブラウザー間でのベクトルの互換性、Firestoreで検索候補を絞る工夫など、登壇前に予告した内容を実際のデモとともにお見せしました。
発表のほかにも、次のような形で参加者の皆さんとベクトル検索について話しました。
- セッション内での2件の質疑応答
- 発表終了後の個別相談
- 小冊子『なぜ「意味」でさがすのか』の配布
- オープンスペースでのディスカッション
- Sprintで約10人を対象にした初心者向けレクチャー
発表資料はSpeaker Deckで公開しています。トークだけでは時間の限られた内容も、終了後の対話やSprintでは、参加者の関心に合わせて掘り下げることができました。
メモリ使用量は、ベクトル本体だけでは決まらない
メモリ使用量は、ベクトル検索について相談を受ける際によく出る論点です。
ベクトル本体の容量は、概算で「件数 × 次元数 × 1要素のバイト数」から考えられます。しかし、実際のシステムでは、ANNインデックス、メタデータ、フィルター用のインデックス、データベースやアプリケーションの実行領域も必要です。レプリカを持つ場合は、その分の容量も考慮します。
さらに、float32のまま保持するのか、量子化するのか、メモリとディスクのどちらへ置くのかによっても変わります。データ件数だけを見て「このDBなら動く」と決めるのではなく、ベクトルの次元数、検索方法、必要な応答速度、更新頻度まで含めた見積もりが必要です。
今回の画像検索では無料枠が明確な制約だったため、全件を毎回読み取らず、候補を絞ってから検索する設計を採用しました。制約を先に決めたことで、必要なデータ構造と検索方法を具体的に比較できました。
遠いはずの言葉でも、コサイン類似度があまり下がらない
Sprintでは、「意味が遠いはずの文字列なのに、コサイン類似度がそこまで低くならないのはなぜか」という疑問を取り上げ、Vector Search Checkupをお見せしながら説明しました。
Embeddingモデルが作るベクトルは、空間全体へ均等に広がるとは限りません。多くのベクトルが共通する方向へ偏っていると、関係が薄い文章同士でもコサイン類似度が一定以上になることがあります。そのため、類似度の絶対値だけを見て「0.7だから似ている」と判断するのは危険です。
Vector Search Checkupでは、方向集中度(cos_mean)、次元活用率(PR/D)、ノルム、PCA寄与率などから、手元のベクトルが持つ特徴を確認できます。診断は良し悪しの判定ではなく、モデルやデータの特徴を知り、次に確かめることを決めるためのものです。詳しい考え方は、ベクトルの特徴を知る「Vector Search Checkup」を公開しましたで紹介しています。
モデルは名前や規模だけで選ばず、実際の検索で比べる
Embeddingモデルをどう選ぶか、という相談も複数ありました。
モデルの選定では、対応言語、テキストや画像といった対象、入力できる長さ、実行環境、速度、ライセンスなどを確認します。ただし、仕様だけでは、自分たちの検索に合うかは分かりません。
実際に入力されそうな検索文と、上位に出てほしい結果を小さくてもよいので用意します。同じデータを複数のモデルでベクトル化し、検索結果を同じ条件で比べれば、大きなモデルが本当に必要なのか、より小さなモデルでも目的を満たせるのかを判断できます。
ここでは、ベクトルとして近い結果を取得できるかだけでなく、利用者が必要とする結果が上位に並ぶかを評価します。ベクトルが近いだけでは、良い検索とは限らないで整理したように、ANNの取りこぼしと、検索結果そのものの良さは分けて確認する必要があります。
どのベクトルDBを選ぶかは、運用条件から考える
「有料で運用するなら、実際にはどのベクトルDBを選ぶか」という質問もありました。当日は、専用のベクトルDBとしてQdrantを有力な候補に挙げました。また、マルチモーダルデータ、メタデータ、Embeddingを同じテーブルで扱えるLanceDBにも今後注目しています。
ただし、すべての案件で同じDBが正解になるわけではありません。次のような条件を確認して選びます。
- データ件数と今後の増え方
- 絞り込みに使うメタデータとフィルター条件
- 更新、削除、再ベクトル化の頻度
- 必要な応答時間と同時アクセス数
- クラウド、セルフホスト、組み込みのどれが運用しやすいか
- バックアップ、監視、冗長化を誰が担うか
- チームがすでに運用しているデータベースとの関係
小規模な検証なら、最初から専用DBを導入せず、全件検索から始める方法もあります。まず基準となる正確な検索結果を作り、データ量や応答時間の問題が見えてからANNやDBを比較する方が、選定理由を説明しやすくなります。
キーワード検索からハイブリッド検索へ、IVFをどう伝えるか
会場で話していて、キーワード検索をベクトル検索へ置き換えると何が変わるのか、具体的にイメージできていない方が多いことにも気付きました。
キーワード検索では、入力された語と文書内の語の一致を起点に候補を探します。ベクトル検索では、入力と検索対象をEmbeddingモデルでベクトルへ変換し、その近さから候補を探します。単に検索エンジンを交換するのではなく、「何を一致と考えるか」と「どの結果を上位にするか」が変わります。
ただし、キーワード検索をすべてベクトル検索へ置き換える必要はありません。固有名詞、製品番号、専門用語のように語の一致が重要な検索は、キーワード検索が得意です。一方、言い換えや表記揺れを含めて意味の近い情報を探す場面では、ベクトル検索が役立ちます。
実際のシステムでは、両方の検索結果を組み合わせるハイブリッド検索が有力です。キーワード検索とベクトル検索でそれぞれ候補を取得し、スコアを統合したり、リランキングしたりして最終順位を決めます。既存のキーワード検索を残したままベクトル検索を追加し、実際の検索文で重み付けや順位を評価すれば、段階的に導入できます。両者の違いは、Pythonで始めるベクトル検索でも整理しています。
また、ANNではHNSWを知っていても、IVF系の考え方は初めて聞くという方が少なくありませんでした。IVFでは、ベクトル空間をあらかじめ複数の領域に分け、クエリに近い領域から候補を探します。すべてのベクトルを比較しない代わりに、どの領域をどこまで探すかによって速度と取りこぼしのバランスが変わります。
用語を先に覚えるより、「なぜ候補を減らす必要があるのか」「減らしたときに何を失う可能性があるのか」から説明する方が伝わりやすいと、今回の対話から改めて感じました。
Sprintでは、約10人と基礎から手を動かした
8月23日のSprintでは、約10人の参加者に向けて、初心者向けのベクトル検索レクチャーを行いました。
ベクトルとは何か、コサイン類似度で何を測っているのか、検索文と検索対象をどのように比較するのかを順番に説明し、実際にコードとデータを動かしながら確認しました。発表では上級者向けに扱った内容も、全件検索という分かりやすい出発点まで戻ることで、ANNやデータベースが必要になる理由へつなげられました。
初心者への説明と、経験者とのディスカッションを同じイベントで行えたことは大きな収穫でした。理解の段階は違っても、モデル、データ、検索方法、評価を分けて考えることは共通しています。
PyCon JPで得た対話を、次の改善へつなげる
PyCon JP 2026に向けて、画像検索システムだけでなく、ベクトルの診断、検索品質の評価方法、小冊子、公開記事を準備してきました。今回、それらを発表し、参加者の疑問に合わせて使えたことで、一つの区切りになりました。
一方で、ベクトル検索を実際に導入するには、モデルやDBを選ぶ前に整理すべきことが多くあります。会場で交わした質問や、これまでに寄せられた相談は、どれも特定の技術だけで完結せず、データ、用途、規模、費用、評価方法を一緒に考える必要があるものでした。
すでにベクトルをお持ちで、その特徴を確認したい場合は、無料のVector Search Checkupをお試しください。診断処理はブラウザー内で完結し、ベクトルデータはサーバーへ送信されません。
まだ何を試せばよいか分からない場合や、モデル・DBの選定、検索品質、メモリや費用について整理したい場合は、ベクトル検索の相談窓口からご相談ください。目的やデータが固まっていない段階から、一緒に確認できます。
PyCon JPで交わした対話を、イベントだけで終わらせず、これからの検証と改善につなげていきます。