今週 (2024-11-18週) に開催中の Microsoft Ignite 2024 で、Cosmos DB for NoSQL の Vector search に関わる機能について以下の発表がありました。
- Cosmos DB for NoSQL の Vector Search 機能と DiskANN Vector Index 機能が GA
- Full Text Search (BM25) の Public Preview
- Hybrid Search (RRF) が Public Preview
来年も推していく機能なので、今回の発表の内容をまとめておきます。
Cosmos DB for NoSQL の Vector Search 機能と DiskANN Vector Index 機能が GA
2024年5月に Preview として発表され、それ以来推しとして利用してきた機能が GA しました。Azure 界隈で Vector Search といえば AI Search だった文化を一蹴して、Production 環境でも心置きなく利用していけます。
また、GA に合わせて以下が発表されました。
- パフォーマンスの改善:
- 検索の待ち時間の改善
- 精度を向上させるための新しい最適化の実装を追加
- Public Preview 中に制限されていた機能が利用可能に。
- ※ 11/21時点で試したらまだ利用できなかったで、利用できるようになるのはもう少し先かも
- バックアップはレガシーな Periodic のみでしたが、Continuous も利用可能に。
- 以前利用できなかった Customer managed Key の利用が可能に。
- Fablic へのミラーリングが利用可能に
- Vector index のパラメーター追加:
quantizationByteSize
(Quantized Flat と DiskANN): Vector を量子化する際のバイト数を設定可能。値を大きくすると RU もレイテンシーも上がるが精度が高くなる。indexingSearchListSize
(DiskANN のみ): インデックス構築時に、近傍のデータポイントをいくつにするか設定可能に。値を大きくするとベクトル構築の時間が長くなるが精度が高くなる。デフォルトはシステムが動的に決定、1-512 で設定可能。
- Vector search 時のパラメーター追加:
- vector search 実行時検索リストのサイズを指定可能に。数値を大きくするとRU を消費 + 待ち時間が長くなるが、精度は向上する可能性あり。Default は 5、1-100 で設定可能。
フルテキスト検索が Public Preview で登場
※ こちらも11月21日時点で試したらまだ利用できなかったで、利用できるようになるのはもう少し先かもですね。
まずはフルテキスト検索の概要はこんな感じ。
- ステミング、ストップワードの除去、トークン化などの機能ももちろんついている。
- インデックスを作るときに language の指定はできそうだが言語アナライザーは MS のやつ使ってるのかしら?
- BM25 では、用語の出現頻度、逆文書頻度、ドキュメントの長さなどの要因を考慮してドキュメントのスコア付けとランク付けをしている。
また、フルテキストについて
- 初期プレビューでは、英語のみ対応
- フルテキスト検索をサポートする新しい関数が追加:
FullTextContains
: キーワードや用語を含むドキュメントを見つけるのに利用。FullTextContainsAll
: 指定されたキーワードと用語をすべてを含むドキュメントを見つけるのに利用。FullTextContansAny
: 指定されたキーワードと用語のいずれかを含むドキュメントを見つけるのに利用。FullTextScore
: キーワードの頻度とその他のドキュメント要素に基づいて、BM25 スコア、ドキュメントの関連性を計算。ORDER BY RANK
:FullTextScore
と一緒に使用し、最も関連性の高いスコア (BM25 スコアが最も高い) から最も関連性の低いスコアまでの順序でクエリ結果を並べ替える。
使い方は こちらのドキュメント に書かれています。
ハイブリッド検索が Public Preview で登場
Vector search と Full-text search の長所を組み合わせたハイブリッド検索も利用可能に Public Preview でなりました。Full-text search が初期プレビューだと英語のみなので日本語の検証はまだ先ですかね。
- 新しい組み込みの関数
RRF
を使ってサクッと使える感じです。
おわりに
来週くらいには早く試せるようになるといいなと。