embedding(埋め込み) は、テキストや画像などの意味を 固定長の数値ベクトル に変換したもの。意味が近いものほどベクトル空間上で近くに配置されるため、コサイン類似度 などで「意味の近さ」を数値計算できる。セマンティック検索・RAG・カテゴリマッピングの基盤となる。
概要
「東京」と「大阪」は文字列としては似ていないが、embedding にすると「都市」という意味の近さがベクトルの距離に反映される。これにより、キーワードの完全一致では拾えない「意味的に近い」候補 を検索できる。
- 次元数:モデルが出力するベクトルの長さ(例:
gemini-embedding-001は最大 3072 次元、用途により 1536 等に縮約)。保存側と検索側で次元を揃える 必要がある。 - 決定論的:同じモデル・同じ設定なら、同じテキストから常に同じベクトルが得られる。実行経路(同期 / Batch API)が違っても値は変わらない。
- コサイン類似度はベクトルの大きさに不変:正規化の差は類似度に影響しない。
task_type で「用途別の最適化」をかける
同じテキストでも、検索される文書(document)として埋め込むか、検索クエリ(query)として埋め込むか で最適なベクトル化は異なる。Gemini ではこれを task_type で指定する。retrieval(情報検索)では RETRIEVAL_DOCUMENT と RETRIEVAL_QUERY を使い分ける 非対称検索 が正攻法。
⚠️ よくある落とし穴:
task_typeを指定しないと保存側・検索側が同じ最適化になり、エラーは出ないのに検索精度だけが静かに落ちる。詳細は ベクター検索の落とし穴 を参照。
関連記事・用語
- ベクター検索の落とし穴:保存(document)と検索(query)で task_type を分けないとヒット率が落ちる — embedding の task_type を誤った実例と直し方
- task_type — embedding の用途別最適化
- ベクター検索 / セマンティック検索 — embedding を使った意味検索
- Batch API — 大量 embedding を半額で生成
- Gemini / Vertex AI — embedding を提供するモデル / 基盤