Tous les produits
Search
Centre de documentation

Object Storage Service:Récupérer des vecteurs (SDK Go V2)

Dernière mise à jour :Sep 22, 2026

Le SDK Go V2 permet d'appeler l'opération QueryVectors pour effectuer une recherche par similarité dans un index vectoriel.

Autorisations

Par défaut, un compte Alibaba Cloud dispose de toutes les autorisations, tandis qu'un utilisateur RAM ou un rôle RAM n'en possède aucune. Le propriétaire du compte Alibaba Cloud ou un administrateur doit accorder les autorisations via une politique RAM ou une politique de bucket.

API

Action

Description

QueryVectors

oss:QueryVectors

Interroge les données vectorielles.

Définition de la méthode

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

Paramètres de requête

Paramètre

Type

Description

ctx

context.Context

Contexte de la requête.

request

*QueryVectorsRequest

Définit les paramètres de la requête, notamment le vecteur de requête, la condition de filtre et le nombre de résultats à renvoyer. Pour plus d'informations, consultez QueryVectorsRequest.

optFns

...func(*Options)

(Facultatif) Paramètres de configuration au niveau de l'interface.

Pour plus d'informations, consultez Options.

Valeurs de retour

Paramètre

Type

Description

result

*QueryVectorsResult

Valeur de retour. Ce paramètre est valide uniquement si err est nul. Pour plus d'informations, consultez QueryVectorsResult.

err

error

Message d'erreur. Si l'opération réussit, ce paramètre est nul.

Exemple de code

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", "", "The region where the vector bucket is located.")
	flag.StringVar(&bucketName, "bucket", "", "The name of the vector bucket.")
	flag.StringVar(&accountId, "account-id", "", "The ID of the Alibaba Cloud account.")
	flag.StringVar(&indexName, "index", "", "The name of the vector 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).
		// To access over the public internet, set this to false or remove this line.
		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)
}

Références

Pour consulter l'exemple de code complet relatif à l'interrogation des vecteurs, voir query_vectors.go.