ベクトルが近いだけでは、良い検索とは限らない
ベクトル検索では、検索文や画像をEmbeddingモデルでベクトルに変換し、近いベクトルを検索結果として取り出します。それでは、最も近いベクトルを正しく取得できれば、良い検索になったと言えるのでしょうか。
ベクトルの近さは重要ですが、それだけで利用者が欲しい結果になるとは限りません。良い検索を作るには、ベクトル空間での近さと、検索結果としての良さを分けて評価する必要があります。
今回は、画像検索を例に、この二つの違いと検索結果の評価方法を整理します。
同じ「似ている」でも意味が違う
画像を見て「似ている」と感じる理由には、いくつもの種類があります。
- 同じ人物が写っている
- 色や構図が似ている
- 同じ場所で撮影されている
- 「発表」「受付」「懇親会」といった場面の意味が近い
- 同じイベントや時期の写真である
例えば、「ステージで発表している人」と検索したとき、背景や構図の似た写真が上位に並ぶかもしれません。しかし、利用者が特定の人物を探しているなら、それだけでは十分ではありません。反対に、同じ人物の写真でも、受付にいる場面は検索意図から外れる可能性があります。
Embeddingモデルは、学習した特徴をもとに画像や文章をベクトル空間へ配置します。コサイン類似度などで測った近さは、そのモデルが捉えた特徴の近さです。利用者の目的や、そのシステム固有の業務上の重要度まで、常に表しているわけではありません。
まず全件検索を基準にする
検索対象が多くなると、ANN(近似最近傍探索)を使って候補を絞り込みます。ANNの評価では、全件のベクトルを比較した結果を基準にして、同じ候補をどれだけ取得できたかをRecall@kなどで測ります。
これは、ANNによる取りこぼしを確認するために有効です。ただし、ここで基準にしているのは「全件検索で得られた近いベクトル」であり、「利用者にとっての正解」とは限りません。
この違いを意識すると、検索結果が良くないときに、問題を切り分けやすくなります。
- 全件検索でも欲しい結果が出ない
- 全件検索では出るが、ANNでは取りこぼす
- 欲しい結果は出るが、順位や見せ方が使いにくい
1の場合は、Embeddingモデル、入力する検索文、検索対象のデータなどを見直します。2の場合は、ANNの方式や候補数、パラメーターの調整が必要です。3の場合は、フィルター、リランキング、画面での表示方法なども検討対象になります。
すべてを「ベクトル検索の精度」という一言で扱わず、どの段階で期待と違っているのかを確認することが大切です。
検索結果としての正解を用意する
ベクトル検索のPoCはデータ準備から始まるでは、実際に使われる検索語と、上位に出てほしい結果を正解例として用意することを紹介しました。
画像検索なら、例えば次のような組み合わせを作ります。
- 「受付」から、参加者を迎えている写真を探す
- 「壇上で発表」から、登壇中の写真を探す
- 「集合写真」から、複数人が並んでいる写真を探す
このとき、正解を一枚だけに決める必要はありません。一つの検索文に対して複数の画像が正解になり、画像によって重要度が異なる場合もあります。
また、検索文だけで正解を決めるのではなく、「誰が、何のために探すのか」も考えます。同じ「Python」という検索でも、イベント写真を探す場合と、技術文書を探す場合では期待する結果が異なります。
上位の結果をどう測るか
検索の評価にはさまざまな指標があります。PoCの初期段階では、指標を増やしすぎず、確認したいことに合わせて選びます。
Precision@k
上位k件のうち、正解がどれだけ含まれているかを表します。
例えば上位5件のうち4件が期待した画像なら、Precision@5は80%です。検索画面の最初に、関係のある結果がどれくらい並ぶかを見るのに向いています。
Recall@k
正解として用意した結果のうち、上位k件までにどれだけ取得できたかを表します。
見つけるべき画像をできるだけ取りこぼしたくない場合に重要です。一方で、データ全体から正解を漏れなく選ぶのは簡単ではないため、正解データの作り方にも注意が必要です。
MRR
最初の正解が何番目に現れたかを評価する指標です。最初の一件を早く見つけたい検索に向いています。
指標は、検索の良さを別々の角度から数値にしたものです。数値が一つ高ければ、どの用途でも良い検索になるわけではありません。利用者が複数の候補を見比べるのか、最初の一件をすぐに開きたいのかによって、重視する指標も変わります。
数値だけでなく、結果を実際に見る
評価指標を計算しても、検索結果を人が確認する作業は残ります。
画像検索では、正解と不正解の境界が曖昧になることがあります。「受付」という検索に、受付の看板だけが写った写真を含めるのか、受付近くで会話している写真を含めるのかは、利用目的によって変わります。
結果を実際に並べて見ると、数値だけでは気付きにくい傾向も分かります。
- 特定の色や構図に引っ張られている
- 似た写真ばかりが上位を占めている
- 日本語と英語で検索結果の傾向が違う
- 人物は合っているが、場面が違う
- 古い情報が上位に出続けている
こうした傾向を記録し、検索文や条件を変えて再現することで、次にどこを改善するかを判断できます。数値による比較と、人が結果を見る確認は、どちらか一方ではなく組み合わせて使います。
良い検索は、目的から決まる
ベクトル検索は、人が使う言葉や画像の意味を手がかりに、従来のキーワード検索では見つけにくかった情報を探せる技術です。その可能性を生かすには、近いベクトルを高速に取り出すことと、その結果が利用目的に合っているかを確かめることの両方が必要です。
Embeddingモデル、全件検索、ANN、フィルター、リランキングは、それぞれ検索結果に影響します。どれか一つの数値だけを見るのではなく、段階を分けて評価すれば、改善すべき場所も見つけやすくなります。
8月21日(金)のPyCon JP 2026では、約2.3万枚の写真を対象にした画像検索システムを実際にお見せします。どのように候補を探しているかだけでなく、その検索結果を見て「これは欲しかった写真だ」と感じられるかにも注目していただければと思います。