【比較】トークン・埋め込み・ベクトルの違い¶
概要¶
LLM 入門で最頻の混同が「トークン」「埋め込み(embedding)」「ベクトル」です。料金表示やコンテキスト長で「トークン」、RAG で「埋め込み」「ベクトルDB」と立て続けに出てくるため、同じものの言い換えに見えてしまいます。
実際には処理パイプライン上の別の段階を指します。トークンはテキストを分割した離散的な単位(モデルが数える最小ピース)、埋め込みはトークンや文を意味を捉えた数値表現に変換したもの、ベクトルはその数値表現の数学的な器(数の並び)であり一般用語です。関係を一言でいうと「埋め込みはベクトルの一種であり、トークン(や文)から作られる」。この段階の違いが分かると、トークン数(課金・コンテキスト)と埋め込み次元(ベクトルDB の設計)を取り違えなくなります。
例えるなら:文章を地図上の点にするまで¶
- トークン … 文章をハサミで意味のある小片に切り分けた「紙片」。数えられる離散的な単位。
- 埋め込み … その紙片(や文章全体)を「意味が近いものは近くに配置される地図」上の座標に変換したもの。
- ベクトル … その座標を表す数値の並びそのもの(例: 1024 個の小数)。地図に限らずあらゆる「数の並び」を指す一般語。
詳細比較¶
| 比較軸 | トークン | 埋め込み(embedding) | ベクトル |
|---|---|---|---|
| 何か | テキストを分割した離散的な最小単位 | トークン/文を意味を捉えた数値表現に変換したもの | 数値を順序付きで並べたもの(一般的な数学概念) |
| 値の性質 | 記号的・離散(語彙 ID に対応) | 連続値の並び(学習で得た意味空間上の点) | 任意の数値列(意味を持つとは限らない) |
| 生成元 | テキスト(トークナイザが分割) | 埋め込みモデル(ニューラルネット) | (概念なので生成元は問わない) |
| 典型サイズ | 英語で約 4 文字 ≒ 1 トークン、約 0.75 語 | モデル依存の固定次元(例: 1024 次元) | 任意の長さ |
| 主な用途 | 課金・コンテキスト長・モデル入力単位 | 意味的検索・類似度・推薦・クラスタリング | データ表現一般・線形代数演算 |
| 包含関係 | 埋め込みの「入力」になりうる | ベクトルの一種(意味を持たせたもの) | 上位概念(埋め込みを含む) |
| 比較演算 | 一致/不一致(ID 比較) | コサイン類似度・内積・ユークリッド距離 | 同上(演算は定義可能だが意味は保証されない) |
よくある誤解¶
- 誤解1:「埋め込みとベクトルは同じ意味の言葉」 — 包含関係が違います。ベクトルは「数値の並び」という一般概念で、必ずしも意味を持ちません。埋め込みは「学習済みモデルが意味(セマンティクス)を捉えるように作ったベクトル」であり、ベクトルの特殊な一種です。「すべての埋め込みはベクトルだが、すべてのベクトルが埋め込みではない」。
- 誤解2:「1 トークン=1 単語」 — 違います。現代のトークナイザはサブワード分割で、
tokenizationはtokenとizationに、ChatGPT is great!は["Chat","G","PT"," is"," great","!"]のように割れます(GPT 系トークナイザの例。実際の分割はモデル/トークナイザ依存)。OpenAI の目安は英語で「1 トークン ≒ 約 4 文字、約 0.75 語」。日本語など非英語ではさらに 1 トークンあたりの文字数が少なくなる傾向があり、課金・コンテキスト見積もりに直結します。 - 誤解3:「埋め込みの次元数=トークン数」 — 別物です。トークン数は入力テキストの長さ(課金・コンテキストに影響)、埋め込み次元数はモデルが出力するベクトルの長さ(ベクトルDB のインデックス設計に影響)で固定。長い文章を 1 つの埋め込みにしても、次元数はモデル仕様で決まり入力トークン数では変わりません。
実務での選び分け¶
- コスト・コンテキスト長を見積もる → トークンの問題。トークナイザ/token counting で実測する。「文字数 ÷ 4」はあくまで英語の目安。
- 意味で検索・分類・推薦したい(RAG の検索部分) → 埋め込みの問題。埋め込みモデルを選び、文書とクエリを同じモデルでベクトル化して類似度で近傍検索する。
- ベクトルDB を設計する → 埋め込みの次元数・正規化の有無・類似度関数(コサイン/内積/ユークリッド)・量子化の選択が論点。トークン数とは独立に決まる。
- 品質が出ない検索の切り分け → 「文字化け・分割の問題=トークナイズ層」「意味が近いのにヒットしない=埋め込みモデル選定や input_type の問題」「速度・スケール=ベクトル表現/量子化/インデックス」と層で分ける。
- クエリと文書で別の埋め込みモデルを混ぜない → 同じ意味空間に揃わず近傍検索が破綻する。
ひとことまとめ¶
トークンは「テキストを切った離散的な数える単位」、埋め込みは「意味を捉えるように作られたベクトル」、ベクトルは「数値の並びという上位の一般概念」。埋め込み ⊂ ベクトル、そしてトークンは埋め込みの入力になりうる別段階、と覚えると混同しません。
出典・参考¶
- OpenAI Help Center「What are tokens and how to count them?」(サブワード分割、英語で 1 トークン ≒ 約 4 文字/約 0.75 語): https://help.openai.com/en/articles/4936856-what-are-tokens-and-how-to-count-them
- Anthropic「Embeddings」(埋め込みは意味的類似度を測れる数値表現=ベクトル。検索・推薦・異常検知に利用、コサイン/内積/ユークリッドで比較): https://platform.claude.com/docs/en/docs/build-with-claude/embeddings