CreateCollection 用于创建一个新的数据集 Collection。创建成功后,可以写入数据。
说明
参数 | 子参数 | 类型 | 是否必选 | 默认值 | 参数说明 |
---|---|---|---|---|---|
collectionName | string | 是 | 指定创建的 Collection 名称。
| ||
description | string | 否 | "" | 自定义 Collection 的描述。
| |
fields 说明 Field 实例的列表,一个 Collection 里的 Field 实例数量上限是 200。 | FieldName | string | 是 | 指定自定义字段的名称。
| |
FieldType | string | 是 | 指定自定义字段类型,如 vikingDB.String,可选值详见 fieldType 可选值说明。 | ||
DefaultVal | 和 FieldType 一致 | 否 | 指定自定义字段默认值,默认值详见 FieldType 可选值说明。
| ||
Dim | int | FieldType 为vector 时必选 | 指定自定义字段向量维度。
| ||
IsPrimaryKey | bool | 是 | False | 指定自定义字段是否为主键,主键用于唯一标识一行数据。
| |
vectorize 注意 如果有vectorize参数,则fields里不应填pipeline。 | dense | map | 否(填写 | -- | 稠密向量的向量化参数。子参数见下**"向量化参数"**表。 |
sparse | map | 否 | -- | 稀疏向量的向量化参数。如果无需稀疏向量,则不必填写。子参数见下**"向量化参数"**表。 |
说明
推荐通过**vectorize
参数**对文本进行向量化,已使用 pipeline 的用户,pipeline_name
子参数依然提供服务。
参数 | 子参数 | 类型 | 是否必选 | 默认值 | 参数说明 |
---|---|---|---|---|---|
fields 注意 如果使用了 | PipelineName | string | field_type 为 text 时可选 | -- | 文本。纯文本预处理能力 pipeline 是指向量数据库将文本切片、文本向量化、入库、存储自动化的预处理流程。支持以string形式写入原始数据。
模型参数参考**“模型列表”** |
字段类型 | 可用索引类型 | defaultVal默认值 | 数据写入时 | defaultVal | 可为主键 | 说明 |
---|---|---|---|---|---|---|
int64 | 枚举 | 0 | int64 范围 | int64 范围 | 是 | 整数 |
float32 | 范围 | 0.0 | float32 范围 | float32 范围 | 否 | 浮点数 |
string | 枚举 | "default" | 长度<=128 | 是 | 字符串 | |
bool | 枚举 | false | true/false | true/false | 否 | 布尔类型 |
list<string> | 枚举 | ["default"] | List 长度<=32 | List 长度<=32 | 否 | 字符串数组 |
list<int64> | 枚举 | [0] | List 长度<=32 | List 长度<=32 | 否 | 整数数组 |
vector | 向量 | 维度 4-2048 | 否 | 稠密向量。
| ||
sparse_vector | 稀疏向量 | 非零元下标无限制 | 否 | 稀疏向量。
| ||
text | 否 | 文本,可用于向量化。 | ||||
image | -- | -- | -- | -- | 否 |
|
注意
参数名 | 类型 | 必选 | 默认值 | 备注 |
---|---|---|---|---|
text_field | string | 否 | / | 待向量化的文本字段 |
image_field | string | 否 | / | 待向量化的图片字段 |
model_name | string | 是 | / | 模型名称。对应下面**“模型列表”**的模型名称。 |
model_version | string | 否 | / | 模型版本。如果某模型有多个版本,可指定具体版本。如果使用默认版本模型或该模型没有多版本,则无需填写该字段。 |
dim | int | 否 | / | 如果需要生成稠密向量,指定向量维度。默认使用模型默认的维度。 |
注意
text_field和image_field的设置,与model的选择需要对应。例如,model_name选择了纯文本embedding模型,则不允许有image_field。
模型名称 | 支持向量化类型 | 默认稠密向量维度 | 可选稠密向量维度 | 支持稀疏向量 | need instruction | 默认版本 | 可选版本 |
---|---|---|---|---|---|---|---|
bge-large-zh | text | 1024 | 1024 | 否 | 否 | ||
bge-m3 | text | 1024 | 1024 | 是 | 否 | ||
bge-visualized-m3 | text_image、image | 1024 | 1024 | 否 | 否 | ||
doubao-embedding | text | 2048 | 512, 1024, 2048 | 否 | 是 | 240515 | 240515、240715 |
doubao-embedding-large | text | 2048 | 512, 1024, 2048, 4096 | 否 | 是 | 240915 | 240915 |
doubao-embedding-vision | text_image、image 说明 在纯图场景下也会有额外的少量文本token消耗(20tokens左右) | 3072 | 3072 | 否 | 是 | 241215 | 241215 |
import ( "fmt" "testing" "github.com/volcengine/volc-sdk-golang/service/vikingdb" )
创建稠密向量+稀疏向量数据集
fields := []vikingdb.Field{ {FieldName: "f_id", FieldType: vikingdb.String, IsPrimaryKey: true}, // 主键字段 {FieldName: "f_int64", FieldType: vikingdb.Int64}, // 整型字段 {FieldName: "f_vector", FieldType: vikingdb.Vector, Dim: 4}, // 向量字段,维度为 4 {FieldName: "f_sparse_vector", FieldType: vikingdb.Sparse_Vector}, // 稀疏向量字段 } // 创建集合,指定集合名称、字段定义和其他参数 collection, err := service.CreateCollection("test_coll_for_sdk_2", fields, "") if err != nil { // 错误处理 panic(err) } // 输出集合名称 fmt.Println(collection.CollectionName)
创建多模态数据集
fields := []vikingdb.Field{ {FieldName: "f_id", FieldType: vikingdb.String, IsPrimaryKey: true}, // 主键字段 {FieldName: "f_int64", FieldType: vikingdb.Int64}, // 整型字段 {FieldName: "f_text1", FieldType: vikingdb.Text}, // 文本字段 {FieldName: "f_text2", FieldType: vikingdb.Text}, // 文本字段 {FieldName: "f_image1", FieldType: vikingdb.Image}, // 图片字段 {FieldName: "f_image2", FieldType: vikingdb.Image}, // 图片字段 } // 定义向量化配置 vectorize := []*vikingdb.VectorizeTuple{ vikingdb.NewVectorizeTuple(). // 设置密集向量和稀疏向量配置 SetDense(vikingdb.NewVectorizeModelConf(). SetTextField("f_text1"). SetImageField("f_image1"). SetModelName("doubao-embedding-vision"). SetModelVersion("241215"). SetDim(3072)). SetSparse(vikingdb.NewVectorizeModelConf(). SetTextField("f_text2"). SetModelName("bge-m3")), } // 创建集合,指定集合名称、字段定义、其他参数和向量化配置 collection, err := service.CreateCollection("test_coll_for_sdk_with_vectorize", fields, "", vectorize) if err != nil { // 错误处理 panic(err) } // 输出集合名称 fmt.Println(collection.CollectionName)
Go 调用执行上面的任务,返回 Collection 结构体地址 (*Collection)。Collection 结构体包含的属性如下表所示。
属性 | 类型 | 说明 |
---|---|---|
CollectionName | string | 显示创建的 Collection 名称。 |
Description | string | 显示创建的 Collection 的描述。 |
Fields | []Field | 显示创建的字段列表。 |
Indexes | []interface{} | 显示创建的索引列表。 |
Stat | map | 统计/状态信息。
|
CreateTime | string | 数据集创建时间。 |
UpdateTime | string | 数据集更新时间。 |
UpdatePerson | string | 数据集更新人。 |