3.17

View in English

3.17 検索と情報検索

概要と動機

遅かれ早かれ、誰かが箱に数語を入力し、システムが正しいものを見つけることを期待します。その箱は、見かけによらず単純です。その背後には、コンピューティングで最も古く豊かな規律の一つ、情報検索があります。不正確な要求から、大きな集合の中の関連する項目を見つける科学です。検索は、製品に遅れて後付けする機能ではありません。独自のデータモデル、独自の失敗モード、独自のスケールの物語、独自の間違い方を持つ、システムの関心事です。検索が良いとき、人々は必要なものを見つけ、ほとんど気づきません。検索が悪いとき、人々は去るか、さらに悪いことに、欲しかったものは存在しないと結論づけます。

本章は検索を、第一級のアーキテクチャとして扱います。検索インデックスは、真実を所有する記録のシステムとは別の、クエリに最適化された特化したストアなので、3.4章のデータとストレージの決定と並んで位置します。検索結果と候補はレイテンシに敏感でキャッシュ可能なので、3.15章のキャッシュと配信の考え方に依拠します。そして今では、現代の検索が大規模言語モデルに、うまく答えるために必要な文脈を供給するので、6.3章の生成AIの仕事と大きく重なります。

大きなチームにとって、検索は関連度、鮮度、規模が衝突する場所です。数千万の項目を持つ企業のカタログ、公衆に答える政府の記録ポータル、チケットを解決する唯一の記事を表面化させなければならないサポートのナレッジベース。それぞれが、他の本番システムと同じ厳密さで、検索が測定され、調整され、運用されることを要求します。賭け金は具体的です。申告の期限に正しい書式を見つけられない税務当局の検索や、関連するガイダンスを雑音の下に埋める医療ポータルは、その背後の制度への信頼を損なう形で、利用者を失望させます。

主要原則

  • 検索インデックスを、記録のシステムとは別の、派生したストアとして扱います。
  • 関連度は、好みの問題ではなく、測定可能な品質です。データで判断します。
  • 人々が実際に入力する形に合わせます。誤字があり、簡潔で、あいまいに。
  • 語彙的な検索と意味的な検索を組み合わせます。どちらか一方では、すべてのクエリをカバーしません。
  • インデキシングのパイプラインを、最初の読み込みだけでなく、鮮度のために設計します。
  • オフラインでは判定で、オンラインでは実際の行動で評価し、両方を使います。
  • シャードとレプリカで意図して検索をスケールし、他のサービスと同じように観察します。

推奨事項

転置インデックスと解析パイプラインから始める

古典的な検索の中心にあるエンジンは、転置インデックスです。各語から、それを含む文書のリストへの対応づけで、その語のリストを持つ文書の鏡像です。「請求書 払い戻し」を求めると、エンジンは、何百万の文書を保持していても、「請求書」のポスティングリストと「払い戻し」のポスティングリストをミリ秒で交差させます。このデータ構造が、検索が即座に感じられる理由で、それを理解すれば、検索が得意なことと不得意なことのほとんどが説明されます。

インデックスは、与えるテキストの分だけ良く、それがアナライザーの仕事です。解析は段階で進みます。まずトークン化が、テキストの流れを語に分割します。句読点、ハイフン、単語を区切らない中国語のような言語に出会うと、空白で分割するより難しくなります。それから正規化が、小文字化し、アクセントを取り除き、変種を折りたたみます。それからステミング、あるいはそのより正確な親戚である見出し語化が、「running」「ran」「runs」を共通の語根に向かって縮め、一つのクエリが他に一致するようにします。ストップワードの処理、同義語の展開、言語の検出が仕上げです。苦痛を省くルール。インデックス時の解析とクエリ時の解析は一致しなければなりません。両側が語を同じように正規化したときにだけ、語が見つかるからです。

調整する前に、関連度のランキングを理解する

一致する文書を見つけることは、易しい半分です。最良のものが一番上に来るよう順序付けることが難しい半分で、それはランキングと呼ばれます。伝統的な主力はTF-IDFで、語の頻度掛ける逆文書頻度の略です。語が文書に頻繁に現れるとき(語の頻度)、そして集合全体で珍しいとき(逆文書頻度)、より重みが付くので、「光合成」は「その」を上回ります。ほとんどの現代のエンジンは、Okapi BM25を既定にしています。それは語の頻度を飽和させ(10回目の出現は9回目にほとんど何も加えない)、文書の長さで正規化して、長い文書が大きさだけで勝たないようにする洗練です。数式を導く必要はありませんが、つまみが存在すること、原理に基づいた既定があること、それを変えるとどの結果が最初にランクされるかが変わることは、知っておくべきです。

分野の二つの言葉で品質を判断します。適合率は、返された結果のうち関連するものの割合で、再現率は、関連するすべての結果のうち返したものの割合です。両者は互いに引き合います。可能なすべての一致を捉えるようクエリを緩めると、雑音が忍び込んで適合率が下がり、きれいな結果の集合のためにそれを締めると、良い一致が脱落して再現率が下がります。タイポの許容から同義語の展開まで、あらゆる関連度の決定は、その曲線のどこにユーザーがいたいかへの賭けで、答えは、法律のアーカイブ(再現率を優先し、何も見逃さない)と店頭(適合率を優先し、勝者を見せる)で異なります。

クエリの理解に投資する

ユーザーは、文書が書かれているようには入力しません。誤字をし、略し、索引にない同義語で検索し、四語に三つの意図を詰め込みます。クエリの理解は、そのギャップを橋渡しする層で、ほとんど何よりも投資の見返りがあります。選り抜かれた、あるいは掘り出された同義語を加え、「laptop」が「notebook」を、「heart attack」が「myocardial infarction」を見つけるようにします。編集距離、つまり二つの文字列の間の一文字の変更の数でタイポの許容を加え、「reciept」がそれでも領収書を見つけるようにします。エンティティと意図を検出し、「flights to Paris under $500」が、語の袋ではなく適切なフィルターにルーティングされるようにします。

最も難しいクエリを意図して扱います。注文番号や制定法の引用のような、まれな正確な文字列の検索は、正確な一致を望み、賢い展開は望みません。あいまいな自然言語の質問は、反対を望みます。両者に一つの振る舞いを強いるのではなく、異なってルーティングします。そして常に結果ゼロのケースを設計してください。クエリが何も返さないとき、緩め、代替を提案し、より広い一致にフォールバックします。空のページはユーザーを失う最も速い方法だからです。

ファセット、オートコンプリート、構造化されたフィルタリングを加える

検索はランク付けされたリスト以上のものです。ファセット検索は、ユーザーが構造化された属性で結果を絞れるようにします。ブランド、価格帯、部門、日付、文書の種類。ファセットは圧倒的な結果の集合を案内される会話に変え、ナビゲーションも兼ねます。それはデータがきれいに属性付けされていることに依存し、それは検索の上流のデータ品質への投資で、ランキングと相互作用します。フィルターがランカーが見る候補の集合を変えるからです。

オートコンプリートと候補は、送信される前にクエリを形づくります。良い候補機能は、ユーザーが入力するにつれて本物の価値の高いクエリを提案し、早期にスペルを訂正し、人気のある、あるいは流行の意図を表面化させます。レイテンシが決定的で(すべてのキーストロークがリクエスト)、3.15章のキャッシュのパターンから直接恩恵を受けます。候補はまた、うまく扱えるクエリへ人々を導き、全体の関連度を静かに上げます。候補機能を、文書の内容ではなくクエリログで調整された、独自のランキングを持つ、それ自体の小さなインデックスとして扱います。

語彙的な検索とベクトル検索を組み合わせる

古典的な検索は語に一致します。教えない限り「car」と「automobile」が同じ意味だとはわからず、文書が決して使わない形で表現された質問につまずきます。ベクトル検索は、テキストを埋め込み、つまり似た意味がベクトル空間で互いに近くに着地するよう、機械学習のモデルが生成した密な数値ベクトルとして表すことで、これに対処します。検索はその空間での最近傍探索になり、正確な最近傍は規模では遅すぎるので、エンジンは、わずかな精度を大きな速度の利得と交換する近似最近傍(ANN)アルゴリズムを使います。この種の意味的な検索は、クエリと語を共有しなくても、正しい文書を見つけます。

どちらのアプローチも、あらゆる所で勝つわけではありません。語彙的な検索は、正確な語、名前、コード、まれなキーワードに優れ、透明で説明が安い。ベクトル検索は、意味、言い換え、自然言語の質問に優れますが、正確な識別子を見逃すことがあり、デバッグしにくい。本格的なシステムの強い既定は、ハイブリッド検索です。両方を実行して結果を融合し、しばしばスコアが比較可能であることを要さずに二つのランク付けされたリストを混ぜる、逆順位融合のような技法を使います。ハイブリッドは、キーワードの適合率と意味の再現率を与え、どちらかの側が弱いとき、穏やかに劣化します。

検索を検索拡張生成に接続する

検索の最も急速に成長している消費者は、結果のリストを読む人間ではなく、言語モデルです。検索拡張生成(RAG)は、関連する文章を検索してモデルの文脈に置くことで、生成モデルをあなたのデータに根づかせ、訓練の記憶ではなくあなたの事実から答えさせます。6.3章の生成の品質は、検索の品質に直接依存します。モデルに間違った文章を与えれば、自信をもって間違った答えを合成します。本章のすべて(テキストを文章にチャンク化する、それらをうまくランク付けする、語彙的とベクトルのシグナルを融合する、インデックスを新鮮に保つ)は、まさにRAGの検索の半分です。組織が大規模言語モデルの上に築いているなら、検索システムが基盤で、正しい文章での再現率を改善することは、しばしばモデルを入れ替えるよりもアシスタントを助けます。

鮮度のためにインデキシングのパイプラインを築く

インデックスはコピーで、コピーはずれます。インデキシングのパイプラインは、検索インデックスを記録のシステムと歩調を合わせて保つ仕組みです。ソースの変更を読み、解析と埋め込みを実行し、インデックスに書き込む。理想的には夜間のバッチではなくストリームとして。これはデータエンジニアリングの関心事(7.2章)で、3.3章の順序、リトライ、冪等性への同じ注意が適用されます。順序の入れ替わった更新が、削除された文書を復活させうるからです。鮮度の目標を明示的に決めてください。価格や在庫数は数秒以内に検索可能である必要があるかもしれず、アーカイブされた方針文書は数時間遅れてよいかもしれません。スキーマやアナライザーの変更のための完全な再インデックスをサポートし、新しいインデックスを構築して、準備ができたらエイリアスを原子的に切り替えることで、通常はダウンタイムなしに実行されるよう設計します。

意見ではなく評価で関連度を調整する

関連度の議論は、断言では勝てないので、意見を測定に置き換えます。オフラインでは、判定リスト、つまりどの結果が関連するかについての人間の評価と組になった代表的なクエリの集合を築き、上位に高度に関連する結果を置くことを報い、下に埋もれたものを割り引くNDCG(正規化割引累積利得)のような指標でランキングを採点します。オフライン評価により、どちらもユーザーに触れる前に、二つのランキングの設定を比べられます。オンラインでは、実際の行動を観察します。クリック率、クリックされた結果の位置、クエリの言い換え、結果ゼロ率、コンバージョン。管理された実験(7.4章)を実行し、関連度の変更が、勘で出荷されるのではなく、ホールドアウトに対して証明されるようにします。両方を使ってください。オフラインの指標は速いが理想化され、オンラインの指標は本物だが遅くて雑音が多いからです。成熟したループは、クエリログを掘って判定リストを育てるので、学ぶにつれて評価が改善します。

シャードとレプリカでスケールし、すべてを観察する

検索は二つの軸に沿ってスケールします。シャーディングは、文書を分割することで一つのインデックスをマシンに分割するので、クエリはすべてのシャードにファンアウトして部分的な結果がマージされます。これにより、インデックスは一台のマシンが保持できる以上に育ち、インデキシングの負荷が広がります。レプリカは各シャードをコピーするので、読み取りのトラフィックがコピーに広がり、ノードの喪失がデータを失いません。レプリカはクエリのスループットを提供し、レジリエンスを与えます。シャードが多いほど、クエリごとのファンアウトのコストが上がるので、切りのいい数字ではなく、データに合わせてサイズを決めます。9.2章のオブザーバビリティで検索を運用します。クエリのレイテンシのパーセンタイル(平均より裾が重要)、インデキシングの遅れ、キャッシュのヒット率、エラー率、そして第一級のシグナルとして、結果ゼロ率やクリック位置のような関連度の指標を追跡します。速いが貧しい結果を返す検索システムは、静かに失敗しており、関連度のテレメトリだけがそれを教えてくれます。

トレードオフ: 長所と短所

アプローチ長所短所
語彙的(BM25)検索正確な語、コード、名前。透明。安い調整なしには同義語と言い換えに盲目
ベクトル(意味的)検索意味と質問を理解する。強い再現率正確なIDを見逃す。計算が高価。デバッグしにくい
ハイブリッド検索キーワードの適合率と意味の再現率動く部品が増える。融合に調整とテストが必要
積極的なタイポと同義語の展開より高い再現率。本物のユーザーに寛容適合率が下がる。チェックしないと雑音の多い結果
リアルタイムのインデキシング数秒以内の新鮮な結果バッチより高いコストと複雑さ
より多くのシャードより大きなインデックス。並列のインデキシングクエリごとのファンアウトと調整のコストが高い
オフライン評価(判定リスト)速く、再現可能で、反復して安全理想化されている。実際のユーザーの行動と合わないことがある
オンライン評価(クリック指標、テスト)実際のユーザーと意図を反映する遅く、雑音が多く、トラフィックと実験の規律が必要

繰り返される緊張は適合率対再現率で、あらゆるつまみの中に隠れています。一致を緩め、同義語を展開し、意味に頼れば、雑音を代償により多くを捉え、すべてを締めればきれいですが、物事を見逃します。普遍的な設定はなく、測定によって見つかる、特定の集合と利用者に正しい設定があるだけです。二つ目の緊張は、鮮度とコストです。リアルタイムのインデキシングとハイブリッドの検索はどちらも、計算と複雑さで品質を買います。直感ではなく、各決定を評価指標とユーザーの成果に結びつけ、変更が実際に何を買ったかが見えるようにして、両方を同じように解決してください。

チームで議論すべき問い

  1. 今日、検索の関連度をどう測定し、悪くなっても気づきますか。 多くのチームはこれに答えられず、それは関連度が既定が生んだものであり、回帰に盲目であることを意味します。現在のシグナルを持ち込んでください。判定リストはあるか、結果ゼロ率とクリック位置を追跡しているか、二つのランキングの設定を客観的に比較できるか。「検索は大丈夫に感じる」と「100の採点されたクエリでのNDCGはこうで、先月の傾向はこう」の間のギャップは、推測とエンジニアリングの間のギャップです。続く行動は、小さな判定リストでも築き、クリックの行動を計装することです。測定できないものは調整できず、盲目的に出荷するすべての関連度の変更は、擁護できない変更だからです。

  2. 語彙的検索と意味的検索は、それぞれどこで私たちを失敗させ、ハイブリッドにすべきですか。 純粋なキーワード検索は、言い換えられた質問と同義語で静かに失敗し、純粋なベクトル検索は、正確な識別子とまれな語で静かに失敗しますが、ほとんどのチームは二つのうちの一つしか動かしたことがありません。貧しい結果を返した本物のクエリの集合を持ち込み、それぞれが失敗した理由を分類してください。欠けた同義語か、スペルミスか、意味的な不一致か、欠けた正確な一致か。それらの失敗のパターンが、ハイブリッド検索が役立つか、そしてどこに最初に労力を使うかを教えます。言語モデルに供給しているなら、検索の失敗は自信に満ちた間違った答えになり、生成層がその上に座ると、悪い結果のコストが急激に上がるので、これはより重要です。

  3. 私たちの鮮度の要件は何で、インデキシングのパイプラインはそれを実際に満たしていますか。 鮮度は通常、規定されるのではなく想定されるので、チームは、削除された項目が現れ続けたり、価格の更新が何時間も遅れたりするインシデントの間に、不一致を発見します。本物の数字を持ち込んでください。記録のシステムでの変更から、その変更が検索可能になるまでどれだけかかり、それはカタログの異なる部分が実際に必要とするものとどう比較されるか。答えはおそらくデータの種類ごとに異なり、それを名指しすることが、ストリーミング対バッチ、順序、再インデックスのパイプラインの決定を強います。ユーザーに見える形で古いインデックスは、製品全体への信頼を損ない、測定したことのない鮮度の目標は、おそらく外している目標です。

  4. 検索を自前のエンジンで築くか、マネージドな検索やベクトルのサービスを買うか。そして後で気が変わったら、何がコストになりますか。 作るか買うかの判断は、何年ものコスト構造と制御の天井を決めますが、大きなチームは、意図して決めるのではなく、惰性で一つの答えに流れがちです。両側の本物の数字を持ち込んでください。自前のクラスターと埋め込みのパイプラインを運用しスケールする運用コスト対、マネージドサービスのクエリごとあるいはサブスクリプションのコスト、そして他の場所に配置できたはずの人々にそれぞれが求めるエンジニアリングの時間。隠れた変数はロックインです。ランキング、解析、ベクトルのスキーマのどれだけが可搬か、価格や能力が足元で変わったら、移行が実際にどれだけかかるか。企業と政府の設定では、調達のリードタイムと出口の義務を加えてください。ランキングの振る舞いを公開できない、あるいはインデックスをエクスポートできないサービスは、受け入れることを許されないかもしれない依存先だからです。

  5. クエリの理解にどれだけ投資する意思があり、失敗するクエリをレビューするのは誰ですか。 ユーザーは誤字をし、略し、文書が決して使わない言葉で質問を言い表すので、生のクエリと良い結果の間のギャップは、知覚される検索品質のほとんどが住む所ですが、それが誰かの明示的な仕事であることはめったにありません。結果ゼロ率、上位の失敗した言い換えられたクエリ、今日持つ同義語、タイポの許容、意図の処理についての誠実な説明を持ち込んでください。相反する引力は、適合率対再現率です。許す同義語と編集距離の一単位ごとに、より多くの本物のユーザーを捉え、より多くの雑音を認めるので、正しい投資は、寛大に聞こえるものではなく、測定できるものです。大きなあるいは公的な組織にとって、失敗するクエリの長い尾は、満たされないニーズの地図でもあり、決まった周期でそれをレビューすることは、サポートのコストをロードマップに変えます。特に、見逃した書式や給付が市民に本物の結果をもたらす所では。

  6. 関連度を資金のある継続的な責任として所有するのは誰で、評価のループはローンチ後にどう生き延びますか。 検索は決して完成しません。カタログは変わり、言語はずれ、先四半期の調整は静かに衰えるので、責任ある所有者のいないシステムは、既定が生むものへと回帰します。組織図の現実を持ち込んでください。関連度は、時間と指標を持つ名前のあるチームですか。それとも最後にインデックスに触れた人に降りかかる作業ですか。新しい人が引き継げる判定リストと実験の仕組みはありますか。緊張は、関連度の仕事は地味で、検索が機能しているように見える瞬間、まさに衰えが始まるときに、資金を引き上げやすいことです。企業と政府の文脈では、所有を具体的な義務、市場ごとの精度、アクセシビリティ、多言語のカバレッジ、結果ゼロのクエリのレビューに結びつけてください。責任が監査可能になり、ローンチチームが散ったときに蒸発しないようにします。

セクター別の視点

スタートアップ。 マネージドな検索やベクトルのサービスに手を伸ばし、初日にBM25の既定を出荷してください。調整するクエリができる前に、自前のクラスターを立ち上げてはいけません。収益や定着に触れる検索の面を一つ選び、最初のリリースからクリック位置と結果ゼロ率を計装し、同義語や意味的な層をいつ加えるかは、ロードマップではなく本物のクエリログに教えさせます。検索のために築く同じ検索の層が、後に検索拡張生成のバックエンドになるので、薄いインターフェースの背後に保ってください。

小規模事業者。 おそらく関連度のエンジニアはいないので、すでに動かしているプラットフォームに埋め込まれた検索、たとえばeコマースのホスト、ヘルプデスク、コンテンツ管理システムを買い、調整をプロジェクトではなく、軽い定期的な雑務として扱ってください。限られた労力を、検索が依存するデータ品質の基礎に使います。ファセットのためのきれいな商品の属性、妥当なタイトル、顧客が実際に使う言葉の短い同義語のリスト。結果ゼロのクエリを毎月観察してください。エンジニアなしに閉じられるギャップの、最も安いシグナルだからです。

大企業。 問題は、多くのチーム、カタログ、言語にわたる規模での関連度です。共有の判定リストの方法、市場ごとの評価、資金のある関連度の機能を持ち、各グループがBM25をゼロから再調整しないようにします。インデキシングのパイプライン、鮮度の目標、ランキングの変更をゲートする実験の規律を標準化し、シャーディングとレプリケーションを、習慣ではなく意図してサイズ決定します。作るか買うかを明示的に量ってください。マネージドなベクトルサービスは、いくらかの制御と潜在的なロックインを代償に、運用コストを削りえます。

政府。 見つけやすさは、しばしば法的な義務であり、公平性の問題です。正しい書式を見つけられない市民は、権利を行使できません。再現率と解釈可能なランキングを好み、機関が結果がなぜ現れたかを説明できるようにし、平易な言葉の用語と公式のタイトルを橋渡しする同義語を加え、アクセシビリティと多言語のサポートを、追加ではなく要件として扱います。調達ではロックインを量り、マネージドサービスにランキングの振る舞いを公開し、データの可搬性を認めるよう求めるべきで、結果ゼロのクエリは、満たされないニーズの公的な記録としてレビューされるべきです。

事例

スタートアップ。 10人のソフトウェア会社が、顧客がセルフサービスできるよう、サポートのナレッジベースに検索を加えます。BM25の既定から始め、すぐに天井に当たります。ユーザーは、記事とキーワードを共有しない平易な言葉で質問するからです。ベクトルの埋め込みを加え、二つを逆順位融合で融合すると、解決率は一夜で改善します。調整のために、自社のクエリログを掘り、数百のクエリと記事の組にラベルを付け、毎週クリック位置を追跡します。後に製品内のアシスタントを加えたとき、同じ検索の層がRAGのバックエンドになるので、検索への投資は二度元を取ります。

大企業。 世界的な小売業者が、数十の市場と言語にわたる数千万の項目に対して、商品検索を運用しています。インデックスはサイズのためにシャードされ、スループットのためにレプリケートされ、言語ごとのアナライザーが、各市場でトークン化とステミングを正しく扱います。ブランド、価格、在庫によるファセットのナビゲーションが、巨大な結果の集合を案内される閲覧に変え、オートコンプリートが買い物客をコンバージョンの高いクエリへ導きます。関連度は、市場ごとの判定リストと継続的なオンライン実験を持つ、資金のあるチームで、ランキングの変更は、コンバージョンで対照に勝って初めて出荷されます。リアルタイムのインデキシングのパイプラインが、価格と在庫を数秒以内に検索可能に保ちます。売り切れの項目が一番に出ることは、失われた販売であり、サポートのチケットだからです。

政府。 国の機関は、しばしば法的義務のもと、期限に駆動されるピーク負荷で、公衆が見つけられなければならない規則、書式、ガイダンスを公開しています。チームは再現率と透明性を好みます。給付を探す市民は関連する書式を見逃してはならず、機関は結果がなぜ現れたかを説明できなければならないので、公式のタイトルの代わりに人々が使う平易な言葉の同義語で、慎重に補強された、解釈可能な語彙的ランキングに向かいます。アクセシビリティと多言語のサポートは、追加ではなく要件です。インデックスは、方針文書が変わるとき、エイリアスの背後でダウンタイムなしに再インデックスされ、結果ゼロのクエリは、満たされない公共のニーズのシグナルとして、記録されレビューされます。

ビジネスケース: 動機、ROI、TCO

検索は価値への経路に直接座っています。商取引では、収益の測定可能な割合が検索ボックスを通って流れ、検索するユーザーは閲覧だけのユーザーより高い率でコンバージョンするので、関連度の数ポイントの改善は本物のお金になります。サポートと社内ツールでは、より良い検索が、チケットを解消し、対応時間を短縮し、知識労働者が文書を探して失う時間を取り戻します。公共部門では、効果的な検索はサービスの質と公平性の問題です。正しい書式やガイダンスを見つけられない人々は、権利を行使したり義務を果たしたりできません。これらの成果は定量化可能で、まさにそれが、検索が最善努力の既定ではなく、資金のある評価に値する理由です。

総所有コストは、ライセンスやクラスターをはるかに超えます。インデックスとそのレプリカのコンピュートとストレージ、意味的に行くなら埋め込みの生成、それを新鮮に保つインデキシングのパイプライン、そして何より、関連度の調整と評価の継続的な人間の仕事に払います。最後のコストが、チームが最も過小評価するもので、成功を最も決めるものです。検索は決して完成しないからです。カタログは変わり、言語はずれ、昨日の調整は衰えます。マネージドな検索やベクトルのサービスを買うことは、いくらかの制御と潜在的なロックインを代償に、運用コストを下げ、速くなりえます。規模と差別化に照らして量るべき、典型的な作るか買うかの判断です。最も強いビジネスケースは、特定の関連度の指標を特定の成果に結びつけ、評価のループに資金を出し、検索を、インストールして忘れられる部品ではなく、測定され改善される製品として扱います。

アンチパターンと落とし穴

  • 一致しない解析: インデックス時とクエリ時のアナライザーが食い違い、語が静かに一致に失敗し、エラーなしに結果が消えること。
  • 意見による関連度: 最も強く主張した人が調整するランキングで、判定リストも指標も回帰を捉える方法もないこと。
  • ベクトルだけへの信仰: キーワード検索を完全に埋め込みに置き換え、それから正確なID、コード、まれな語で失敗すること。
  • 結果ゼロの無視: 緩め、提案し、フォールバックする代わりに空の結果のページを放置し、ユーザーを失うこと。
  • 古いインデックス: ユーザーが間違っていると見える価格、在庫、削除を提供する、夜間のバッチのパイプライン。
  • 再インデックスのダウンタイム: エイリアスの背後ではなくその場で再構築し、スキーマの変更のたびに検索をオフラインにすること。
  • 永遠に調整されない既定: 既製のBM25を出荷し、集合と利用者が進化しても二度と見直さないこと。
  • 関連度のテレメトリがない: レイテンシとエラーは監視するが、結果ゼロ率やクリック位置は監視せず、貧しい結果が静かに失敗すること。
  • 過度の展開: 適合率が崩れてすべてのクエリが雑音を返すまで、同義語とタイポの許容を積み重ねること。

成熟度モデル

  • レベル1、開始: 検索は既定のデータベースクエリか、標準の設定の調整されていないエンジンで、誰かがついに求めたときに反応的に立ち上げられます。関連度の測定も、クエリの理解の層もなく、鮮度はバッチのジョブがたまたま生むものです。貧しい結果は、ユーザーが不満を言ったときにだけ気づかれ、各修正は一回限りです。
  • レベル2、発展: 本物の検索エンジンが、妥当な解析、BM25のランキング、基本的なファセットとオートコンプリートとともにあります。いくつかの同義語とタイポの許容があり、チームはレイテンシとエラーを観察し、結果ゼロのクエリを記録し始めています。実践はチームごと、製品ごとに異なり、関連度はまだ証拠ではなく意見で調整されています。
  • レベル3、標準化: 関連度の実践が文書化され、組織全体で一貫して適用されています。チームは、共有の判定リストの方法とオフラインのNDCG、オンラインのクリック指標で測定し、役立つ所でハイブリッドの語彙的プラスベクトルの検索を動かし、インデキシングのパイプラインを明示された鮮度の目標に保ち、エイリアスの背後でダウンタイムなしに再インデックスします。シャーディングとレプリケーションは意図してサイズ決定され、関連度の指標が運用上の指標と並んで監視されます。
  • レベル4、管理: 検索がベースラインに対して測定され、制御されています。各検索の面が、合意されたベースラインに対して、NDCGの傾向、結果ゼロ率、クリック位置、言い換え率を追跡し、クエリのレイテンシのパーセンタイルとインデキシングの遅れにサービスレベル目標があります。ランキングと解析の変更は、管理された実験が名前のある成果で対照に勝って初めて出荷され、関連度の回帰は自動的にアラートを引き起こし、市場ごと、セグメントごとのダッシュボードが、静かな衰えをユーザーが感じる前に見えるようにします。つまみを変える決定は、明示的なロールバックの基準とともに、データに基づいて行われます。
  • レベル5、オーケストレーション: 検索の改善は、組織全体に統合された、継続的で実験駆動のループです。判定リストは掘り出されたクエリログから育ち、クエリの理解は実際の言語に適応し、検索は下流の生成アプリケーションの共有の基盤として調整されます。システム全体が、速度と関連度の両方について端から端まで観察され、検索の実践は、カタログ、言語、モデルの状況がずれるにつれて自ら再均衡します。

議論のためのアイデア

  1. 検索のどれだけの割合が結果ゼロや言い換えにつながり、それらのクエリは満たされないニーズについて何を明らかにしますか。
  2. 明日キーワード検索を純粋なベクトル検索に置き換えたら、どのクエリが壊れ、ユーザーが気づく前にどうやってそれを知りますか。
  3. あなたの組織で関連度を所有するのは誰で、その人は判定リストと指標を持っていますか。それとも意見と逸話だけですか。
  4. 記録のシステムでの変更から、その変更が検索可能になるまでの遅れはどれくらいで、それはすべてのデータの種類にとって許容できますか。
  5. 言語モデルが検索結果を消費するなら、検索の品質は、生成された答えが要求するより高い基準を満たしていますか。
  6. 懐疑的な利害関係者に、ランキングの変更をどう擁護しますか。実験の結果でですか。それとも物語でですか。

要点

  • 検索を第一級のシステムとして扱います。記録のシステムとは別の、独自のデータモデル、パイプライン、スケーリング、失敗モードを持つ、派生したインデックスです。
  • より凝ったものに手を伸ばす前に、基礎(転置インデックス、一致した解析、BM25のランキング、適合率対再現率)を習得します。
  • クエリの理解(同義語、タイポの許容、意図、本物の結果ゼロの計画)に投資します。ユーザーは決して文書が読めるようには入力しないからです。
  • 語彙的とベクトルの検索を融合するハイブリッドの検索を既定とし、この同じ検索の層が検索拡張生成の基盤であることを忘れないでください。
  • 意見を測定に置き換えます。オフラインの判定リストとNDCG、オンラインのクリック指標と管理された実験、そして他の本番のシグナルと同じように監視される関連度のテレメトリ。

参考文献とさらなる読み物

  • Christopher D. Manning, Prabhakar Raghavan, and Hinrich Schütze, Introduction to Information Retrieval
  • Stephen E. Robertson and Hugo Zaragoza, The Probabilistic Relevance Framework: BM25 and Beyond
  • Ricardo Baeza-Yates and Berthier Ribeiro-Neto, Modern Information Retrieval: The Concepts and Technology behind Search
  • Doug Turnbull and John Berryman, Relevant Search: With Applications for Solr and Elasticsearch
  • Trey Grainger, Doug Turnbull, and Max Irwin, AI-Powered Search
  • Patrick Lewis et al., “Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks”
  • Jeff Johnson, Matthijs Douze, and Hervé Jégou, “Billion-Scale Similarity Search with GPUs”
  • Kalervo Järvelin and Jaana Kekäläinen, “Cumulated Gain-Based Evaluation of IR Techniques”