ベクトルバケットは、Alibaba Cloud Object Storage Service (OSS) のバケットタイプの一種で、ベクトルデータの保存、クエリ、管理のために設計されています。これは、低コスト、大規模、かつ使いやすいソリューションであり、マルチモーダル検索、ナレッジベース、検索拡張生成 (RAG)、AI エージェントなどの AI シナリオ向けに、ベクトルストレージとクエリ機能を提供します。任意のサードパーティサービスからベクトルデータをベクトルバケットに書き込むことができます。また、ベクトルバケットは、大量の生データとベクトルデータの一元管理もサポートしています。例えば、生データとベクトルバケットの両方に同じバケットポリシーを設定したり、監査のために統一されたフォーマットでログをエクスポートしたりできます。
基本概念
ベクトルバケット:大規模なベクトルデータを管理するためのクラウドリソースとして機能するバケットタイプです。
ベクトルインデックス:ベクトルバケット内のインデックステーブルで、ベクトルデータを格納します。1 つのベクトルバケットに複数のベクトルインデックスを作成して、さまざまなビジネスシナリオのベクトルデータを格納できます。検索クエリを開始すると、ベクトルインデックス内のベクトルデータの類似度に基づいて結果が返されます。
ベクトルデータ:画像、動画、ドキュメントなどの非構造化データをベクトルモデルを使用して変換することで作成される高次元の数値配列です。これらの配列は、データのコンテンツ特徴量を表します。ベクトル検索は、このベクトルデータの類似度に基づいて結果を返します。Elastic Compute Service (ECS)、Platform for AI (PAI)、Alibaba Cloud Model Studio などの任意のベクトル化サービスを使用してベクトルを生成できます。その後、OSS API、SDK、または ossutil ツールを使用して、指定されたベクトルインデックスに書き込むことができます。データを書き込む際に、後続のスカラーフィルタリングクエリで使用するためのメタデータをアタッチすることもできます。
メリット
低コスト:ベクトルデータは、さまざまな AI アプリケーションに不可欠なインフラストラクチャであり、指数関数的に増加しています。ベクトルバケットは、シンプルで透明な課金モデルを採用しています。ベクトルデータのストレージ容量と検索時にスキャンされたデータ量に対してのみ課金されます。このモデルにより、従来の方法と比較してコストを 90% 以上削減できます。
大規模:OSS ベクトルバケットは、大規模なベクトルデータストレージをサポートし、膨大なストレージ要件に対応できるアーキテクチャで設計されています。OSS は、弾力的にスケーリングするサーバーレスアーキテクチャを使用しています。ベクトルバケットを使用する場合、スケーリングを管理する必要はありません。
使いやすさ:OSS ベクトルバケットは、API、SDK、ossutil コマンドラインインターフェイスの完全なセットを提供します。また、OSS コンソールで、ベクトルデータの取得、追加、一括挿入など、ベクトルデータの管理と読み書き操作を実行することもできます。
一元管理:ベクトルバケットと大量の生データを格納するバケットを同じ方法で管理できます。例えば、権限管理のために同じバケットポリシーを設定したり、操作監査のために同じログのエクスポートパスを設定したりできます。
セマンティック検索:ベクトルバケットが提供する QueryVectors 操作を使用して、インデックステーブル内のベクトルデータをクエリし、類似度でソートされた結果を取得できます。OSS ベクトルバケットは、スカラーメタデータに基づくフィルタリングクエリもサポートしています。OSS ベクトルバケットにベクトルデータを書き込む際にスカラーメタデータを含めることで、後処理フィルタリングを有効にできます。ベクトルインデックスを作成する際に、フィルタリング不可メタデータを設定することもできます。フィルタリング不可メタデータはフィルター条件としては使用できませんが、ベクトル結果の記述情報として検索結果とともに返されます。
利用シーン
利用シーン 1:低コストの RAG アプリケーションの構築
AI ビジネスの成長に伴い、ベクトルデータの規模は指数関数的に増加し、それに伴いストレージと検索のコストも増加します。ナレッジベース、AI アシスタント、医療画像検索などのマルチモーダル検索シナリオでは、ユーザーは数十ミリ秒から数百ミリ秒の範囲の検索レイテンシに対してより寛容になっています。このような場合、ベクトルバケットを RAG アプリケーションのストレージ基盤として使用することで、非常に低いコストでビジネス要件を満たすことができます。
利用シーン 2:階層型検索を備えた AI エージェントの構築
AI エージェントによって、検索パフォーマンスに対する要件は異なります。すべてのベクトルデータを低コストの OSS ベクトルバケットに一元的に保存できます。パフォーマンスが要求されるビジネスシナリオでは、ホットデータを Tablestore などの他のプロダクトに同期して、パフォーマンス専有型の検索を行うことができます。このアプローチにより、階層型検索を備えた AI エージェントアプリケーションアーキテクチャを構築できます。
利用シーン 3:データの一元管理による AI コンテンツ管理プラットフォームの構築
AI アプリケーションは、ユーザー生成コンテンツ (UGC)、内部ドキュメント、AI 生成コンテンツ (AIGC) などの大量の非構造化コンテンツと、それに対応するベクトル化された結果を生成します。このプロセスは、ストレージおよび検索システムの断片化につながる可能性があります。生データを標準の OSS バケットに、ベクトルデータを OSS ベクトルバケットに保存することで、AI 生成コンテンツ (AIGC) のデータ管理などのユースケース向けに効率的な AI データ管理プラットフォームを構築できます。1 セットの API または SDK だけで生ファイルとベクトルインデックスの両方を管理およびアクセスできるため、効率的で統一された AI コンテンツ管理プラットフォームを簡単に構築できます。
エンタープライズ機能
ドメイン名アクセス
専用のパブリックネットワークおよび内部ネットワークのエンドポイントを提供し、汎用の OSS バケットから分離されています。
パブリックエンドポイント:
$bucketname-$uid.regionID.oss-vectors.aliyuncs.com内部エンドポイント:
$bucketname-$uid.regionID-internal.oss-vectors.aliyuncs.com
注意:ListVectorBuckets を除くすべての操作で、第 3 レベルドメインを使用する必要があります。セキュアな転送
HTTPS を使用して転送中のデータを暗号化します。
アクセス制御
バケットポリシー:リソースベースの認可ポリシーをサポートしており、ベクトルバケットレベル、または 1 つ以上のベクトルインデックスに対して権限を制御できます。
RAM ポリシー:ID ベースの RAM 認可ポリシーをサポートしており、ベクトルバケット、ベクトルインデックス、およびデータ操作に対するきめ細かな権限制御が可能です。これらのポリシーは、クロスアカウントアクセス認可もサポートしています。
ログ
アクセスログのエクスポート:アクセスログを指定されたバケットにリアルタイムまたはほぼリアルタイムでエクスポートすることをサポートしています。
統一されたログフォーマット:ログフォーマットは、標準の OSS ログと完全に互換性があります。ベクトルバケットリソースを一意に識別するための追加フィールド
BucketARNが含まれており、一元的なログ分析を簡素化します。
クォータと制限
ベクトルバケットには特定のクォータと制限があります。ベクトルストレージおよび検索ソリューションを設計および実装する際には、以下の制限に従って、バケット数、インデックス規模、メタデータ構造、および API 呼び出し戦略を計画してください。
1つのAlibaba Cloud アカウントは、1つのリージョンで最大10個のベクターバケットを作成できます。このクォータの上限を引き上げるには、テクニカルサポートにお問い合わせください。
単一のベクターバケットには、最大 100 個のベクターインデックスを含めることができます。このクォータを増やすには、テクニカルサポートにお問い合わせください。
1 つのベクトルインデックステーブルには、最大 20 億行のベクトルデータを格納できます。
ベクトルディメンション:1~4096。
ベクトル検索リクエストの TopK 範囲:デフォルトで 1~100。
1 つのベクトル配列の合計サイズ:1 KB~500 KB。
1 つのベクトルのメタデータ (フィルタリング可能およびフィルタリング不可) の合計サイズ:40 KB。
1 つのベクトルのフィルタリング可能メタデータのサイズ:2 KB。
1 つのベクトルのフィルタリング不可メタデータフィールドの数:10。
メタデータを使用してベクトルをフィルタリングする場合:
1 つのフィルター命令におけるフィルタリング可能メタデータの累積長は 64 KB を超えることはできません。
1 つのフィルター命令におけるフィルタリング可能メタデータ項目の数は 1024 を超えることはできません。
フィルター条件は最大 8 レベルのネストをサポートします。
PutVectorIndex API のリクエスト頻度は、1 秒あたり最大 5 回に制限されています。
PutVectors API を使用して、1 回のバッチで最大 500 エントリを書き込むことができます。API は最大 5 QPS (1 秒あたりのリクエスト数) をサポートします。
ListVectorIndexes API の応答では、1 ページあたり最大 500 個のインデックスが返されます。ページングを使用して、次のバッチのインデックスを取得できます。
ListVectorIndexes API の最大同時実行数は 16 です。