3行でいうと
- 埋め込みは、文章や画像、音声を数字の並び(ベクトル)に変えたもので、2つの距離で関係の強さを測ります。
- ベクトル検索は、質問も数字の並びにして、キーワードでなく意味の近さで文書を探す方法です。
- 数字の個数(次元)は、OpenAIのtext-embedding-3-smallが1,536個、Gemini Embedding 2は既定で3,072個です。
- モデルを替えたら保存した数字は使えず、Googleは作り直しが必要と明記しています。
この記事は公式・一次資料を読んでまとめたものです。この記事は、実際に使って確かめた記録ではありません。
先に結論
- 埋め込み(エンベディング)は、文章や画像、音声を「数字の並び(ベクトル)」に変えたものです。OpenAIの文書は、2つのベクトルの距離で、2つの文章がどれくらい関係しているかを測る、と説明しています。
- ベクトル検索は、質問も同じ方法で数字の並びにして、近い数字の並びを持つ文書を探す方法です。キーワードが同じかどうかでなく、意味の近さで探します。
- 数字の個数(次元)はモデルごとに違います。OpenAIのtext-embedding-3-smallは1,536個、GoogleのGemini Embedding 2は既定で3,072個です。2026年10月8日時点の価格は、OpenAIのsmallが100万トークンあたり$0.02、GoogleのGemini Embedding 2の文字入力が有料枠で100万トークンあたり$0.20です。
- モデルを替えたら、保存してある数字は使えません。Googleは、2つのモデルの数字の空間に互換性がないので、作り直しが必要と明記しています。
たとえ話:「意味の地図」に、言葉を置いていく
大きな地図に、すべての文章を、1つずつ点として置いていくことを想像してください。ルールは1つだけです。意味が近い文章は、近くに置く。「新しい映画はすばらしい」と「その新作映画は最高だ」は隣り合い、「犬が庭で遊んでいる」は遠くに置かれます。
地図の上の位置を表す数字が、座標です。ふつうの地図は縦と横の2つの数字ですが、埋め込みでは1,000個以上の数字を使います。方向がそれだけあるので、「話題」「雰囲気」「言い回し」など、いろいろな観点の近さを同時に表せる、と考えると分かりやすいです(これは僕らの言い換えで、公式の説明そのものではありません)。
検索は、質問を地図に置いて、いちばん近くにある点を拾ってくるだけです。
仕組みを、順番に
1. 文章を、数字の並びに変える
OpenAIのガイドは、埋め込みを「浮動小数点数(小数)の並び」と説明しています。距離が小さければ関連が強く、大きければ弱いです。使い道として、検索、似たものの仲間分け(クラスタリング)、おすすめ、異常の検出、分類が挙げられています。
考え方の歴史をたどると、Mikolovらが2013年1月にarXivで公開した論文は、単語を数字のベクトルにする方法を示し、16億語のデータから1日足らずで質の高い単語ベクトルを学習できたと報告しています。ReimersとGurevychが2019年8月に公開したSentence-BERTの論文は、文章の埋め込みを作ることで、1万文の中から最も似た組を探す作業を、約65時間(BERTで文を2つずつ読み比べる方法の見積もり)から約5秒に縮められた、と書いています。
数字の並びは、AIモデルに文章を通して作ります。同じ文章でも、モデルが違えば別の数字になります。
2. 「近さ」を測る
近さの測り方で、よく使われるのは「コサイン類似度」です。Googleのドキュメントは、大きさでなく向きを比べる方法として、これを勧めています。値は-1(反対)から1(最も近い)までです。
Sentence Transformers(埋め込みを作る公開ライブラリ)の公式ドキュメントに、実際の出力例があります。
| 文の組み合わせ | 類似度 |
|---|---|
| 「新しい映画はすばらしい」と「新しい映画はとても良い」(英語の原文の和訳) | 0.8939 |
| 「新しい映画はすばらしい」と「犬が庭で遊んでいる」 | 0.0543 |
Anthropicの文書が紹介するVoyage AIの埋め込みは、長さが1にそろえてあります。この場合、単純な掛け算の合計(内積)とコサイン類似度は同じ結果になる、とAnthropicの文書にあります。
3. たくさんの中から、近いものを探す
件数が少ないうちは、保存した数字の並びを全部と比べれば済みます。Sentence Transformersのドキュメントは、この手作業の方法は、約100万件までの規模向け、と書いています。
件数が増えると、「近似」の方法が使われます。ベクトルを保存できるPostgres(データベース)の拡張機能pgvectorの公式ページによると、索引を作らない方法は、完全に正しい結果(再現率100%)を返しますが、索引を使う「近似」の方法は、少し取りこぼす代わりに速くなります。索引の方式にはHNSWとIVFFlatがあり、HNSWのほうが速さと精度のバランスがよい代わりに、作るのが遅くメモリを多く使う、と説明されています。
HNSWの論文(MalkovとYashunin、2016年3月にarXivで公開)は、階層になった「近道つきの網」で探す方法で、探す手間が件数の増え方に対して対数的にしか増えない、と報告しています。
4. 数字の個数(次元)を縮める
数字が多いほど、保存場所と計算が必要です。そこで、数字の個数を縮める工夫があります。Matryoshka Representation Learning(マトリョーシカ表現学習)の論文(2022年5月、arXiv)は、並びの先頭の部分だけでも役に立つように訓練する方法で、画像の分類で同じ精度のまま最大14分の1の大きさにできたと報告しています。
GoogleのGemini Embeddingは、この方法で訓練されていて、数字の個数を縮められると文書にあります。OpenAIのtext-embedding-3系も、末尾の数字を取り除いて縮められます(読んだ文書にマトリョーシカという名前は出てきません)。OpenAIの文書は、dimensionsという設定で縮められ、MTEB(埋め込みの性能を測る試験)で、text-embedding-3-largeを256個に縮めたものが、縮めていない古いtext-embedding-ada-002(1,536個)を上回った、と書いています。手で縮めた場合は、長さを1にそろえ直す必要があります。
見立てです。この縮め方が用意されているのは、保存先に次元の上限があるためだと思います。pgvectorの公式ページによると、通常のvector型に索引を作れるのは2,000次元までです(表の列自体は16,000次元まで)。3,072個の数字をそのまま索引にはできない計算になります(僕らの読み取りで、公式がそう説明しているわけではありません)。OpenAIの文書にも、上限が1,024次元の保存先向けに1,024個へ縮める例があります。
5. 質問と文書で、作り分ける
質問は短く、文書は長い、という非対称の検索では、モデルと使い方の選択が大切だと、Sentence Transformersの文書は強調しています。GoogleのGemini Embedding 001は、用途を示す設定(task_type)を持ち、Embedding 2は、文章の頭に「task: search result | query: …」のような決まった書き出しを付けます。Voyage AIは、input_typeで「document」と「query」を指定します。どれも、質問側と文書側で扱いを変える、という同じ考え方です。
実際の使い道と、いまの数字(2026年10月8日確認)
| モデル | 次元 | 最大入力 | 料金(100万トークンあたり) | 確認元 |
|---|---|---|---|---|
| OpenAI text-embedding-3-small | 1,536 | 8,192トークン | $0.02 | OpenAIのガイドとモデルページ |
| OpenAI text-embedding-3-large | 3,072 | 8,192トークン | 確認していません | OpenAIのガイド |
| Google Gemini Embedding 2 | 既定3,072(128〜3,072で指定) | 8,192トークン | 文字$0.20(一括処理は$0.10) | Googleの文書と料金ページ |
| Google Gemini Embedding 001 | 既定3,072(128〜3,072で指定) | 2,048トークン | 確認していません | Googleの文書 |
| Voyage AI voyage-4 系 | 既定1,024(256、512、2,048も可) | 32,000トークン | Anthropicの文書には書かれていない | Anthropicの文書 |
補足です。
- OpenAIのガイドは、text-embedding-3-smallで1ドルあたり約62,500ページ、と見積もっています。$0.02で割ると、1ページを約800トークンと置く計算です。
- Gemini Embedding 2は、文字のほかに画像、動画、音声、PDFも扱える、Googleの初のマルチモーダルな埋め込みモデルです。料金ページでは、画像1枚が約$0.00012、音声1秒が約$0.00016、動画1コマが約$0.00079と書かれています。
- GoogleのAPIの無料枠でも埋め込みは使えますが、料金ページは、無料枠の入力は「製品の改善に使われる」、有料枠は使われない、と書いています。
- Anthropicは、自社の埋め込みモデルを提供していないと文書で述べ、Voyage AI(MongoDB)を勧めつつ、他社も比べるよう案内しています。Voyageの料金は、MongoDBの文書にあるとされ、僕らは読んでいません。
代表的な使い道は、資料を質問で探す仕組み(RAG。別の記事で扱っています)です。このとき、資料は小さく切ってから、1つずつ埋め込みにして保存します。Googleのファイル検索の機能は、埋め込みの作成に100万トークンあたり$0.15がかかる、と料金ページにあります。
誤解されやすい点
「意味を理解している」とは書かれていない 公式の文書が述べているのは、文章を数字にして、距離で関連を測る、ということまでです。近い数字の並びが、人が思う「同じ意味」と一致するかは、モデルや分野によって違います。Sentence Transformersの文書が「用途に合うモデルの選択が重要」と書いているのは、そのためです。
「数字の並びだけ保存すれば、元の文章は要らない」わけではない 検索で見つかるのは、近い数字の並びです。答えに使うのは元の文章なので、数字と元の文章を対応づけて保存する必要があります。
「どのモデルのベクトルも混ぜられる」わけではない Googleは、Embedding 001と2の空間は互換性がなく、移行には作り直しが必要と書いています。OpenAIやVoyageのモデルでも、この記事では確認していませんが、別々のモデルが作った数字を同じ地図の上で比べる意味は、ふつうありません。
気をつけること
- 数字は2026年10月8日に読んだ公式ページのものです。モデル名、次元、料金は変わります。
- OpenAIのtext-embedding-3-largeとGoogleのGemini Embedding 001の料金は、読んだページでは確認できていません。
- OpenAIのガイドにある「MTEBの性能」(small 62.3%、large 64.6%、ada-002 61.0%)は、OpenAIの発表の数字で、この記事では確かめていません。会社をまたいだ優劣は、この記事では述べません。
- Sentence Transformersの類似度の例は、英語の文のものです。日本語の近さの精度は、公式の数字を確認できていません。
- pgvectorの次元の上限は、読んだ時点の記載です。使う前に最新の公式ページを確認してください。
- 日本語での検索の質は、モデルの対応言語と、文章をどう切るかにも左右されます。この記事では確認していません。
- 機密の資料を埋め込みにするときは、外部のサービスに文章を送ることになります。保存と学習への利用は、各サービスの規約と設定で確認してください。
出典
- Embeddings(OpenAI API Docs、2026年10月8日確認)
- text-embedding-3-small(OpenAI API Docs、2026年10月8日確認)
- Embeddings(Gemini API Docs、Google、2026年10月8日確認)
- Gemini Developer API pricing(Google、2026年10月8日確認)
- Embeddings(Claude Platform Docs、Anthropic、2026年10月8日確認)
- Efficient Estimation of Word Representations in Vector Space(arXiv、Mikolovら、2013年、2026年10月8日確認)
- Sentence-BERT(arXiv、Reimers・Gurevych、2019年、2026年10月8日確認)
- Matryoshka Representation Learning(arXiv、Kusupatiら、2022年、2026年10月8日確認)
- Efficient and robust approximate nearest neighbor search using HNSW(arXiv、Malkov・Yashunin、2016年、2026年10月8日確認)
- Semantic Search(Sentence Transformers Docs、2026年10月8日確認)
- Semantic Textual Similarity(Sentence Transformers Docs、2026年10月8日確認)
- pgvector(GitHub、pgvector、2026年10月8日確認)
更新履歴
- 2026年10月25日 書き方を直しました。
- 前:運営者が使っていないと読める書き方 → いま:「この記事は、実際に使って確かめた記録ではありません」。公式の資料を読んでまとめた記事で、使い心地は書いていない、という意味に直した
