Todos los productos
Search
Centro de documentos

Object Storage Service:Crear un índice vectorial (Go SDK V2)

Última actualización: Sep 22, 2026

Use Go SDK V2 para llamar a la operación PutVectorIndex y crear un índice vectorial en un bucket de vectores.

Permisos

De forma predeterminada, las cuentas de Alibaba Cloud tienen todos los permisos. En cambio, los usuarios y roles de Resource Access Management (RAM) no tienen ninguno. La cuenta de Alibaba Cloud o un administrador debe otorgar los permisos mediante una RAM policy o un bucket policy.

API

Acción

Descripción

PutVectorIndex

oss:PutVectorIndex

Crea un índice vectorial.

Definición del método

func (c *VectorsClient) PutVectorIndex(ctx context.Context, request *PutVectorIndexRequest, optFns ...func(*oss.Options)) (*PutVectorIndexResult, error) 

Parámetros de solicitud

Parámetro

Tipo

Descripción

ctx

context.Context

El contexto de la solicitud.

request

*PutVectorIndexRequest

Los parámetros de la solicitud. Para obtener más información, consulte PutVectorIndexRequest.

optFns

...func(*Options)

(Opcional) Los parámetros de configuración de la operación.

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

Valores de retorno

Parámetro

Tipo

Descripción

result

*PutVectorIndexResult

El valor de retorno de la operación. Este parámetro solo es válido cuando err es nil. Para obtener más información, consulte PutVectorIndexResult.

err

error

El estado de la solicitud. Si la solicitud falla, err no 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 in which 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, accountId 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 the service over the public internet, set this parameter to false or remove this line.
		WithUseInternalEndpoint(true)

	client := vectors.NewVectorsClient(cfg)

	request := &vectors.PutVectorIndexRequest{
		Bucket:         oss.Ptr(bucketName),
		DataType:       oss.Ptr("float32"),
		Dimension:      oss.Ptr(128),
		DistanceMetric: oss.Ptr("cosine"),
		IndexName:      oss.Ptr(indexName),
		Metadata: map[string]any{
			"nonFilterableMetadataKeys": []string{"foo", "bar"},
		},
	}
	result, err := client.PutVectorIndex(context.TODO(), request)
	if err != nil {
		log.Fatalf("failed to put vector index: %v", err)
	}
	log.Printf("put vector index result: %#v\n", result)
}

Referencias

Para ver el código de ejemplo completo sobre cómo crear un índice vectorial, consulte put_vector_index.go.