ここでは、2025年5月に開催の Microsoft Build 2025 で発表された Cosmos DB 関連の情報のうち、NoSQL で AI に関連する情報のまとめです。
Mongo DB (vCore) 関連や、サブスクリプションを跨いで複数の Cosmos DB を管理・分析が可能な Fleets、DB で RU をシェアして利用している際の各 Container の RU の limits の割合を制御できる Throughput Buckets、パーティションごとでフェイルオーバーできる PPAF などの更新情報は書いていません。
- New Generally Available and Preview Search Capabilities in Azure Cosmos DB for NoSQL
- Boost Query Performance with Global Secondary Indexes in Azure Cosmos DB
- Azure AI Foundry Connection for Azure Cosmos DB and BYO Thread Storage in Azure AI Agent Service
New Generally Available and Preview Search Capabilities in Azure Cosmos DB for NoSQL
Cosmos DB for NoSQL の検索機能のアップデートまとめです。
フルテキスト検索が GA (英語のみ)
フルテキスト検索が英語のみ GA して検索の幅が増えましたのでおさらい。
ちなみにフルテキスト検索なので言語アナライザーとしてトークン化、ステミング、ストップワード除去といった一般的な機能はもちろん含まれる。
- フレーズ検索
- 対象のフレーズをデータ内の完全一致を検索する
- 例として "Hello World" を検索すると、この "Hello World" と完全一致する文章を検索する。
- キーワード検索
- 指定された単語の順序や近接性に関係なく、それらの任意の組み合わせを含むドキュメントを検索する。複数の単語のすべてを含むかいずれかを含むかの検索も可能。
- 例として "Hello", "World" といった複数の単語を検索することで、 順序や近接性に関係なくこの2つを含む文章を検索する。
- BM25 スコアリング
- 用語の出現頻度、ドキュメントの長さ、および用語全体の重要度を評価し、非常に正確な結果を返す BM25 scoring も可能。
ハイブリッド検索が GA (英語のみ)
- ベクター検索とフルテキスト検索の結果を組み合わせて精度をあげるハイブリッド検索も英語のみだが GA。
ちなみに .NET SDK だと LINQ でフルテキスト検索・ハイブリッド検索がサポートされました。
Public Preview で登場した検索機能
- フルテキスト検索の多言語サポート
- 今回は日本語含まれず...追加された言語はドイツ語、フランス語、スペイン語のみで、フルテキスト検索の機能もまだ限定的。
- ファジー検索
- distance は最大2で、ファジー検索が可能。
- DiskANN での filtered vector search
- ブログ記事内に、どうやって動作するかの解説がありましたので興味ある方は見てみましょう。
- Azure Logic Apps Document Indexer
- Logic Apps でドキュメントのインデクサーとして動作し、Cosmos DB にストアしてくれる機能。
- Blob または SharePoint のファイルをテキストにしたり、Azure Document Intelligence で OCR かけるテンプレート。
- 個人的には、最も大事なチャンクの細かいカスタマイズ性やパフォーマンス・運用コストから、自分でコード書いた方が幸せそう (注: あくまでコード書くのが好きな私の個人的な感想です😅)
Boost Query Performance with Global Secondary Indexes in Azure Cosmos DB
参考: Boost Query Performance with Global Secondary Indexes in Azure Cosmos DB - Azure Cosmos DB Blog
Global Secondary Indexes (GSI) は、元の Container に負荷や運用コストをほとんどかけることなく、cross partition query のパフォーマンスを爆上げできる機能です。
Global Secondary Indexes (GSI) の概要
- GSI を構成する = 検索したいインデックス専用の別コンテナーが作ることで、検索パフォーマンスを向上できる。
- GSI を構成すれば、ソースコンテナーとのデータの同期は自動 (内部的に Change Feed が構成される) ので、materialized view を作るのに自分で Function App 作って Change Feed する必要なく、設定だけで可能になったって感じなので、最高すぎる機能😊。
- 検索時は、GSI の container を指定して検索するため、ソースコンテナーのワークロードの負荷は減る。
- ベクター検索の際はほぼ cross partition query になるため、CSI を作ってワークロードのサブセットを分離することでパフォーマンスを向上可能って感じ。フルテキスト検索でも同様って感じか。
Global Secondary Indexes (GSI) の利用方法
以下ドキュメントになりますが、Features を有効化してあとは GSI を作成するだけ。作ること自体は簡単ですね。
Azure AI Foundry Connection for Azure Cosmos DB and BYO Thread Storage in Azure AI Agent Service
Azure AI Foundry との integration 系で2つの機能紹介です。
Azure AI Foundry Connection
Azure AI Foundry の Connection のひとつとして Cosmos DB の指定が可能になりました。
Bring Your Own Thread Storage with Azure AI Agent Service
(この Build 2025 で名称が Azure AI Agent Service から Azure AI Foundry Agent Service に変わりましたが)
Foundry Agent Service の Agent の会話履歴のストアとして、Cosmos DB の指定が可能になりました。具体的には enterprise_memory
という DB が作られその中で以下3つのコンテナーにて会話履歴の永続化されます。
- thread-message-store: エンドユーザーの会話メッセージを保存。
- system-thread-message-store: 内部システムメッセージを管理。
- agent-entity-store: モデルの入力と出力をキャプチャして保存。