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

Object Storage Service:ベクターの取得 (Go SDK V2)

最終更新日:Nov 09, 2025

Go ソフトウェア開発キット (SDK) V2 を使用して QueryVectors 操作を呼び出し、ベクターインデックスで類似検索を実行できます。

権限

Alibaba Cloud アカウントは、デフォルトですべての権限を持っています。Resource Access Management (RAM) ユーザーまたは RAM ロールは、デフォルトでは権限を持っていません。Alibaba Cloud アカウントまたは管理者は、RAM ポリシーまたはバケットポリシーを使用して、RAM ユーザーまたは RAM ロールに権限を付与する必要があります。

API

アクション

説明

QueryVectors

oss:QueryVectors

ベクトルデータをクエリします。

メソッド定義

func (c *VectorsClient) QueryVectors(ctx context.Context, request *QueryVectorsRequest, optFns ...func(*oss.Options)) (*QueryVectorsResult, error) 

リクエストパラメーター

パラメーター

説明

ctx

context.Context

リクエストコンテキスト。

request

*QueryVectorsRequest

クエリベクター、フィルター条件、返す結果の数などのリクエストパラメーターを設定します。 詳細については、「QueryVectorsRequest」をご参照ください。

optFns

...func(*Options)

(オプション) インターフェイスレベルの構成パラメーター。

詳細については、「Options」をご参照ください。

戻り値

パラメーター

説明

result

*QueryVectorsResult

戻り値。 このパラメーターは、`err` が nil の場合にのみ有効です。 詳細については、「QueryVectorsResult」をご参照ください。

err

error

エラーメッセージ。 操作が成功した場合、このパラメーターは nil です。

サンプルコード

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/vectors"
)

var (
	region     string
	bucketName string
	accountId  string
	indexName  string
)

func init() {
	flag.StringVar(&region, "region", "", "ベクターバケットが配置されているリージョン。")
	flag.StringVar(&bucketName, "bucket", "", "ベクターバケットの名前。")
	flag.StringVar(&accountId, "account-id", "", "ベクターアカウントの ID。")
	flag.StringVar(&indexName, "index", "", "ベクターインデックスの名前。")
}

func main() {
	flag.Parse()
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーター、バケット名が必要です")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーター、リージョンが必要です")
	}

	if len(accountId) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーター、accountId が必要です")
	}

	if len(indexName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメーター、インデックスが必要です")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region).WithAccountId(accountId)

	client := vectors.NewVectorsClient(cfg)

	request := &vectors.QueryVectorsRequest{
		Bucket:    oss.Ptr(bucketName),
		IndexName: oss.Ptr(indexName),
		Filter: map[string]any{
			"$and": []map[string]any{
				{
					"type": map[string]any{
						"$in": []string{"comedy", "documentary"},
					},
				},
			},
		},
		QueryVector: map[string]any{
			"float32": []float32{float32(32)},
		},
		ReturnMetadata: oss.Ptr(true),
		ReturnDistance: oss.Ptr(true),
		TopK:           oss.Ptr(10),
	}
	result, err := client.QueryVectors(context.TODO(), request)
	if err != nil {
		log.Fatalf("ベクターのクエリに失敗しました %v", err)
	}
	log.Printf("ベクターのクエリ結果:%#v\n", result)
}

参考

ベクターをクエリするための完全なサンプルコードについては、「query_vectors.go」をご参照ください。