Azure OpenAI Developers Seminar 2025 で触れた内容のメモ。
Azure OpenAI Service でデプロイ可能な3つの Embeddings モデルの性質をいまさらながら比較、可視化したやつ。PCA で次元削減を行って単語ベクトルを3次元空間で可視化。
まぁデータはいつものやつを使用して、文章中でよく使われる単語の上位 1,000 個を形態素解析器を用いて抽出している(生成 AI 使ってもいいけど)。
事前に私がグループごとに色分けしてるので、それがクラスタ化によって近くに集まれば精度が高いということになる。元の次元を3次元まで削減しているので、非常に損失の多いプロセスであることに注意しつつ見て欲しいが、やはり v3 モデルは事前に色分けした分類ごとにしっかり近くに集まってくれていることが分かる。
text-embedding-ada-002
はぎゅっと狭い領域に集められているように見えるが、分類ごとに近づいてくれてはいる。実際に OpenAI 社が実施した精度評価結果は以下のようになる。
OpenAI によるベンチマーク結果
また、各 Embeddings モデルには異なる類似性の値の範囲があるため、あるモデルにおける類似性が 0.5 であるからといって、別のモデルにおける類似性が 0.5 と同じであると想定すべきではない。使用しているモデルの類似性の値の範囲を必ず確認しておく。
特に text-embedding-ada-002
ベクトルは類似性の値の範囲が非常に狭く(0.65~0.85)、角度にすると約49°~32°の間になる。一方 text-embedding-3-small
は範囲が広く(0.20~0.70)、角度にすると約78°~46°の間、「1」が「非常に類似している」を意味し、「0」が「類似していない」を意味するという直感に近いのでは。
この現象は、OpenAI Developer Community で Curt.Kennedy 氏が報告した内容と極めて類似している。同氏は text-embedding-ada-002
を用いて 80,000 件以上の英語メッセージのEmbeddings を取得した際、最も離れたベクトル同士でも角度が約50°以内に収まっていたという観察結果を報告している。そして、それに基づき「Embeddings ベクトルが単位球面(hypersphere)のごく限られた領域に密集しているのではないか」と考えた。
この考えに基づけば、私の観察した日本語単語同士のベクトル角度分布が 約49°~32°の狭い範囲に集中していたことも、「text-embedding-ada-002
が生成するベクトルは、意味的に十分に異なる内容であっても、球面全体を使って広がるのではなく、局所的な領域に集中する」という構造的制約を示していると解釈できる。
MRL による削減効果
OpenAI の text-embedding-3-large
と text-embedding-3-small
では、MRL(Matryoshka Representation Learning)という技術を使用している。この手法では、ベクトルの先頭部分に向けて情報密度が高まるようにモデルが学習されているため、先頭から一部の次元だけを取り出しても重要な情報を保持できる。
元の 1,536 次元から768 次元に切り詰め。さらに 256 次元に切り詰め。Microsoft としては元の 1/2〜1/3 くらいまでを推奨している。これにより、用途に応じてフルサイズの 3,072 次元のベクトルだけでなく、256 次元や 512 次元のサブベクトルも柔軟に活用でき、性能を大幅に損なうことなく効率的な検索や分析が可能になる。
ちなみに Assistants API の File Search Tool は 256 次元の text-embedding-3-large
を使っている。
MRL on Azure AI Search
Azure AI Search 上で MRL を利用した時の精度評価とベクトルインデックスのサイズ削減効果についてはすでに解説済み。
GitHub
当記事は英語データの分析をされた Microsoft Pamela Fox 氏のコードをベースにしています。感謝。