CTS-KB

embedding(埋め込み / ベクトル表現)

えんべでぃんぐ

埋め込みベクトル表現ベクトル化エンベディングembeddingsベクターembedding ベクトル
#embedding#ベクター検索#RAG#セマンティック検索#AI#LLM

embedding(埋め込み) は、テキストや画像などの意味を 固定長の数値ベクトル に変換したもの。意味が近いものほどベクトル空間上で近くに配置されるため、コサイン類似度 などで「意味の近さ」を数値計算できる。セマンティック検索RAG・カテゴリマッピングの基盤となる。

概要

「東京」と「大阪」は文字列としては似ていないが、embedding にすると「都市」という意味の近さがベクトルの距離に反映される。これにより、キーワードの完全一致では拾えない「意味的に近い」候補 を検索できる。

  • 次元数:モデルが出力するベクトルの長さ(例:gemini-embedding-001 は最大 3072 次元、用途により 1536 等に縮約)。保存側と検索側で次元を揃える 必要がある。
  • 決定論的:同じモデル・同じ設定なら、同じテキストから常に同じベクトルが得られる。実行経路(同期 / Batch API)が違っても値は変わらない。
  • コサイン類似度はベクトルの大きさに不変:正規化の差は類似度に影響しない。

task_type で「用途別の最適化」をかける

同じテキストでも、検索される文書(document)として埋め込むか、検索クエリ(query)として埋め込むか で最適なベクトル化は異なる。Gemini ではこれを task_type で指定する。retrieval(情報検索)では RETRIEVAL_DOCUMENTRETRIEVAL_QUERY を使い分ける 非対称検索 が正攻法。

⚠️ よくある落とし穴:task_type を指定しないと保存側・検索側が同じ最適化になり、エラーは出ないのに検索精度だけが静かに落ちる。詳細は ベクター検索の落とし穴 を参照。

関連記事・用語

外部リソース