ベクトルデータベース
ベクトルデータベースとは?
ベクトルデータベースとは
情報をデータオブジェクトの数値表現(ベクトル埋め込みとしても知られている)であるベクトルとして保存するデータベースのこと ベクトル埋め込みのパワーを活用して
半構造化データの大規模なデータセット全体にインデックスを付けて検索できる。 ベクトルデータベースはベクトル埋め込みを管理するように構築されているので
非構造化データや半構造化データの管理のための完全なソリューション
高度なデータ分析や機械学習、特に類似性検索において非常に重要な役割を果たすデータベースの一種
メタデータの保存やフィルタリングが可能なデータ管理ソリューションであって
拡張可能で
動的にデータ変更ができ
バックアップを実行し
セキュリティ機能を提供します。
高次元ベクトルは数百もの次元を持ち、各次元は、それが表すデータオブジェクトの特定の機能や属性に対応しています。
従来のデータベースと何が違うか
一方、ベクトルデータベースでは、「ベクトル」という数値配列でデータを表現します。 従来のデータベースと比べて柔軟なデータ構造を持つため
様々なデータタイプに対応出来ることが特徴
また、ベクトルデータベースは、従来のデータベースよりも高速で正確な検索が可能です。
伝統的なデータベースでは
ある画像を検索する場合、画像の属性(色、形状、サイズなど)をもとに検索を行います。 ベクトルデータベースでは
画像そのものをベクトルとして表現するため、属性の類似性を超えて、より高度な画像検索を実現します。 用途
ベクトルデータベースが重要なのは
ベクトル埋め込みを保持していて
インデックス化
距離の測定
類似性検索といった一連の機能を活用できるからです。 ベクトルデータベースは非構造化データや半構造化データの管理に特化している
ベクトルデータベースは機械学習やAIデジタル環境において不可欠なツールとなっています。
推薦システム
画像や音声の検索
ベクトルデータベースのコアコンポーネント
ベクトルデータは、検索を高速化するためにインデックス化されることが多い
これにより、巨大なデータセットの中から迅速に類似したベクトルを見つけ出すことが可能
高次元のベクトルを扱う際には、次元削減技術が用いられる
データをより扱いやすくし、効率的な検索が可能になります。
高い性能と耐障害性
ベクトルデータベースは高性能で、高い耐障害性を確保しています。
高い性能と耐障害性を確保するため
ベクトルデータベースはリソースの使用状況、クエリの成果、システム全体の健全性を監視が必要
ベクトルデータベースにはデータセキュリティ管理も必要
アクセス制御規制により、コンプライアンス、結果責任、およびデータベースの使用における監査能力
許可を得ている人がアクセスし、ユーザーの活動記録が保持が必要
スケーラビリティと調整可能性
優れたアクセス制御機能は、ベクトルデータベースのスケーラビリティ(拡張性)と調整可能性に影響を与える
保存されるデータ量が増えると、水平方向への拡張機能が必須となります。
インサートやクエリの変化量が異なっていたり、基盤となるハードウェアに差異があると、アプリケーションのニーズに影響
複数ユーザーとデータ隔離
ベクトルデータベースではスケーラビリティとアクセス制御機能に関連し、複数のユーザーや複数使用を扱う必要
これと併せて、べクトルデータベースはデータ隔離を行い、いかなるユーザー活動(インサート、デリート、クエリなど)も必要のない限り、他のユーザーには見えないようにする必要があります。
バックアップ機能
ベクトルデータベースは、定期的なデータバックアップを作成します。
これはシステム障害発生時におけるベクトルデータベースの重要な機能です。
データの損失や損傷が起こった場合、バックアップを使ってデータベースを以前の状態に修復することができます。
これで作動停止時間を最小限に抑えます。
ベクトルデータベースはAPIを使用して、ユーザーにとって使いやすいインターフェイスを提供します。 API層がベクトル検索体験を簡素化します。
SDKとは、ソフトウェア開発キットのことで、多くの場合APIをラップしています。
これはプログラミング言語であって、データベースはこれを使って通信や管理を行います。
SDKを使用すると、特定のユースケース(セマンティック検索や推奨システムなど)の開発時に基本構造について考慮する必要がなくなり、開発者にとってはベクトルデータベースが非常に扱いやすいものとなります。
ベクトルデータベースはどのように作動しますか?
ベクトルデータベースは
情報を取り出すには
ANN検索でクエリの最近傍のベクトルを見つけます。
https://scrapbox.io/files/656155e0b460e0001b2b11ad.png
インデックス化
ハッシュ化、量子化、またはグラフベースの技法を使用して、ベクトルデータベースはベクトルを特定のデータ構造にマッピングして、ベクトルにインデックスを付けます。 これで検索を高速化できます。
ベクトルデータベースは、データオブジェクトのメタデータもインデックス付けします。 このため、ベクトルデータベースはベクトルインデックスとメタデータインデックスの2種類のインデックスを持ちます。
クエリ処理
ベクトルデータベースがクエリを受け取ると、インデックスの着いたベクトルをクエリのベクトルと比較し、最近傍ベクトルを判定します。
最近傍を確定するために、ベクトルデータベースは類似性測度と呼ばれる数学的手法を用います。類似性測度には以下に挙げるようにさまざまな種類があります。 後処理
ベクトルデータベースパイプラインの最終ステップでは、ベクトルデータベースがさまざまな類似性測度を使用して最近傍のランクを付け替えている間に、時として後処理または事後フィルタリングを行います。
この段階では、データベースはメタデータに基づく検索で特定したクエリの最近傍をフィルタ処理します。
一部のベクトルデータベースは、ベクトル検索を実行する前にフィルタを適用するものもあります。この場合、前処理または事前フィルタリングと呼ばれます。
課題
スケーラビリティ
大量のデータを効率的に処理する能力は、ベクトルデータベースにとって重要な課題
精度と速度のバランス
高い精度の検索と高速処理の間でバランスを取ることは、技術的な挑戦を提起します。
ベクトルデータベースの代表的なサービス
ベクトルデータベース本体
ライブラリや検索エンジン
資料
AWS
Elastic