しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

Ignite 2024 で発表された Azure Cosmos DB for NoSQL のアップデート

シカゴで開催された Ignite 2024 が終わってから少し時間が空いてしまいましたが、今年も Cosmos DB for NoSQL 周りで大きなアップデートがありましたのでまとめておきます。

公式まとめは以下のブログにまとまっているので、これを読んでおけば大体は把握できるはずです。

今回の Ignite 2024 は公式的には Cosmos DB for MongoDB (vCore) の新機能がかなり推されている印象ですが、個人的には使う気がしないので Cosmos DB for NoSQL の新機能に絞って扱っていきます。

Vector Search と DiskANN が GA

今年の Build で Public Preview として発表された Vector Search と DiskANN が Ignite では無事に GA となりました。よくある単純に SLA が付いただけの GA とは異なり、新機能もしっかりと含まれていました。

今回 GA のタイミングでこれまで利用できなかった継続的バックアップが有効な環境でも、問題なく Vector Search が使えるようになっています。これは結構重要なポイントです。

Cosmos DB for NoSQL の Vector Search と DiskANN は Public Preview 中に検証しているので、詳細は以下のエントリを参照してください。

若干扱いが地味ですが、更に GA のタイミングで Vector Index 作成時のオプションとして quantizationByteSize と indexingSearchListSize が追加されました。

両方とも Vector Search の精度に関わる設定なので、ユースケースに合わせて最適な値を設定するのも検討しても良いでしょう。上手くコストとのバランスを取る必要がありますが、RU に依存しているのでコントロールしやすい部分ではあります。

Full-Text Index と Hybrid Search が Public Preview

これまで AI Search の独壇場だった Full Text Search ですが、なんと Cosmos DB for NoSQL にも専用の Full-Text Index が追加され、これで Cosmos DB だけで Vector Search と Full Text Search の両方を使った Hybrid Search が実現出来るようになりました。

Full Text Search は Vector Search の時と同様に専用のインデックスと関数が追加されているだけで、Cosmos DB 自体の機能としては変わっていないのが大きな特徴と言えます。そのような仕組みなので使い方は Vector Search の時とほぼ変わりません。

インデックスさえ作成してしまえば、後はそのプロパティに対して検索を行う関数を呼び出す SQL を書くだけなので分かりやすいです。SQL ベースなので Azure Portal からも試せます。

現時点での制約として Full-Text Index の Analyzer は English のみ指定可能という点です。将来的には他の言語向けの Analyzer も追加されると思いますが、Preview 開始時点では英語のみサポートです。

そして Hybrid Search は RRF 関数と ORDER BY RANK が追加されているので、Vector Search と Full Text Search を行う関数が返すスコアを使えば実現出来ます。API としては低レベル寄りですが、その分コントロール可能な部分が多くなっています。

まだ Preview ではありますが、確実に AI Search よりもコストを下げつつ信頼性を高めることが出来るので、今後のエンタープライズ向け RAG のバックエンドとしては Cosmos DB for NoSQL が重要な選択肢です。

VS Code 拡張が Public Preview

Azure Portal から利用できる Data Explorer のような操作感の VS Code 拡張が Public Preview です。Azure Database 拡張の更に拡張機能という形になっていて、クエリの実行からデータの編集まで VS Code 上で行えるようになります。

Cosmos DB へのアクセスを Private Endpoint で絞っている場合には Azure Portal の Data Explorer が利用できませんが、VS Code 拡張であればネットワーク内から接続できるはずなので、本番環境のメンテナンス向けにも良さそうですね。

Linux-based Emulator が Public Preview

地味に大きなアップデートとなるのが Cosmos DB の新しい Linux 向け Emulator が Public Preview として公開されたことです。

これまでも Cosmos DB Emulator は Windows と Linux の両方で実行出来ていましたが、Linux 向けは M1/M2 などの Arm ベースの macOS に対応できておらず、パフォーマンス面でも Windows 版に比べて不利な部分がありましたが、今回の新しい Linux 向け Emulator では解消されています。

Docker Image を確認したところ、amd64 と arm64 の両方に対応した Multi-arch image となっています。Arm64 に対応したので Windows on Arm デバイスでも Prism エミュレーション無しに実行出来そうです。

ローカル開発環境だけのメリットではなく、GitHub Actions 上で Cosmos DB Emulator を使ったテストコードを実行しているケースでも、今回新しくリリースされた Linux 向け Emulator は CI 時間の短縮やリソースの削減で役に立ちそうです。Arm64 対応によってコスパの良い Arm ベース Runner を使えるため、CI コストをさらに下げることも出来そうです。