Tous les produits
Search
Centre de documentation

Object Storage Service:Créer un index vectoriel (SDK Go V2)

Dernière mise à jour :Sep 22, 2026

Utilisez le SDK Go V2 pour appeler l'opération PutVectorIndex et créer un index vectoriel dans un compartiment vectoriel.

Autorisations

Par défaut, les comptes Alibaba Cloud disposent de toutes les autorisations, tandis que les utilisateurs et les rôles RAM n'en ont aucune. Le compte Alibaba Cloud ou un administrateur doit accorder les autorisations via une politique RAM ou une politique de compartiment.

API

Action

Description

PutVectorIndex

oss:PutVectorIndex

Crée un index vectoriel.

Définition de la méthode

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

Paramètres de requête

Paramètre

Type

Description

ctx

context.Context

Contexte de la requête.

request

*PutVectorIndexRequest

Paramètres de la requête. Pour plus d'informations, consultez PutVectorIndexRequest.

optFns

...func(*Options)

(Facultatif) Paramètres de configuration au niveau de l'opération.

Pour plus d'informations, consultez Options.

Valeurs de retour

Paramètre

Type

Description

result

*PutVectorIndexResult

Valeur de retour de l'opération. Ce paramètre est valide uniquement si err est nul. Pour plus d'informations, consultez PutVectorIndexResult.

err

error

État de la requête. Si la requête échoue, err n'est pas 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 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)
}

Références

Pour consulter l'exemple de code complet de création d'un index vectoriel, voir put_vector_index.go.