ある企業が、商品カタログ(100 万件)に対して自然言語での検索機能を実装したい。「赤くて丸い果物」という検索クエリで「リンゴ」「サクランボ」などの関連商品がヒットすることを求めている。最小の追加インフラで実現するアプローチとして最も適切なものはどれか。
- A. 商品名に含まれる単語をすべてキーワードとしてインデックス化し、完全一致検索のみで対応する
- B. LLM にカタログ全件をコンテキストとして渡し、毎回の検索クエリに対して関連商品をリストアップさせる
- C. 商品説明を Embedding モデルでベクトル化して Amazon OpenSearch Service に格納し、クエリ文をベクトル化して近傍検索を行う
- D. 商品ごとに人手でタグを付与し、タグベースのフィルタリング検索を実装する
解答と解説を見る
正解: C
テキスト埋め込み+ベクトルデータベースによるセマンティック検索は、キーワードが一致しない「赤くて丸い果物→リンゴ」のような意味的関連性を捉えられる最も効率的な方法である。Amazon OpenSearch Service はベクトル検索(k-NN)をサポートする。Aは誤り:完全一致検索では「赤くて丸い果物」と「リンゴ」が一致しないため要件を満たせない。Bは誤り:100 万件をコンテキストに渡すことは不可能(コンテキストウィンドウ超過)かつ推論コストが天文学的になる。Dは誤り:100 万件への人手タグ付けは工数が膨大で、また「赤くて丸い」という複合的な意味表現のタグ体系構築も現実的でない。