Todos los productos
Search
Centro de documentos

Object Storage Service:Consulta de vectores (SDK V2 para Go)

Última actualización: Sep 22, 2026

Con el kit de desarrollo de software (SDK) V2 para Go, puede llamar a la operación QueryVectors y ejecutar una búsqueda por similitud en un índice de vectores.

Permisos

De forma predeterminada, una cuenta de Alibaba Cloud tiene todos los permisos, mientras que un usuario o rol de RAM no tiene Ninguna. El propietario de la cuenta de Alibaba Cloud o un administrador debe otorgar permisos mediante una RAM policy o un bucket policy.

API

Acción

Descripción

QueryVectors

oss:QueryVectors

Consulta datos de vectores.

Definición del método

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

Parámetros de solicitud

Parámetro

Tipo

Descripción

ctx

context.Context

Contexto de la solicitud.

request

*QueryVectorsRequest

Establezca los parámetros de la solicitud, como el vector de consulta, la condición de filtro y la cantidad de resultados que se devolverán. Para obtener más información, consulte QueryVectorsRequest.

optFns

...func(*Options)

(Opcional) Parámetros de configuración de la interfaz.

Para obtener más información, consulte Options.

Valores de retorno

Parámetro

Tipo

Descripción

result

*QueryVectorsResult

Valor de retorno. Este parámetro solo es válido cuando err es nil. Para obtener más información, consulte QueryVectorsResult.

err

error

Mensaje de error. Si la operación se ejecuta correctamente, este parámetro es nil.

Código de ejemplo

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)
}

Referencias

Para ver el código de ejemplo completo sobre la consulta de vectores, consulte query_vectors.go.