導入
ふつうのキーワード検索は、文字が一致するかどうかしか見ていません。「車」で検索しても「自動車」や「クルマ」を含む文書がヒットしない、という経験はないでしょうか。表記ゆれ・同義語・言い換えに弱いのが、キーワード検索の弱点です。
説明
これを解決するのが**埋め込み(embedding)**という技術です。文章をただの文字列としてではなく、意味を表す数値のベクトル(数字の列)に変換します。すると、意味が近い文はベクトルとしても近い場所に配置されます。「犬」と「子犬」は文字としては違いますが、意味が近いのでベクトル空間上でも近くなります。
flowchart LR
subgraph space["意味のベクトル空間(イメージ)"]
a["犬"] --- b["子犬"]
c["自動車"] --- e["車"]
a -.遠い.- c
end
q["質問: 車について"] --> near["近いベクトル<br/>『自動車』『クルマ』もヒット"]
キーワード検索では「文字が一致するか」だけを見ていたのに対し、埋め込みを使った検索では「意味が近いか」で探せるようになります。だからこそ、言い換えや表記ゆれがあっても、関連する文書を見つけ出せるのです。
ただし、本物の埋め込みモデル(OpenAIのAPIなど)はサーバー側の計算やAPI利用が前提で、ブラウザの中だけでは動かせません。そこでこのコースでは、まず第3章で TF-IDF という軽量な手法を使い、「意味に近いもので検索する」感覚をブラウザの中で実際に体験します。TF-IDFは本物の埋め込みほど賢くはありませんが、キーワードの出現パターンから文書どうしの近さを計算でき、ブラウザだけで動かせるという利点があります。本物の埋め込みモデルを使ったコードは、第3章後半の読み物で紹介します。
まとめ
- キーワード検索は文字の一致しか見ないので、表記ゆれ・同義語・言い換えに弱い。
- 埋め込み(embedding)は文章を「意味を表すベクトル」に変換し、意味が近い文どうしを近くに配置する。
- 本物の埋め込みモデルはブラウザで動かせないため、第3章ではまずTF-IDFで検索を体験し、本物の埋め込みは読み物として紹介する。