Qdrant 1.7.0 がリリースされました!
Qdrant 1.7.0 は、キーワードベースの検索を可能にするスパースベクトルのネイティブサポート、より精密なベクトル検索を実現する新しい Discovery API(ディスカバリーサーチとコンテキストサーチ)、ユーザー定義のシャーディングによる柔軟なデータ分散、スナップショットベースのシャード転送による効率的なクラスタースケーリング、およびさまざまなパフォーマンス改善を導入します。
待望の Qdrant 1.7.0 がついにリリースされました。いくつかの軽微な修正と改善に加え、このリリースではエキサイティングな新機能が多数導入されています。
最も注目すべき機能は、スパースベクトルのネイティブサポートです。従来、Qdrant はデンスベクトルのみをサポートしており、TF-IDF や BM25 などのキーワード検索を必要とするユーザーは別のツールを使用する必要がありました。スパースベクトルは理論的には高次元ですが、ほとんどの次元がゼロであるため、非ゼロの次元のみを効率的に保存します。これにより、単一のプラットフォームでデンスベクトルとスパースベクトルの両方を使用し、セマンティック理解と正確なキーワードマッチングを兼ね備えたハイブリッド検索システムを構築できます。
Discovery API の導入により、ベクトルの活用範囲がさらに広がりました。この API はレコメンデーション API と似たインターフェースを持ちますが、「コンテキスト」という概念を用いて検索パラメータを精密化します。コンテキストは正例と負例のペアから構成され、ベクトル空間をポジティブゾーンとネガティブゾーンに分割します。検索アルゴリズムはポジティブゾーン内の点を優先し、ネガティブゾーンを避けます。Discovery API には2つのモードがあります:ターゲット点を指定するディスカバリーサーチと、ターゲット点なしでコンテキストのみを使用して HNSW グラフを探索するコンテキストサーチです。コンテキストサーチはより多様な結果をもたらし、探索的な検索に適しています。
ユーザー定義のシャーディングにより、データ分布を細かく制御できるようになりました。従来は一貫性ハッシュによって自動的に点がシャードに割り当てられていましたが、今回のリリースではコレクション作成時にシャードを定義し、upsert 操作で各点にシャードキーを指定できます。検索時にも shard_key パラメータを使用して特定のシャードのみを検索できます。これは、同じユーザーのデータを同一シャードに保存したり、専用ノードを使用したりするシナリオで有用です。
スナップショットベースのシャード転送は、分散モードの技術的な改善です。従来のストリームレコード方式では、ターゲットノードで HNSW インデックスを再構築する必要がありました。新しい方式では、インデックスを含む完全なスナップショットを直接転送するため、ターゲットノードはロード後すぐにリクエストを処理でき、インデックスの再構築が不要になります。これにより、クラスターの動的スケーリング時のパフォーマンスが大幅に向上します。
その他の改善点としては、高CPUシステムでの HNSW インデックス構築の最適化、検索テールレイテンシの低減、地理マップペイロード用のインデックス追加、大規模高負荷クラスターでのコンセンサス安定性の向上、検索タイムアウトの設定可能化などがあります。
Qdrant 1.7.0 はオープンソースプロジェクトとしてコミュニティのフィードバックを受けて発展しています。詳細は公式ドキュメントのリリースノートをご参照ください。