基礎
埋め込み(エンベディング)とは?
埋め込みはテキストを意味を表す数値ベクトルに変換します。これが厳密な語句ではなく意味による検索を可能にする理由です。類似度の測り方、そしてモデルが違うと埋め込みが混在できない理由を解説します。
すべての解説 · 最終確認日:
意味の代わりとなる数値のリスト
埋め込みモデルは、単語、文、段落、時には文書全体といったテキストの断片を読み取り、固定長のベクトル——通常は数百から数千の要素からなる順序付きの数値のリスト——を出力します。このベクトルは人が読める要約ではありません。学習中にモデルが獲得した数学的空間の中の位置であり、関連する意味を持つテキストが近くに配置されるように構成されています。
近くに来るのは似た意味であり、似た綴りではない
共通する単語がほとんどないのに、ほぼ同じことを意味する二つの文が、近いベクトルを生み出すことがあります。これは埋め込みモデルが学習中に、どの文字が現れるかだけでなく、概念間の関連を学んだからです。逆に、多くの単語を共有していても意味が異なる二つの文は、遠く離れてしまうことがあります。これが埋め込みに基づく検索と厳密なキーワード一致との本質的な違いです。
近さは測定されるもので、目分量ではない
テキストがベクトルとして表現されると、意味の比較は幾何学の問題になります。二つのベクトル間で計算される類似度スコアは、多くの場合それらがどれだけ同じ方向を向いているかによって決まります。大規模なコレクションを検索するとは、クエリのベクトルと保存されているすべてのベクトルとの間でそのスコアを計算し、最も近い一致を返すことを意味します——コレクションが百件でも一億件でも同じ操作です。
モデルが違うと埋め込みは混ざらない
トークナイザーの語彙と同様に、埋め込みモデルのベクトル空間はそのモデルとその学習方法に固有のものです。あるモデルの次元数が同じであっても、あるモデルが生成したベクトルは別のモデルが生成したベクトルと意味のある比較はできません。埋め込みモデルを切り替えるということは、これから先の新しいコンテンツだけでなく、すでに保存されているものすべてを再度埋め込み直すことを意味します。
埋め込みモデルの役割は言語モデルの役割とは異なる
言語モデルはプロンプトからトークンを一つずつ生成してテキストを作ります。埋め込みモデルは何も生成しません——テキストをベクトルに変換して、そこで終わりです。同じベースモデルを両方の役割に使うシステムもあれば、まったく別の二つのモデルを使うシステムもあります。いずれにしても、埋め込みのステップが出力するベクトルはそれ自体が答えではなく、検索やマッチングのステップが比較するための材料にすぎません。
実務でこれがどこに現れるか
埋め込みは検索拡張生成を可能にするものです——検索が言語モデルとどう組み合わさるかについては「RAGとは?」を参照してください——が、同じ技術はサポートチケットやドキュメントのセマンティック検索、似た過去の会話のマッチング、ほぼ同一のコンテンツの重複排除、そして誰も手作業でカテゴリを付けることなく関連する項目をまとめることの裏側にもあります。
よくある質問
- 埋め込みはトークンと同じものですか?
- いいえ。トークンは言語モデルが一つずつ読み書きする離散的なテキスト単位です。埋め込みはより大きなテキストの断片の意味を表す連続的なベクトルで、何も生成しない別のステップによって作られます。
- 異なる二つのモデルが生成した埋め込みを比較できますか?
- 意味のある形では比較できません。各埋め込みモデルは学習中に独自のベクトル空間を定義するため、あるモデルの空間で「非常に似ている」ことを意味する距離は、ベクトルの長さが同じであっても、別のモデルの空間では定義された意味を持ちません。
- 埋め込みベクトルが大きいほど検索の質は良くなりますか?
- それだけでは決まりません。次元が多いほどより多くの微妙な違いを捉えられる可能性はありますが、質はモデルが何で学習されたか、そしてそれがあなたのコンテンツにどれだけ合っているかに左右され、次元数だけでは決まりません。
- 埋め込みから元のテキストを復元できますか?
- 正確な復元は一般的に現実的ではありませんが、それでも埋め込みはあなたのコンテンツから直接導かれたものであり、一部の攻撃手法によって意味のある情報が漏れる可能性があります。機密性の高いテキストの保存済み埋め込みは、すでに匿名化されているかのようにではなく、テキスト自体と同じ注意を払って扱ってください。
読むより試してみる
ClawAIのメモリおよびコンテキストパック機能は、Ollamaを通じてローカルで埋め込みを生成し、類似度検索のためにベクトルデータベースに保存します。この目的のためにコンテンツを別のクラウド埋め込みAPIへ送ることはありません。