Embedding(埋め込み)とは?テキストを数値に変換するAIの基礎技術を解説

AI・テクノロジー

「コンピューターはテキストを直接理解できない」——AIがテキストを数値に変換して処理できるようにする技術が「Embedding(埋め込み)」です。RAG・セマンティック検索・類似度計算の根幹を支えるこの技術を、わかりやすく解説します。

Embeddingとは?

Embedding(エンベディング・埋め込み)とは、単語・文章・画像などのデータを、意味を保持したまま数値のベクトル(配列)に変換する技術です。コンピューターは文字列をそのまま計算できませんが、数値に変換することで「意味の近さ」を計算できるようになります。

たとえば「犬」「ワンちゃん」「Dog」という3つの単語は、文字として全く違いますが、意味は非常に近いです。Embeddingでは、これらを高次元ベクトル空間の近い位置に配置します。一方「犬」と「自動車」は意味が遠いため、ベクトル空間上でも遠い位置に配置されます。

Embeddingのイメージ(2次元に簡略化)
犬 🐕
ワンちゃん
Dog
自動車 🚗
Car
Vehicle
意味が近い単語は近くに・遠い単語は離れて配置される

Word EmbeddingとSentence Embeddingの違い

種類概要代表的なモデル主な用途
Word Embedding単語単位をベクトル化。同じ単語は常に同じベクトルになる(文脈を考慮しない)。Word2Vec・GloVe・fastText類似単語の検索・単語の意味関係の分析
Contextual Embedding文脈に応じて同じ単語でも異なるベクトルになる。「bank(銀行)」と「bank(河岸)」を区別できる。BERT・RoBERTa感情分析・テキスト分類
Sentence Embedding文章全体をひとつのベクトルにまとめる。文章の意味全体を表現できる。Sentence-BERT・OpenAI text-embeddingセマンティック検索・RAG・文書検索
Multimodal Embeddingテキストと画像を同じベクトル空間に埋め込む。テキストで画像検索が可能になる。CLIP・ALIGN画像検索・マルチモーダルAI

コサイン類似度:Embeddingで類似性を計算する

Embeddingベクトルの「近さ」を測る最も一般的な方法が「コサイン類似度」です。2つのベクトルがなす角度のコサインを計算します。同じ方向(類似度1.0)なら意味が近く、直角(類似度0.0)なら無関係、逆方向(類似度-1.0)なら対義語的な関係を意味します。RAGシステムではユーザーの質問をEmbeddingに変換し、コサイン類似度で最も関連する文書を検索します。

OpenAI Embedding APIの使い方

# OpenAI Embedding APIの基本的な使い方
from openai import OpenAI

client = OpenAI()

# テキストをEmbeddingに変換(1536次元のベクトル)
response = client.embeddings.create(
    model="text-embedding-3-small",
    input="AIとは何ですか?"
)

embedding = response.data[0].embedding
print(f"ベクトルの次元数: {len(embedding)}")
print(f"最初の5要素: {embedding[:5]}")

よくある質問

Embeddingの次元数はどれくらい?

モデルによって異なります。OpenAIのtext-embedding-3-smallは1536次元、text-embedding-3-largeは3072次元です。次元数が多いほど細かい意味の差異を表現できますが、計算コストも増加します。ベクトルデータベースへの格納容量も次元数に比例して増えます。

日本語のEmbeddingは精度が高い?

OpenAIやCohereなど大手のEmbeddingモデルは多言語対応しており、日本語も比較的高精度です。ただし英語が学習データの大部分を占めるため、英語より精度が若干落ちることがあります。日本語特化のEmbeddingモデル(cl-tohoku/bert-base-japaneseなど)を使うとさらに高精度になります。

次の記事を読む
AIへの不正操作「プロンプトインジェクション」について学ぼう
次の記事を読む

コメント