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 |
|
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(®ion, "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.