简介
本文档提供关于对象存储(COS)向量存储桶服务中创建向量桶(CreateVectorBucket)API 的 Go SDK 使用说明和示例代码。
功能说明
CreateVectorBucket 接口用于在指定的地域内创建一个新的向量存储桶。向量存储桶名称必须符合 BucketName-APPID 的命名格式。向量桶创建后,可以在其中建立索引并插入向量数据,从而使用相似度检索功能。方法原型
func (s *VectorService) CreateVectorBucket(ctx context.Context, opt *CreateVectorBucketOptions) (*CreateVectorBucketResult, *Response, error)
请求参数说明
CreateVectorBucketOptions 结构体字段说明:参数 | 描述 | 类型 | 是否必填 |
VectorBucketName | 向量桶名称,格式为 <BucketName-APPID>,例如 examplebucket-1250000000。支持小写字母、数字和 -,长度限制为 3-63 个字符。 | string | 是 |
EncryptionConfiguration | 向量桶的加密配置结构体。如果不指定,则不加密。 | *VectorEncryptionConfig | 否 |
其中
VectorEncryptionConfig 包含:参数 | 描述 | 类型 | 是否必填 |
SseType | 加密类型,目前仅支持 AES256。 | string | 否(仅当 EncryptionConfiguration 存在时必填) |
返回结果说明
调用成功后,将返回
(*CreateVectorBucketResult, *Response, error) 三个值。CreateVectorBucketResult 结构体字段说明:参数 | 描述 | 类型 |
VectorBucketQcs | 创建成功的向量桶资源名称 (QCS),如 qcs::cosvector:ap-guangzhou:uid/1250000000:bucket/examplebucket-1250000000。 | string |
其他返回值说明:
返回值 | 描述 | 类型 |
resp | 响应头信息,包含 HTTP 响应的详细对象等。 | *cos.Response |
err | 错误信息。如果请求成功,返回 nil。 | error |
如果请求失败,将返回非
nil 的 error。向量检索相关的业务错误会封装为 *cos.VectorErrorResponse 结构,您可以通过 cos.IsVectorError() 辅助函数判断并获取详细错误信息。详细的错误处理方式、VectorErrorResponse 结构体说明及服务端错误码列表请参见 异常处理 文档。使用案例
package mainimport ("context""fmt""net/http""os"cos "github.com/tencentyun/cos-go-sdk-v5")func main() {// 生成 Vector 基础 URL,第二个参数控制是否使用 HTTPS,建议为 truevectorURL, _ := cos.NewVectorURL("ap-guangzhou", true)// 从环境变量中获取临时访问凭证secretID := os.Getenv("COS_VECTORS_TMP_SECRET_ID")secretKey := os.Getenv("COS_VECTORS_TMP_SECRET_KEY")sessionToken := os.Getenv("COS_VECTORS_SESSION_TOKEN")// 初始化 Client,设置 VectorURL 及鉴权client := cos.NewClient(&cos.BaseURL{VectorURL: vectorURL}, &http.Client{Transport: &cos.AuthorizationTransport{SecretID: secretID,SecretKey: secretKey,SessionToken: sessionToken,},})// 向量桶名称格式必须为:BucketName-APPIDbucketName := "examplebucket-1250000000"opt := &cos.CreateVectorBucketOptions{VectorBucketName: bucketName,}res, _, err := client.Vector.CreateVectorBucket(context.Background(), opt)if err != nil {if vecErr, ok := cos.IsVectorError(err); ok {fmt.Printf("向量服务错误,错误码: %s, 错误信息: %s, 请求ID: %s\\n",vecErr.Code, vecErr.Message, vecErr.RequestID)} else {fmt.Printf("请求失败: %v\\n", err)}return}// 打印创建后的向量桶资源名称 QCSfmt.Printf("向量桶创建成功,QCS: %s\\n", res.VectorBucketQcs)}