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

Object Storage Service:ベクトルの取得 (Go SDK V2)

最終更新日:Jun 04, 2026

Go SDK V2 を使用して QueryVectors API を呼び出し、ベクトルインデックスで類似検索を実行できます。

権限

Alibaba Cloud アカウントには、デフォルトですべての権限があります。Alibaba Cloud アカウント配下の RAM ユーザーまたは RAM ロールには、デフォルトで権限がありません。Alibaba Cloud アカウントまたは管理者は、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", "", "Alibaba Cloud アカウントの ID。")
	flag.StringVar(&indexName, "index", "", "ベクトルインデックス名。")
}

func main() {
	flag.Parse()
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	if len(accountId) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, account-id required")
	}

	if len(indexName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, index required")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region).WithAccountId(accountId).
		// パブリックネットワーク経由でアクセスするには、この値を false に設定するか、この行を削除します。
		WithUseInternalEndpoint(true)

	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("failed to query vectors %v", err)
	}
	log.Printf("query vectors result:%#v\n", result)
}

関連ドキュメント

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