AI

Azure OpenAI / Azure AI Search が text-embedding-3-large に対応したので試してみた

セキュリティチームのぐっちーです。Azure OpenAI / AI Search が text-embedding-3-large に対応したので試してみました。

前提条件

  • 本ブログは2024年3月4日時点の情報を元に作成しています。

検証の背景

Azure OpenAI / AI Search が2024年2月23日(日本時間)に text-embedding-3-large に対応しました。text-embedding-3-large は2024年1月25日にOpenAIによってリリースされたembeddingモデル(≒ベクトル検索用モデル)です。従来モデルの text-embedding-ada-002 と比べて次元数が1536次元から3072次元に拡大しており、検索における精度も向上しているとされています。

そして発表から1ヶ月を経て、Azure OpenAI Service にもモデルが登場し、Azure AI Search でも使えるようになりました。モデルの精度的な部分でいうと同じものではありますが、Azure 環境に来たということで、大企業などがより使いやすくなったのではと思います。

また、text-embedding-3-large と同時に text-embedding-3-small というモデルが登場しています。このモデルは従来モデルの text-embedding-ada-002 と比べてベンチマークのスコアを改善しつつ、text-embedding-3-large と比べて軽量化されたモデルです。こちらのモデルも同様に Azure OpenAI / Azure AI Search で利用できるようになっています。

ベンチマークによる評価(出所:https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models

試してみた

まずは、Azure OpenAI でモデルのデプロイをします。本書執筆時点ではCanada East, East US, East US 2 のリージョンでしか利用できません。

続いてAzure AI searchにベクトルを組み込んでいきます。Azure AI Search のフィールドに3072ディメンション(次元)のベクトルフィールドを作っていききます。

Azuer AI Search のカスタムスキルを使って、指定のフィールドをベクトルに変換します。

すると見事に3072次元のベクトルフィールドが Azure AI searchのインデックスに追加されました。

ちなみに、ストレージサイズに関しては text-embedding-ada-002 に比べて、同じ元データでも約2倍の容量となってしまいました。次元数も倍になっているので、納得の数字です。(注意:元データの構造などによって容量については差分が出ますので厳密に倍になるというわけではない点についてご注意ください。)

もちろん、HTTPリクエスト等での検索に関してもちゃんと結果を返すことができました。検索が遅くなるのでは?という懸念がありましたが、少なくとも小規模の数MBの小規模データでは検索スピードにほぼ差分はありませんでした。(大規模データでの実験はまだしていません。)

おまけ

text-embedding-3-large の特徴として、次元圧縮に対応したというものがあります。text-embedding-3-large では3072次元のベクトルデータにテキストを変換しますが、次元数が増えるとストレージの容量が増えたり、応答速度にも影響が出る可能性があります。そこで、モデルの性能は可能な限り維持しながら次元数を下げてパフォーマンスを向上させるのが次元圧縮です。そちらに関しても、Azure OpenAIで動作することを確認しました。下記のように"dimensions"を指定してリクエストをする形です。

{
    "input": "ベクトルに変換したい文字列",
    "dimensions": 7
    }

残念だったのは、Azure AI Search のベクター化オプションが使えないことです。Azure AI Search × text-embedding-ada-002の場合は、検索クエリに含まれる自然言語のテキストを自動的にベクトルに変換するオプションがあります。このオプションを使うと、RAGを自前実装する際に非常に楽になるのですが、オプションは今のところ新しいモデルには対応していないようです。(公式ドキュメントには裏どりできるような情報がありませんでしたが、少なくとも僕の環境では使えませんでした。)

終わりに

ベクター化オプションが使えない分、text-embedding-ada-002 に比べて使い勝手はまだまだだ改善の余地がありますが、新しいモデルがAzureでも使えるようになったということで、私を含めて喜んでいる方は多いのではと思います。実際に検索をガンガン回して制度評価とかを行うのはこれからですけども、少なくともベンチマークの評価はかなり良いものが出ているので楽しみです。

参考文献

ぐっち

コンサル会社にてISO27017やISMAP等のセキュリティ規格案件を経験した後、クラティブに入社。セキュリティチーム所属ですが、最近は生成AI等を使ったシステムの開発や導入をやっています。趣味はダンス。Microsoft MVP for AI Platform & M365(Copilot)