情報検索

Takami Torao #InformationRetrieval #SearchEngine
  • このエントリーをはてなブックマークに追加

1. 概要

情報検索 (IR; information retrieval) は大規模な文書集合の中からユーザの情報要求を満たす文書を見つけ出すための技術分野である。この技術を実装したソフトウェアを検索システム (search system) または検索エンジン (search engine) と呼ぶ。

情報検索が対象とする処理は、演算処理やリレーショナルデータベースの問い合わせのように結果が一意に定まる問題ではない。ユーザが与えたクエリーに対して「どの文書がどの程度ユーザの役に立つか」という本質的に曖昧な判断を行い、情報に順位付けをして提示する点に特徴がある。このためデータ構造とアルゴリズムの問題であると同時に、統計や機械学習、そして評価方法論の分野も含む。

Table of Contents

  1. 1. 概要
  2. 2. 問題設定
    1. 2.1. 事前計算による償却
  3. 3. マッチングとランキング
  4. 4. 検索方式
    1. 4.1. キーワード検索
    2. 4.2. ベクトル検索
    3. 4.3. 生成検索
    4. 4.4. ハイブリッド検索
  5. 5. 検索システムの評価
  6. 6. 参考文献

2. 問題設定

情報検索の基本的な問題設定は、文書集合 とクエリー が与えられたとき、 に対する関連度の高い順に の部分順序集合を返すことである。実用的な検索システムは 全体を順序付けるのではなく、上位 件のみを返す。

ここで、ユーザが本当に必要としているのは情報要求 (information need) であって、クエリーはそれを言葉に置き換えた不完全な表現に過ぎないという点に注意すべきある。「東京 ホテル」というクエリーの背後には、出張の宿泊先を予約したいのか、ホテルの歴史を調べたいのかでまったく異なる情報要求が存在しうる。検索システムの品質は、クエリーとの表面的な一致ではなく、この情報要求をどれだけ満たせたかで測られる。ある文書がユーザの情報要求を満たすとき、その文書はクエリーに適合 (relevant) していると言う。

2.1. 事前計算による償却

文書集合を先頭から末尾まで走査してクエリーに一致する箇所を探す逐次検索 (sequential search) は、文書集合の規模に比例した時間を必要とするため現実的な検索には適さない。これに対して、検索システムは文書集合をあらかじめ解析してインデックス (index; 索引) と呼ばれる検索用のデータ構造を構築しておき、個々の検索ではそのインデックスのみを参照する。

検索システムとは同じ文書集合に対して検索が繰り返し実行されるという前提のもとで、一度だけの事前計算コストを支払うことによって個々の検索の応答時間を短縮する。つまり、インデックスの事前計算コストはその後に繰り返される検索によって償却される (amortize) という考えに基づく。この前提は後述するどの検索方式にも共通しており、方式ごとの違いは「事前に何を計算し、どのようなデータ構造で保持するか」の違いとして現れる。

3. マッチングとランキング

検索の処理はマッチング (matching)ランキング (ranking) の 2 段階に分けて考えることができる。マッチングはクエリーに関係する可能性のある文書を候補として絞り込む処理であり、ランキングは絞り込まれた候補にスコアを与えて順序付ける処理である。

文書集合が数億件の大規模検索において、検索のたびにすべての文書に対して高精度のスコアリングを適用することは現実的ではない。そこで、まず高速だが粗い方法で候補を数千件程度まで削り、その後にそれらの候補に対して計算コストの高い精密なモデルを適用する。前者を第一段階検索 (first-stage retrieval)、後者を再ランキング (reranking) と呼び、実用的な検索システムはこれらを多段に構成することが多い。

ただし、マッチングとランキングは実装上必ずしも独立していない。転置インデックスを用いた検索では、候補の列挙とスコアの累積が同一のポスティングリスト走査の中で進行し、さらに上位 件に入り得ない文書を走査の途中で切り捨てる枝刈りも行われる。

4. 検索方式

クエリーと文書をどのように照合するかによって、検索方式はキーワード検索、ベクトル検索、生成検索に大別できる [3]。これらは排他的な選択肢ではなく、現実の検索システムではこれらを組み合わせて使用する。

キーワード検索 (keyword search) はクエリーと文書を単語 (ターム) の集合として表現し、共通して出現するタームの重みからスコアを算出する方式である。索引語検索語彙的検索 (lexical retrieval)、あるいは文書を語彙数次元の疎なベクトルとみなすことから疎検索 (sparse retrieval) とも呼ばれる。データ構造には転置インデックスを、スコアリングには TF-IDF や BM25 を用いることが多い。

キーワード検索の利点は、比較的高速に動作し、スケールさせやすく、なぜその文書が該当したかを説明でき、固有名詞や型番のような完全一致が重要なクエリーに強い点である。一方で、クエリーと文書で異なる語を同じ意味に使っている場合に照合できない語彙不一致 (vocabulary mismatch) の問題がある。詳細は全文検索を参照。

ベクトル検索 (vector search) は文書とクエリーを機械学習モデルによって埋め込みを行い (embedding; 固定次元の実数ベクトルに変換すること)、ベクトル空間上での距離の近さによって関連性を評価する方式である。ベクトルの各次元が意味的な特徴を表す密なベクトルを用いることから密検索 (dense retrieval) とも呼ばれる。

ベクトル空間上の近さによる評価は意味の近さを表しており、検索語が一致しなくても照合できる点でキーワード検索を補うが、高次元での厳密な最近傍探索は文書数に比例する計算量となる。このため、実用的には精度をわずかに犠牲にして高速化した近似最近傍探索 (ANN; approximate nearest neighbor search) のデータ構造が用いられる。

生成検索 (generative search) は大規模言語モデルがクエリーに対する回答そのものを生成する方式である。モデルの内部知識のみに頼ると間違った内容を生成する問題があるため、実際には検索システムによって取得した文書をモデルへの入力に含める検索拡張生成 (RAG; retrieval-augmented generation) の構成を取る。この場合、生成検索はキーワード検索やベクトル検索を置き換えるものではなく、それらの上に乗る層となる。

キーワード検索とベクトル検索は得意とするクエリーの傾向が異なるため、両者を併用して結果を統合するハイブリッド検索 (hybrid search) が用いられることが多い。スコアの尺度が方式ごとに異なることから、スコアそのものではなく順位を用いて統合する RRF (reciprocal rank fusion) のような手法が実用的である。

5. 検索システムの評価

検索結果の良し悪しは自明ではないため、情報検索では評価方法論そのものが一つの研究領域となっている。評価は大きくオフライン評価オンライン評価に分けられる。

オフライン評価はクエリーと文書の適合性をあらかじめ人手で判定したテストコレクションを用意し、検索結果との一致度を指標で測る方法である。適合率と再現率のほか、順位の上位ほど重く評価する nDCG (normalized discounted cumulative gain) などが用いられる。再現性が高く高速に繰り返せる一方で、判定の作成コストが高く、実際にユーザの情報欲求を満たすとは限らない。

オンライン評価は実際に稼働しているシステムでユーザの反応を観測する方法である。ユーザを分割して異なる方式を割り当てる A/B テストや、複数の方式の結果を混ぜて 1 つの結果一覧として提示するインターリービングが用いられる。実際のユーザ行動を直接測れるが、実験の実施には相応の規模と期間を要する。

6. 参考文献

  1. Stefan Buttcher, Charles L. A. Clarke, Gordon V. Cormack. 情報検索 :検索エンジンの実装と評価. 森北出版 (2020)
  2. 打田智子, 古澤智裕, 大谷純, 加藤遼, 鈴木翔吾, 河野晋策. 検索システム実務者のための開発改善ガイドブック. ラムダノート (2022)
  3. 佐藤竜馬. 検索システム ― なぜ検索システムは欲しい情報を見つけられるのか、あるいはなぜ見つけられないのか ―. 講談社 (2026)