接口用于创建向量数据库的数据集(Collection),单账号下最多创建 200 个数据集。
__AUTO_ID__。Go SDK 通过 vikingdb.New(sess) 创建的客户端实例调用 CreateVikingdbCollection(input) 方法发起集合创建请求,input 参数类型为 vikingdb.CreateVikingdbCollectionInput,包含集合名称、描述、项目名称和字段定义等配置。
下表仅列出该接口特有的请求参数和部分公共参数。更多信息请见公共参数。
参数 | 类型 | 是否必选 | 描述 |
|---|---|---|---|
ProjectName | string | 否 | 项目的名称。对应火山引擎“项目”(project)的概念。不填则默认当做default处理。 |
CollectionName | string | 是 | 数据集的名称,对应 API 字段
|
Description | string | 否 | 数据集的描述 |
Fields | []FieldForCreateVikingdbCollectionInput | 是 | 数据集中的字段。 |
Vectorize | VectorizeForCreateVikingdbCollectionInput | 否 | 数据集的向量化配置。 |
参数 | 类型 | 是否必选 | 描述 |
|---|---|---|---|
FieldName | string | 是 | 字段名。 |
FieldType | FieldTypeEnum(枚举类型) | 是 | 字段类型。 |
DefaultValue | interface{} | 否 | 字段默认值。省略时 int64、float32、string、bool、list<int64>、list<string>、date_time、geo_point、list<geo_point> 分别使用 |
Dim | Int | FieldType 为 vector 时必填 | 稠密向量维度,范围 |
IsPrimaryKey | bool | 否 | 是否为主键字段。可以为数据集指定1个主键字段(string或int64类型)。若没有指定,则使用自动生成的主键,字段名为"AUTO_ID"。 |
参数 | 类型 | 是否必选 | 描述 |
|---|---|---|---|
Dense | DenseForCreateVikingdbCollectionInput | 是 | 稠密向量化模型配置 |
Sparse | SparseForCreateVikingdbCollectionInput | 否 | 稀疏向量化模型配置 |
参数 | 类型 | 是否必选 | 描述 |
|---|---|---|---|
ModelName | ModelNameEnum(枚举类型) | 是 | 模型名称。 |
ModelVersion | string | 否 | 模型版本。若为doubao系模型,则必选模型版本。若为bge系模型,默认为default。 |
Dim | int | 否 | 稠密向量维度。显式值必须属于所选模型在 embedding 模型列表中声明的可选维度;省略时使用模型默认维度。 |
TextField | string | 否 | 文本向量化字段名称。 |
ImageField | string | 否 | 图片向量化字段名称。 |
VideoField | string | 否 | 视频向量化字段名称。 |
字段类型 | 格式 | 可为主键 | 说明 |
|---|---|---|---|
int64 | 整型数值 | 是 | 整数
|
float32 | 浮点数值 | 否 | 浮点数 |
string | 字符串 | 是 | 字符串
|
bool | true/false | 否 | 布尔类型 |
[]string | 字符串数组 | 否 | 字符串数组
|
[]int64 | 整型数组 | 否 | 整数数组
|
vector |
| 否 | 稠密向量
|
sparse_vector | 输入格式 <token_id, token_weight> 的字典列表,来表征稀疏向量的非零位下标及其对应的值,其中 token_id 是 string 类型,token_weight 是 float 类型 | 否 | 稀疏向量 |
text | string | 否 | 若为向量化字段,则值不能为空。(若否,可以为空)
|
image | string | 否 | 若为向量化字段,则值不能为空。(若否,可以为空)
|
video | map[string]interface{} | 否 | 若为向量化字段,则值不能为空。(若否,可以为空)
|
date_time | string | 否 | 分钟级别: |
geo_point | string | 否 | 地理坐标 |
模型名称 | 模型版本 | 支持向量化类型 | 默认稠密向量维度 | 可选稠密向量维度 | 文本截断长度 | 支持稀疏向量 | 可支持instruction |
|---|---|---|---|---|---|---|---|
bge-large-zh | (default) | text | 1024 | 1024 | 512 | 否 | 是 |
bge-m3 | (default) | text | 1024 | 1024 | 8192 | 是 | 否 |
bge-visualized-m3 | (default) | text、image及其组合 | 1024 | 1024 | 8192 | 否 | 否 |
doubao-embedding-vision | 250615 | 兼容241215的用法*。*另外,支持full_modal_seq(文/图/视频序列) | 2048 | 2048, 1024 | 128k | 否 | 是 |
下表仅列出本接口特有的返回参数。更多信息请参见返回结构。
参数 | 类型 | 描述 |
|---|---|---|
Message | string | 有关请求状态的消息。 |
ResourceId | string | 新数据集的 ID。 |
运行示例前,请完成以下准备:
- 在 Go 项目中安装并引入对应版本的 VikingDB SDK;将完整代码保存为
main.go后执行go run main.go。- AK/SK 在火山引擎控制台“密钥管理”中创建;Host 和 Region 取自地域和访问域名。请按代码的参数或环境变量读取方式完成配置。
- Collection、Index 名称从 VikingDB 控制台对应资源详情获取;Task ID 使用创建或查询任务接口返回的 ID。请将
<YOUR_...>占位符替换为真实值。- 若示例包含 TOS 路径,请从 TOS 控制台确认桶名和对象路径,并替换为真实的
<YOUR_BUCKET_NAME>/<YOUR_TOS_PATH>。
package main import ( "fmt" "os" "github.com/volcengine/volcengine-go-sdk/service/vikingdb" "github.com/volcengine/volcengine-go-sdk/volcengine" "github.com/volcengine/volcengine-go-sdk/volcengine/credentials" "github.com/volcengine/volcengine-go-sdk/volcengine/session" ) func main() { var ( accessKey = os.Getenv("VIKINGDB_AK") secretKey = os.Getenv("VIKINGDB_SK") region = "cn-beijing" ) config := volcengine.NewConfig(). WithRegion(region). WithCredentials(credentials.NewStaticCredentials(accessKey, secretKey, "")) sess, err := session.NewSession(config) if err != nil { panic(err) } svc := vikingdb.New(sess) input := vikingdb.CreateVikingdbCollectionInput{ CollectionName: volcengine.String("<YOUR_COLLECTION_NAME>"), Description: volcengine.String("Your Collection Description"), ProjectName: volcengine.String("default"), Fields: []*vikingdb.FieldForCreateVikingdbCollectionInput{ { FieldName: volcengine.String("item_id"), FieldType: volcengine.String("int64"), IsPrimaryKey: volcengine.Bool(true), }, { FieldName: volcengine.String("title"), FieldType: volcengine.String("string"), }, { FieldName: volcengine.String("content"), FieldType: volcengine.String("text"), }, { FieldName: volcengine.String("f_int64"), FieldType: volcengine.String("int64"), DefaultValue: 123456, }, }, Vectorize: &vikingdb.VectorizeForCreateVikingdbCollectionInput{ Dense: &vikingdb.DenseForCreateVikingdbCollectionInput{ ModelName: volcengine.String("bge-m3"), TextField: volcengine.String("content"), }, Sparse: &vikingdb.SparseForCreateVikingdbCollectionInput{ ModelName: volcengine.String("bge-m3"), TextField: volcengine.String("content"), }, }, } resp, err := svc.CreateVikingdbCollection(&input) if err != nil { panic(err) } fmt.Println(resp.Message) fmt.Println(resp.ResourceId) }
package main import ( "fmt" "os" "github.com/volcengine/volcengine-go-sdk/service/vikingdb" "github.com/volcengine/volcengine-go-sdk/volcengine" "github.com/volcengine/volcengine-go-sdk/volcengine/credentials" "github.com/volcengine/volcengine-go-sdk/volcengine/session" ) func main() { var ( accessKey = os.Getenv("VIKINGDB_AK") secretKey = os.Getenv("VIKINGDB_SK") region = "cn-beijing" ) config := volcengine.NewConfig(). WithRegion(region). WithCredentials(credentials.NewStaticCredentials(accessKey, secretKey, "")) sess, err := session.NewSession(config) if err != nil { panic(err) } svc := vikingdb.New(sess) input := vikingdb.CreateVikingdbCollectionInput{ CollectionName: volcengine.String("<YOUR_COLLECTION_NAME>"), Description: volcengine.String("Your Collection Description"), ProjectName: volcengine.String("default"), Fields: []*vikingdb.FieldForCreateVikingdbCollectionInput{ { FieldName: volcengine.String("item_id"), FieldType: volcengine.String("int64"), IsPrimaryKey: volcengine.Bool(true), }, { FieldName: volcengine.String("title"), FieldType: volcengine.String("string"), }, { FieldName: volcengine.String("dense_vector"), FieldType: volcengine.String("vector"), Dim: volcengine.Int32(768), }, { FieldName: volcengine.String("sparse_vector"), FieldType: volcengine.String("sparse_vector"), }, { FieldName: volcengine.String("f_int64"), FieldType: volcengine.String("int64"), DefaultValue: 123456, }, }, } resp, err := svc.CreateVikingdbCollection(&input) if err != nil { panic(err) } fmt.Println(resp.Message) fmt.Println(resp.ResourceId) }