すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:Vector bucket クイックスタート

最終更新日:Mar 26, 2026

本ガイドでは、データ準備からベクトル取得までを含む、一連のワークフローを素早く構築する方法について説明します。このプロセスには、以下の4つのコアステップがあります:ベクターバケットの作成、ベクターインデックスの作成、ベクトルデータのアップロード、およびベクトル取得の実行。

開始する前に、以下の前提条件を完了してください。

  • OSS の有効化Object Storage Service (OSS) を有効化します。

  • 本機能は、以下のリージョンでご利用いただけます:中国 (深セン)中国 (北京)、中国 (杭州)、中国 (上海)、中国 (ウランチャブ)シンガポール中国 (香港)、インドネシア (ジャカルタ)、ドイツ (フランクフルト)、米国 (シリコンバレー)、米国 (バージニア)

ステップ 1:ベクターバケットの作成

ベクターバケットを作成して、すべてのベクトルデータおよびインデックスを格納するコンテナとして使用します。

  1. ベクターバケット ページで、[ベクターバケットの作成] をクリックします。

  2. バケット情報を設定します。

    • ベクターバケット名: 同一アカウントおよび同一リージョン内でグローバルに一意となる名前を指定します。名前の長さは 3~32 文字で、小文字の英字、数字、およびハイフン (-) のみを使用でき、先頭および末尾にハイフンを含めることはできません。

    • リージョン: バケットを作成するリージョンを選択します(例:中国 (深セン))。

  3. [OK] をクリックします。

ステップ 2:ベクターインデックスの作成

バケットを作成した後、その中にベクターインデックスを作成します。インデックスは、ベクトルのディメンションや検索方式など、ベクトルの構造を定義し、ベクトルデータの保存およびクエリ実行の基盤を提供します。

  1. ベクターバケット ページで、作成済みのベクターバケット名をクリックします。

  2. [ベクターインデックス] ページで、[インデックステーブルの作成] をクリックします。

  3. インデックスのパラメーターを設定します。

    • インデックステーブル名: バケット内で一意となる名前を指定します。名前の長さは 1~63 文字で、英字および数字のみを使用でき、先頭は英字である必要があります。

    • ベクトルデータ型: デフォルト値は float32(32 ビット浮動小数点)です。

    • ベクトルディメンション: ベクトルのディメンション数(例: 128)を設定します。値は 1~4,096 の整数である必要があります。このインデックスにアップロードするすべてのベクトルは、同じディメンション数である必要があります。

    • 距離メトリック関数: ご使用のユースケースに応じて、適切な距離メトリックを選択します。

      • ユークリッド距離: 空間内の 2 点間の直線距離です。数値的な差異を測定する場合に適しています。

      • コサイン距離: 2 つのベクトルの方向の違いを測定します。テキストおよび画像の高次元意味的類似度計算に適しています。

  4. [OK] をクリックします。

ステップ 3:ベクトルデータのアップロード

インデックスの準備が完了したら、指定されたベクターインデックスにベクトルデータをアップロードして、取得可能な状態にします。

  1. インデックス一覧から、先ほど作成したインデックスを見つけ、右側の [データの表示] をクリックします。

  2. インデックスページで、[ベクトルデータの挿入] をクリックします。

  3. ベクトルデータを設定します。一度に複数のベクトルを追加できます。

    • プライマリキー値: ベクトルを一意に識別する ID を設定します。

    • ベクトルデータ: コンマ区切りの数値配列としてベクトルを入力します。ベクトルのディメンション数(値の個数)は、ステップ 2 で設定した ベクトルディメンション と一致している必要があります。

    • メタデータ: カテゴリ、タイトル、タイムスタンプなどのメタデータを追加できます。これらの情報は、クエリのフィルタリングに使用可能です。

  4. [OK] をクリックします。

ステップ 4:ベクトル取得の実行

データの準備が完了したら、ベクトル取得を実行します。これは、本ワークフローのコアステップです。通常、アプリケーション内で SDK を使用してベクトル取得を実行し、対象データを迅速に特定します。

以下の Python SDK のサンプルコードでは、クエリベクトルと最も類似した上位 10 件のデータを取得する方法を示しています。ただし、type フィールドが「comedy」または「documentary」でないデータのみを対象とします。

import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.vectors as oss_vectors

parser = argparse.ArgumentParser(description="vector query vectors sample")
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
parser.add_argument('--index_name', help='The name of the vector index.', required=True)
parser.add_argument('--account_id', help='The account id.', required=True)

def main():
    args = parser.parse_args()

    # Load credentials from environment variables
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Use the SDK's default configuration
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region
    cfg.account_id = args.account_id
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    vector_client = oss_vectors.Client(cfg)

    # Filter: exclude comedy and documentary vectors
    query_filter = {
        "$and": [{
            "type": {
                "$nin": ["comedy", "documentary"]
            }
        }]
    }

    # Query vector: 128-dimensional float32 vector
    query_vector = {"float32": [0.1] * 128}

    result = vector_client.query_vectors(oss_vectors.models.QueryVectorsRequest(
        bucket=args.bucket,
        index_name=args.index_name,
        filter=query_filter,
        query_vector=query_vector,
        return_distance=True,
        return_metadata=True,
        top_k=10,
    ))

    print(f'status code: {result.status_code},'
          f' request id: {result.request_id},'
          )

    if result.vectors:
        for vector in result.vectors:
            print(f'vector: {vector}')


if __name__ == "__main__":
    main()

次のステップ

ベクターバケットの全ワークフローは、コンソール、OSS SDK、ossutil、または直接の API 呼び出しを用いて管理できます。本ガイドでは基本的なワークフローを紹介しました。完全な構成および高度な利用方法については、以下のトピックをご参照ください。