OpenAI Embeddings API(OpenAI embedding)とは、文章を「意味の近さ」で比べられる数値のリスト(ベクトル)に変換するOpenAIのAPIです。OpenAI公式ガイドは、検索・クラスタリング・レコメンド・異常検知・多様性の測定・分類という6つの用途を挙げています。呼び出しはPOST /embeddingsにモデル名(例:text-embedding-3-small)と文章を送るだけで、料金は入力したトークン数に応じた従量課金です。ChatGPTのように文章を「生成」するAPIではなく、既にある文章どうしの関連度を測るための土台になります。
| 知りたいこと | 答え | 詳しい解説 |
|---|---|---|
| embedding APIとは何か | 文章をベクトル(浮動小数点数のリスト)に変換し、ベクトル間の距離で関連度を測るAPI | 仕組みの解説 |
| 何に使うか | 検索・クラスタリング・レコメンド・異常検知・多様性の測定・分類 | 6つの用途 |
| どう呼び出すか | POST /embeddingsにinputとmodelを送る(この2つが必須) |
呼び出し方 |
| 料金はいくらか | text-embedding-3-smallが1Mトークンあたり0.02ドル、text-embedding-3-largeが0.13ドル、text-embedding-ada-002が0.10ドル(2026年10月5日に公式料金ページで確認) | 料金の比較 |
この記事では、text-embedding-3-small・text-embedding-3-large・text-embedding-ada-002という3つのモデルの違い、料金、APIの呼び出し方、入力できるテキストの上限、次元数を圧縮するdimensionsパラメータの使い方を、OpenAIの公式ドキュメントに基づいて整理します。ChatGPTの会話機能やCodexのコーディング支援とは役割が異なるAPIなので、どの場面で使うものなのかを先に押さえたうえで読み進めてください。
OpenAI embeddingsとは何か|文章を数値ベクトルに変える仕組み
【完全無料】AI×SNSで成果を出す100大特典を受け取る
AIの使い方を、SNS運用の実務につなげたい方へ。LINEで特典の案内を受け取れます。
OpenAI embeddingsとは、文章の意味的な関連度を測定するために、テキストを浮動小数点数のリスト(ベクトル)へ変換する仕組みのことです。
公式ガイドは、2つのベクトルの距離が関連度を表し、距離が小さいほど関連性が高く、距離が大きいほど関連性が低いと説明しています。embeddingsは文章を新しく作るAPIではなく、既にある文章どうしの近さを数値化して比較するためのAPIという位置づけです。たとえば「Embeddings APIとは」という質問文と、社内マニュアルに含まれる各段落をそれぞれベクトル化しておけば、質問文に近い段落を検索結果の上位に並べる、といった使い方ができます。
ChatGPTの会話やCodexのコード生成が「新しいテキストを出力する」機能であるのに対し、embeddingsは「テキストどうしの関係を数値で表す」機能である点が根本的な違いです。この違いを押さえておくと、次のセクションで説明する用途の広がりも理解しやすくなります。
embeddingsは何に使えるのか|公式が挙げる6つの用途
OpenAI embeddingsの用途とは、公式ガイドが列挙している検索・クラスタリング・レコメンド・異常検知・多様性の測定・分類という6種類の使い道のことです。
- 検索:クエリ文字列との関連度で結果を並び替える
- クラスタリング:類似したテキストどうしをグループ化する
- レコメンド:関連するテキストを含むアイテムをおすすめする
- 異常検知:関連性の乏しい外れ値を見つける
- 多様性の測定:類似度の分布を分析する
- 分類:最も似ているラベルにテキストを分類する
公式ガイドのクックブック例では、Amazonの食品レビューデータセットを使って、レビュー文をembedding化したうえで似た内容のレビューを検索したり、星の数を予測する回帰モデルの特徴量として使ったりする例が示されています。社内のFAQやマニュアルを検索できるようにする、問い合わせ内容を自動でカテゴリ分けする、といった用途に置き換えて考えると実務でのイメージがつかみやすくなります。
3つのembeddingモデルの違い|text-embedding-3-small・3-large・ada-002
3つのembeddingモデルとは、次元数・精度・料金が異なるtext-embedding-3-small、text-embedding-3-large、そして旧世代のtext-embedding-ada-002という、公式が提供する3種類のモデルのことです。
| モデル | デフォルトの次元数 | MTEBスコア | 最大入力トークン数 |
|---|---|---|---|
| text-embedding-3-small | 1,536 | 62.3% | 8,192 |
| text-embedding-3-large | 3,072 | 64.6% | 8,192 |
| text-embedding-ada-002(旧世代) | 1,536 | 61.0% | 8,192 |
MTEBスコアは、公式ガイドが埋め込みモデルの評価に使っているMTEBベンチマークでの性能を示す数値で、数値が高いほど検索や分類のタスクで精度が高い傾向を示します。text-embedding-3-largeのモデルページは、英語だけでなく英語以外の言語のタスクにも対応する最も高性能なモデルだと説明しています。日本語での具体的な精度についての公式な数値は示されていないため、実際に使う言語・文章の種類でtext-embedding-3-smallとtext-embedding-3-largeの両方を試して比較するのが確実な進め方です。ChatGPTの会話用モデルがどのように世代分けされているかはChatGPT最新モデルの違いと使い分けで解説していますが、embeddingsのモデル群は会話用モデルとは別系統の、ベクトル変換に特化したモデルです。
料金はどう決まるのか|1Mトークンあたりの単価を比較する
embeddings APIの料金とは、入力したテキストのトークン数に応じて課金される、1Mトークンあたりの単価で決まる仕組みのことです。
| モデル | 1Mトークンあたりの料金 | 1ドルあたりの目安ページ数 |
|---|---|---|
| text-embedding-3-small | 0.02ドル | 約62,500ページ |
| text-embedding-3-large | 0.13ドル | 約9,615ページ |
| text-embedding-ada-002 | 0.10ドル | 約12,500ページ |
上の単価は、OpenAI公式の料金ページのEmbeddingsの行を2026年10月5日に確認した値で、単位は入力1Mトークン(100万トークン)あたりのドルです。料金は変更されることがあるため、利用前に公式ページで最新の単価を確認してください。「1ドルあたりのページ数」は、公式ガイドが1ページ=約800トークンと仮定して示している目安です。実際の文章は1ページあたりのトークン数が変わるため、あくまでモデル間の料金差を比較するための試算として見てください。ChatGPTの月額プランの料金内訳はChatGPT料金プラン完全比較で解説していますが、embeddings APIはChatGPTのサブスクリプションとは別会計のAPI従量課金である点に注意してください。
仮の例として、社内マニュアル50万トークン分をembedding化する場合を考えます。text-embedding-3-smallなら0.5×0.02ドルで約0.01ドル、text-embedding-3-largeなら0.5×0.13ドルで約0.065ドルという試算になります(いずれも公式ガイドの単価に基づく計算例で、実際の請求額は入力したテキストのトークン数によって変わります)。
embeddings APIの呼び出し方|エンドポイントと必須パラメータ
embeddings APIの呼び出し方とは、公式APIリファレンスが定めるPOST /embeddingsエンドポイントへ、モデル名と埋め込みたいテキストを送信する手順のことです。
| パラメータ名 | 必須か任意か | 受け付ける型 | 役割と制約 |
|---|---|---|---|
| input | 必須 | 文字列または配列 | 埋め込みたいテキスト。1件あたり最大8,192トークン、配列は2,048件以下 |
| model | 必須 | 文字列 | text-embedding-3-small・text-embedding-3-large・text-embedding-ada-002のいずれか |
| dimensions | 任意 | 数値 | 出力ベクトルの次元数。text-embedding-3以降のモデルのみ対応 |
| encoding_format | 任意 | float または base64 | 埋め込みベクトルの返却形式 |
| user | 任意 | 文字列 | 不正利用の監視のためにOpenAIへ渡すエンドユーザー識別子 |
公式APIリファレンスによると、必須パラメータはinputとmodelの2つだけで、dimensions・encoding_format・userは任意です。同じOpenAI APIでも、出力形式をJSON Schemaで固定したい場合は構造化出力の使い方のようにresponse_formatを指定しますが、embeddings APIにresponse_formatの概念はなく、常に埋め込みベクトルの配列が返ります。また、会話の途中で外部の関数を呼び出す設計はFunction callingの使い方と設計手順で扱っていますが、embeddings APIは関数呼び出しを経由せず、リクエストに対して直接ベクトルを返す点がシンプルな違いです。
入力できるテキストの上限|1件8,192トークン・合計300,000トークン
embeddings APIの入力上限とは、1件のテキストにつき8,192トークンまで、1回のリクエストで合計300,000トークンまでという、公式APIリファレンスが定める制約のことです。
公式APIリファレンスは、入力できるトークン数について「the input must not exceed the max input tokens for the model (8192 tokens for all embedding models)」と明記しており、1件あたりの上限はすべてのembeddingモデルで共通の8,192トークンです。さらに、配列で複数の文章をまとめて渡す場合でも「all embedding models enforce a maximum of 300,000 tokens summed across all inputs in a single request」とあり、1リクエストの合計トークン数は300,000トークンが上限になります。加えて、配列として渡せる件数自体も2,048件までに制限されています。
数万件規模のテキストをまとめてembedding化したい場合は、この上限に収まるようリクエストを分割する必要があります。応答をすぐに使う必要がない大量のデータ処理では、Batch APIとは|50%安い非同期処理の使い方と料金で解説した非同期処理と組み合わせると、リクエスト数の管理がしやすくなります。
dimensionsパラメータで次元数を圧縮する方法
dimensionsパラメータとは、text-embedding-3以降のモデルで、出力される埋め込みベクトルの次元数を指定して短くできる公式パラメータのことです。
公式ガイドは、text-embedding-3系のモデルが特定の学習手法によって「developers can shorten embeddings (i.e. remove some numbers from the end of the sequence) without the embedding losing its concept-representing properties」という性質を持つと説明しています。実例として、text-embedding-3-largeを256次元まで短くしても、1,536次元のtext-embedding-ada-002より高いMTEBスコアを維持できると公式ガイドは示しています。次元数を大きくするほど検索精度は上がりやすい一方で、ベクトルの保存や検索にかかる計算コストも増えるため、dimensionsパラメータで次元数を減らすことがコストと精度のバランスを取る主な手段になります。ChatGPTの会話用モデルでトークン単価を抑える方法はプロンプトキャッシュ活用法で解説していますが、embeddingsではプロンプトキャッシュではなくdimensionsパラメータがコスト最適化の主な手段になります。
公式ガイドは、利用するベクトルデータベースが1,024次元までしか対応していない場合でも、dimensionsパラメータに1,024を指定すれば、性能の高いtext-embedding-3-largeを3,072次元から短縮して使えると説明しています。次元数を後から手動で変更する場合は、ベクトルを正規化し直す必要がある点にも注意してください。
encoding_formatとuserパラメータの使い分け
encoding_formatとuserパラメータとは、埋め込みベクトルの返却形式と、不正利用監視のための呼び出し元識別子をそれぞれ指定する、embeddings APIの任意パラメータのことです。
公式APIリファレンスによると、encoding_formatにはfloatまたはbase64を指定でき、floatを指定すると数値の配列、base64を指定するとbase64エンコードされた文字列としてベクトルが返ります。userパラメータは「a unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse」と説明されており、アプリの利用者ごとに一意なIDを渡しておくことで、OpenAI側が不正利用を監視しやすくなる仕組みです。どちらも省略した場合は、floatでの返却・識別子なしの扱いになります。
レスポンスの構造を読み解く|data・model・object・usageの意味
embeddings APIのレスポンスとは、埋め込みベクトルを含むdata配列、使用したモデル名、オブジェクトの種類、消費トークン数をまとめた、公式APIリファレンスが定めるJSON構造のことです。
| フィールド名 | 値の型 | 入っている内容 |
|---|---|---|
| data | 配列 | embedding・index・objectを持つオブジェクトの配列。入力した件数分だけ格納される |
| model | 文字列 | 実際に使用されたモデル名 |
| object | 文字列 | 常に”list”が入る、オブジェクトの種類を示す値 |
| usage | オブジェクト | prompt_tokensとtotal_tokensという2つのトークン数を含む |
data配列の各要素には、埋め込みベクトル本体を表すembedding、入力順を示すindex、そして常に”embedding”が入るobjectという3つのフィールドが含まれます。usageにはprompt_tokens(プロンプトで使われたトークン数)とtotal_tokens(リクエスト全体で使われたトークン数)が入り、課金の目安になります。OpenAIの別のAPIであるResponses APIとChat Completionsでレスポンスの形が異なる点はResponses APIとChat Completionsの違いと使い分けで解説していますが、embeddings APIのレスポンスはどちらとも異なる、data配列を中心にしたシンプルな構造です。
類似度の測り方|OpenAIがコサイン類似度を推奨する理由
類似度の測り方とは、2つの埋め込みベクトルがどれだけ近いかを計算する方法のことで、公式ガイドはコサイン類似度の利用を推奨しています。
公式ガイドは「We recommend cosine similarity. The choice of distance function typically doesn’t matter much.」と述べたうえで、OpenAIのembeddingsはあらかじめ長さ1に正規化されているため、コサイン類似度をベクトルの内積だけで少し速く計算できること、そしてコサイン類似度とユークリッド距離を使った場合の順位が同じ結果になることを説明しています。実装上は、内積を計算するだけでよいという点が、大量のベクトルを高速に比較したい場面での実用的なメリットです。多くのベクトルの中から近いものを高速に探したい場合は、公式ガイドがクックブックで紹介しているベクトルデータベースの利用が推奨されています。
embeddingsを使うときに注意したい3つの落とし穴
embeddingsを使うときの落とし穴とは、トークン上限の超過・知識のカットオフ・次元数とコストのトレードオフという、公式ドキュメントが明記している3つの注意点のことです。
- 8,192トークンの上限を超える入力は渡せない:公式APIリファレンスは入力が上限を超えてはならないと定めているため、長い文章はあらかじめ分割してからembedding化する必要があります
- text-embedding-3系のモデルは2021年9月以降の出来事を知らない:公式FAQは「the text-embedding-3-large and text-embedding-3-small models lack knowledge of events that occurred after September 2021」と明記しており、最新の固有名詞や出来事を扱う検索では前提として理解しておく必要があります
- 次元数を増やすほど精度は上がりやすいが保存・検索のコストも増える:dimensionsパラメータで次元数を圧縮するかどうかは、必要な精度と保存コストを見比べて判断する必要があります
いずれも公式ドキュメントに明記されている制約であり、事前に把握しておけば設計段階で回避しやすいポイントです。
ChatGPTやCodexの機能との違い|embeddingsは会話ではなく検索・分類の基盤
ChatGPTやCodexとの違いとは、embeddingsが会話やコード生成そのものを行うAPIではなく、検索・分類・レコメンドの土台となるベクトルを作るためのAPIである、という役割の違いのことです。
ChatGPT上でカスタムの会話体験を作るカスタムGPT(GPTs)の作り方は、UIから指示や知識ファイルを設定して会話用のアシスタントを作る仕組みですが、embeddings APIはコードから直接呼び出して数値ベクトルを取得するAPIという点で、設計の出発点が異なります。同様に、コーディング支援のCodexがCLI・IDE拡張・クラウド環境など複数の提供形態を持つ点はOpenAI Codexの提供形態の違いで整理していますが、embeddings APIはCodexとは別のエンドポイントとして提供されている、独立した機能です。社内の検索システムやFAQボットを作る場合、会話部分はChatGPTのカスタムGPTやChat Completions・Responses APIで実装し、検索対象の文章をあらかじめembedding化して保存しておく、という組み合わせ方が一般的です。
よくある質問(FAQ)
- Q1. text-embedding-3-smallとtext-embedding-3-largeはどちらを選べばいいですか
- 公式ガイドのMTEBスコアはtext-embedding-3-smallが62.3%、text-embedding-3-largeが64.6%で、次元数はそれぞれ1,536と3,072です(公式ガイド)。精度をやや優先するならtext-embedding-3-large、料金や保存コストを優先するならtext-embedding-3-smallという判断が基本になりますが、実際の文章での精度差は用途によって変わるため、両方を試して比較するのが確実です。
- Q2. dimensionsパラメータで次元数を減らすと精度はどれくらい落ちますか
- 具体的な低下幅は文章の内容によって変わるため公式ドキュメントも一律の数値は示していませんが、256次元まで圧縮したtext-embedding-3-largeが、1,536次元のtext-embedding-ada-002のMTEBスコアを上回るという具体例が公式ガイドで紹介されています。まずは初期値のまま試し、保存コストや検索速度に問題がある場合にdimensionsを段階的に下げて精度を確認する進め方が実務的です。
- Q3. embeddings APIで日本語の文章も扱えますか
- text-embedding-3-largeのモデルページには「most capable embedding model for both english and non-english tasks」という記載があり、英語以外の言語にも対応するモデルであることが明記されています。ただし日本語特有の精度についての公式な数値は公開されていないため、実際に扱う文章で試したうえで精度を確認することをおすすめします。
- Q4. embeddingsとChatGPTの会話機能は何が違いますか
- ChatGPTやFunction callingは新しい文章や処理を生成するための機能ですが、embeddingsは文章を数値ベクトルに変換して関連度を比較するための機能です。会話を生成する部分と、検索対象の文章をベクトル化しておく部分は別々のAPIとして組み合わせて使います。
- Q5. 古いtext-embedding-ada-002はもう使えませんか
- 公式モデルページでは引き続き利用可能なモデルとして掲載されていますが、「Older embedding model」と説明されており、料金は0.10ドル/1Mトークンでtext-embedding-3-smallの0.02ドル/1Mトークンより高く設定されています。新規に組み込む場合は、価格と精度の両方で優位なtext-embedding-3系のモデルを選ぶのが基本になります。
- Q6. 埋め込みベクトルどうしの近さはどうやって計算すればいいですか
- 公式ガイドはコサイン類似度の利用を推奨しています。OpenAIのembeddingsはあらかじめ長さ1に正規化されているため、内積だけでコサイン類似度を高速に計算でき、ユークリッド距離を使った場合と同じ順位になります。大量のベクトルから近いものを探す場合は、ベクトルデータベースを組み合わせる方法が公式クックブックで紹介されています。
まとめ
OpenAI Embeddings APIは、テキストを数値ベクトルに変換し、検索・分類・レコメンドなどの土台として使う機能です。公式ガイドが「third-generation」として紹介しているのはtext-embedding-3-small(0.02ドル/1Mトークン)とtext-embedding-3-large(0.13ドル/1Mトークン)で、モデルページで「Older embedding model」とされているtext-embedding-ada-002(0.10ドル/1Mトークン)より、料金(2026年10月5日時点)とMTEBスコアの両面で上回っています。入力できるテキストは1件あたり8,192トークン、1リクエスト合計300,000トークンまでという上限があり、dimensionsパラメータを使えば次元数を減らしてコストと精度のバランスを取れます。会話やコード生成を行うChatGPT・Codexとは役割が異なるAPIという位置づけを理解したうえで、検索やレコメンドの仕組みを作る際の選択肢として検討してみてください。
あわせて読みたい・姉妹メディア
