Method 与 URL
在已创建的 Base 类 Database 中创建 Collection:
POST https://{实例访问 IP 地址}:{实例网络端口}/collection/create。使用示例
注意:
如下示例 api_key 的值 A5VOgsMpGWJhUI0WmUbY******************** 与 10.0.X.X,需要分别替换为具体实例的 API Key 以及访问地址。
创建一个名为 book-vector 的集合,不配置 Embedding 模型相关参数,用于写入3维向量数据。
curl -i -X POST \\-H 'Content-Type: application/json' \\-H 'Authorization: Bearer account=root&api_key=A5VOgsMpGWJhUI0WmUbY********************' \\http://10.0.X.X:80/collection/create \\-d '{"database": "db-test","collection": "book-vector","replicaNum": 1,"shardNum": 1,"description": "this is the collection description","indexes": [{"fieldName": "id","fieldType": "string","indexType": "primaryKey"},{"fieldName": "vector","fieldType": "vector","indexType": "HNSW","dimension": 3,"metricType": "IP","params": {"M": 16,"efConstruction": 200}},{"fieldName": "bookName","fieldType": "string","indexType": "filter"},{"fieldName": "author","fieldType": "string","indexType": "filter"},{"fieldName": "expired_at","fieldType": "uint64","indexType": "filter"}],"filterIndexConfig": {"filterAll": true,"fieldsWithoutIndex": ["page"],"maxStrLen": 32},"ttlConfig": {"enable": true,"timeField": "expired_at"}}'
创建一个名为 book-emb 的集合 ,配置 Embedding 模型相关参数,用于写入原始文本。Embedding 模型自动将原始文本进行向量化。
curl -i -X POST \\-H 'Content-Type: application/json' \\-H 'Authorization: Bearer account=root&api_key=A5VOgsMpGWJhUI0WmUbY********************' \\http://10.0.X.X:80/collection/create \\-d '{"database": "db-test","collection": "book-emb","replicaNum": 1,"shardNum": 1,"description": "this is the collection description","embedding": {"field": "text","vectorField": "vector","model": "bge-base-zh"},"indexes": [{"fieldName": "id","fieldType": "string","indexType": "primaryKey"},{"fieldName": "vector","fieldType": "vector","indexType": "HNSW","metricType": "COSINE","params": {"M": 16,"efConstruction": 200}},{"fieldName": "sparse_vector","fieldType": "sparseVector","indexType": "inverted","metricType": "IP"},{"fieldName": "bookName","fieldType": "string","indexType": "filter"},{"fieldName": "author","fieldType": "string","indexType": "filter"}]}'
说明:
创建仅写入稀疏向量的集合,必须配置的字段为 id 与稀疏向量 sparse_vector。
curl -i -X POST \\-H 'Content-Type: application/json' \\-H 'Authorization: Bearer account=root&api_key=A5VOgsMpGWJhUI0WmUbY********************' \\http://10.0.X.X:80/collection/create \\-d '{"database": "db-test","collection": "book-vector","replicaNum": 1,"shardNum": 1,"description": "this is the collection description","indexes": [{"fieldName": "id","fieldType": "string","indexType": "primaryKey"},{"fieldName": "sparse_vector","fieldType": "sparseVector","indexType": "inverted","metricType": "IP"},{"fieldName": "bookName","fieldType": "string","indexType": "filter"}]}'
curl -i -X POST \\-H 'Content-Type: application/json' \\-H 'Authorization: Bearer account=root&api_key=A5VOgsMpGWJhUI0WmUbY********************' \\http://10.0.X.X:80/collection/create \\-d '{"database": "db-test","collection": "book-vector","replicaNum": 1,"shardNum": 1,"description": "this is the collection description","indexes": [{"fieldName": "id","fieldType": "string","indexType": "primaryKey"},{"fieldName": "vector","fieldType": "vector","indexType": "HNSW","dimension": 3,"metricType": "IP","params": {"M": 16,"efConstruction": 200}},{"fieldName": "sparse_vector","fieldType": "sparseVector","indexType": "inverted","metricType": "IP"},{"fieldName": "bookName","fieldType": "string","indexType": "filter"},{"fieldName": "author","fieldType": "string","indexType": "filter"},{"fieldName": "expired_at","fieldType": "uint64","indexType": "filter"}],"filterIndexConfig": {"filterAll": true,"fieldsWithoutIndex": ["page"],"maxStrLen": 32},"ttlConfig": {"enable": true,"timeField": "expired_at"}}'
curl -i -X POST \\-H 'Content-Type: application/json' \\-H 'Authorization: Bearer account=root&api_key=A5VOgsMpGWJhUI0WmUbY********************' \\http://10.0.X.X:80/collection/create \\-d '{"database": "db-test","collection": "bin-vector","replicaNum": 1,"shardNum": 2,"description": "this is the collection description","indexes": [{"fieldName": "id","fieldType": "string","indexType": "primaryKey"},{"fieldName": "vector","fieldType": "binary_vector","indexType": "BIN_FLAT","dimension": 16,"metricType": "Hamming"}]}'
创建一个数据库集合来存储文件内容,同时为文件的关键字段(如文件名、文本内容、图片信息等)建立索引以优化查询效率。关键字段,如下表所示。
说明:
字段名 | 字段含义 | 索引设置要求或建议 |
file_name | 标记文件名。 | 该字段必须定义为 string 类型的 filter 索引,以支持文件的过滤检索和处理同名文件覆盖的情况。 |
text | 存放文件知识点的原始文本内容。 | 由于文本内容可能较大,不建议为该字段创建索引,以避免占用过多内存空间。 在查询时,只需要通过 output_fields 参数指定该字段即可返回原始文本。 |
section_num | 标记段落(section)在原始文档中的顺序(如1, 2, 3, …)。 | 该字段可创建 filter 索引,以支持通过 section_num 的条件表达式,查询文件特定段落编号的内容。召回的内容也可以根据该值获取对应召回 chunk 所在段落的全部文本。 |
chunk_num | 标记文本片段(chunk)在文件中的顺序(如1, 2, 3, …)。 | 该字段可创建 filter 索引,以支持通过 chunk_num 的条件表达式,按语块顺序范围检索(如查询第5-10块的内容)文件。本文示例为该字段创建索引。 |
image_list | 存放 PDF 文件中图片的 Key 列表。 说明: 在原始检索出的文本块中,图片采用{key}占位符进行标记。系统会同步生成包含所有图片实际 URL 地址的索引列表,每个{key}对应唯一的图片链接。通过将文本块中的占位符替换为对应的<img>标签及真实 URL,即可完整还原原始文档的图文排版结构,最终生成符合网页标准的 HTML 文件。 | 不建议为该字段创建索引。如果需要创建索引,必须确保其为数组(array)类型,否则接口将报错,导致文件无法上传。 |
curl -i -X POST \\-H 'Content-Type: application/json' \\-H 'Authorization: Bearer account=root&api_key=A5VOgsMpGWJhUI0WmUbY********************' \\http://10.0.X.X:80/collection/create \\-d '{"database": "db-test","collection": "coll-ai-files","replicaNum": 0,"shardNum": 1,"description": "this is the collection description","indexes": [{"fieldName": "id","fieldType": "string","indexType": "primaryKey"},{"fieldName": "vector","fieldType": "vector","indexType": "HNSW","dimension": 768,"metricType": "IP","params": {"M": 16,"efConstruction": 200}},{"fieldName": "file_name","fieldType": "string","indexType": "filter"}]}'
请求参数
参数 | 参数含义 | 子参数 | 是否必选 | 参数配置 |
database | 指定 Collection 所在的 Database 名称。 | - | 是 | |
collection | 指定 Collection 的名称。 | - | 是 | Collection 命名要求如下: 只能使用英文字母,数字,下划线_、中划线-,并以英文字母开头。 长度要求:[1,128]。 |
replicaNum | 指定 Collection 的副本数。副本数是指每个主分片有多个相同的备份,用来容灾和负载均衡。
| - | 是 | 取值类型:uint64。 取值范围如下所示。搜索请求量越高的索引,建议设置越多的副本数,避免负载不均衡。 单可用区实例:0。 两可用区实例:[1,节点数-1]。 三可用区实例:[2,节点数-1]。 |
shardNum
| 指定 Collection 的分片数。分片是把大数据集切成多个子数据集。 | - | 是 | 取值类型:uint64。 取值范围:[1,100]。例如:5。 配置建议:在搜索时,全部分片是并发执行的,分片数量越多,平均耗时越低,但是过多的分片会带来额外开销而影响性能。 单分片数据量建议控制在300万以内,例如500万向量,可设置2个分片。 如果数据量小于300万,建议使用1分片。系统对1分片有特定优化,可显著提升性能。 |
embedding
| 配置 Embedding 参数 说明: 使用 Embedding 功能才需要配置该参数。 |
field | 否 | 指定文本字段名称。 取值类型为:string 字符型。当前仅支持文本到向量的 Embedding 能力。 写入(/document/upsert/)、更新(/document/update)或者检索(/document/search)数据时,Embedding 模型会自动将该字段的文本内容转换成向量数据。 |
| | vectorField | 否 | 指定向量字段。通过 Embedding 模型生成的向量会自动存储在该字段中,固定为 vector。 |
| | model | 否 | bge-large-zh-v1.5:适用中文,1024维,推荐使用。 bge-base-zh-v1.5:适用中文,768维。 bge-large-zh:适用中文,1024维。 bge-base-zh:适用中文,768维。 m3e-base:适用中文,768维。 e5-large-v2:适用英文,1024维。 text2vec-large-chinese:适用中文,1024维。 multilingual-e5-base:适用于多种语言类型,768维。 BAAI/bge-m3:适用于多种语言类型,1024维。 |
description | 指定 Collection 的描述信息 | - | 否 | 取值类型:string。 字符长度要求:[1,256]。 示例:This is the collection description。 |
indexes 说明: 创建 Collection 需根据不同 Index 类型指定索引字段。 | 主键索引 说明: | fieldName | 是 | 指定索引对象为文档 id 。 |
| | fieldType | | 指定索引对象的数据类型。该参数固定为 string。 |
| | indexType | | 指定索引对象的索引类型。该参数固定配置为 primaryKey,即默认以 id 为主键构建索引。 |
| | autoId | 否 | 自动生成 ID。指定 "autoId": "uuid",即可开启自动生成 ID 功能。 说明: 当启用 autoId 功能后,用户在写入或更新数据时,无需手动传入 id 字段。若用户在启用 autoId 的情况下仍传入了 id 字段,则系统将优先采用用户传入的 id 值作为数据的唯一标识。 在执行批量写入(batch upsert)时,如果部分数据包含 id 字段,而另一部分数据未包含 id 字段,则系统仅对未传入 id 的数据生成默认 id。 |
| 向量索引 说明: | fieldName | 是 | 指定索引对象为 vector。该参数固定配置为 vector。 |
| | fieldType | 是 | vector:单精度浮点数向量,采用8位指数位 + 23位尾数位 + 1位符号位(共32位),适用于需最高精度的计算任务或对误差敏感的向量检索。 float16_vector:半精度浮点数向量,采用5位指数位 + 10位尾数位 + 1位符号位 的格式,适用于尾数精度较高(小数点后保留更多位数)的场景,如 bge-large 等模型生成的嵌入向量。 bfloat16_vector:bfloat16 浮点数向量,采用8位指数位 + 7位尾数位 + 1位符号位的格式,适用于向量数值范围较大(更多bit位表达整数)的场景。 说明: 当前仅索引类型为 HNSW 时,字段类型支持float16_vector 与 bfloat16_vector。 binary_vector:每个维度仅用1个比特(bit) 表示0或1,无指数位、尾数位和符号位,直接存储二进制数据,适用于存储稀疏向量。 |
| | indexType | 是 | FLAT:数据量小(<10万),要求100%召回率的基准场景。 HNSW:通用首选,百万至亿级数据,平衡高性能与高召回。 BIN_FLAT:图像二值化特征等二进制数据的检索。 IVF_FLAT、IVF_PQ、IVF_SQ4, IVF_SQ8, IVF_SQ16:IVF 系列索引,亿级以上大规模数据,追求高存储和计算效率。 IVF_RABITQ:亿级超大规模高维向量,保证高召回率的同时实现高倍压缩,是 IVF_PQ/SQ 的升级选择。 注意: 如果选择 IVF 系列索引类型(含 IVF_RABITQ 索引),那么,请务必在 /document/upsert 插入数据时,将参数 buildIndex 设置为 false,在插入数据之后,通过 /Index/rebuild 重建索引。具体操作,请参见 应用 IVF 系列索引。 |
| | dimension | 否 | 指定向量维度。 取值类型:uint64。 取值范围:[1,4096]。 说明: 若 indexType 为 BIN_FLAT,向量维度大于等于8,且必须为8的倍数。 使用 Embedding 功能,则无需配置该字段。该参数将自动配置为 Embedding 模型对应的向量维度。 |
| | metricType | 是 | 指定向量之间距离度量的算法。取值如下: L2:全称是 Euclidean distance,指欧几里得距离,它计算向量之间的直线距离,所得的值越小,越与搜索值相似。L2在低维空间中表现良好,但是在高维空间中,由于维度灾难的影响,L2的效果会逐渐变差。 IP:全称为 Inner Product,是一种计算向量之间相似度的度量算法,它计算两个向量之间的点积(内积),所得值越大越与搜索值相似。 COSINE:余弦相似度(Cosine Similarity)算法,是一种常用的文本相似度计算方法。它通过计算两个向量在多维空间中的夹角余弦值来衡量它们的相似程度,所得值越大越与搜索值相似。 Hamming:汉明距离(Hamming Distance),计算两个二进制字符串对应位置上不同字符的数量,如果字符不同,两字符串的汉明距离就会加一。汉明距离越小,表示两个字符串之间的相似度越高。 |
| | params | 是 | 指定索引类型参数。 索引类型 indexType 为 HNSW ,需配置如下参数。 M:每个节点在检索构图中可以连接多少个邻居节点。 取值类型:uint64。 取值范围:[4,64]。一般可设置为16。 efConstruction:搜索时,指定寻找节点邻居遍历的范围。数值越大构图效果越好,构图时间越长。 取值类型:uint64。 取值范围:[8,512]。一般可设置为200。 索引类型 indexType 为 IVF_RABITQ,需要配置如下参数。 nlist:指索引中的聚类中心数量。取值类型:uint64。取值范围:[1,65536]。 bits:指定每个维度量化的 bit 数,正整数,取值范围 [1,9],默认值为 1。取值越小,压缩程度越高,性能越好,但召回率越低。 索引类型 indexType 为 IVF_FLAT、 IVF_PQ、 IVF_SQ4、IVF_SQ8、IVF_SQ16,需配置如下参数。 nlist :指索引中的聚类中心数量。 取值类型:uint64。取值范围:[1,65536]。 M: 指乘积量化中原始数据被拆分的子向量的数量。该参数仅 IVF_PQ 索引类型需配置。更多信息,请参见 索引与计算。 取值要求:原始数据的向量的维度 D(即向量中元素的个数)必须能够被 m 整除,m 必须是一个正整数。 取值范围:[1,向量维度]。 |
| Filter 索引 说明: 创建写入文件的 Collection,务必为存放文件名(例如:file_name)的字段创建 Filter 索引,否则,在获取 COS 授权签名时提示错误信息。 | fieldName | 是 | 配置可作为 Filter 索引的自定义扩展的标量字段名。 说明: Filter 索引(Filter Index)是建立在标量字段的索引。该标量字段名称、类型均由用户自定义,不限制标量字段数量。 标量字段被建立 Filter 索引之后,向量检索时,将依据 Filter 指定的标量字段的条件表达式进行过滤查询和范围查询以此来匹配相似向量。 |
| | fieldType | 是 | 指定自定义字段的数据类型。取值如下: string:字符型。 uint64:指无符号64位整数。 int64:指有符号的64位整数。 double:指双精度浮点数。 array:数组类型,数组元素为 string。 json:由键值对组成的数据对象。具体规则,请参见 json 类型。为 json 类型的字段创建 Filter 索引,如下所示。 注意:
|
| |
indexType
| 是 | 指定自定义扩展的字段是否需要设置 Filter 索引。若需要设置,请将该参数设置为 filter,那么在通过 /document/search 检索相似数据时,可对该字段设置 Filter 条件表达式进行 混合检索。注意: 建立 Filter 索引时,选取需要使用 Filter 表达式高效过滤数据的标量字段。不做过滤查询、检索的标量字段不必建立 Filter 索引。切勿将所有标量字段建立索引,导致内存资源的浪费。 |
| 稀疏向量索引 | fieldName | 否 | 可选择构建稀疏向量索引,字段名固定为 sparse_vector。 每个集合仅支持创建1个稀疏向量索引,无需指定稀疏向量维度。 |
| | fieldType | | 稀疏向量字段类型,固定为 sparseVector。 |
| | indexType | | 稀疏向量的索引类型,当前定义为 inverted |
| | metricType | | 稀疏向量相似性计算仅支持设置为 IP。 |
filterIndexConfig | 支持开启所有标量字段全索引模式,默认关闭 | filterAll | 否 | 控制全索引模式的开启和关闭。 true:开启。 false:关闭。默认值为 false。 |
| | fieldsWithoutIndex | | 当 filterAll 为 true 时,支持通过 fieldsWithoutIndex 参数指定不创建索引的字段。默认值:NULL。 |
| | maxStrLen | | 当 filterAll 为 true 时,支持通过 maxFieldLength 参数设定单条文档中创建索引标量字段的最大字节数。如果字段字节数超出此限制,则忽略该字段,不创建标量索引。 默认值:32。 取值范围:[1,65536]。 |
ttlConfig | 配置 TTL 属性 | enabled | 否 | 标识数据库是否开启 TTL 配置。 true:开启。 false:关闭。 说明: TTL(生存周期)功能规定了数据自创建或更新后将被自动删除的时间期限。向量数据库默认每小时轮询检查一次数据是否过期,超期即清理,且插入数据时允许存在最多1小时的过期时间误差。具体信息,请参见 TTL。 |
| | timeField | | 指定存储数据过期时间戳的字段名。插入数据时,以标准的 Unix 时间戳指定该字段的值。字段名要求如下: 数据类型:uint64。 索引类型:Filter 索引。 示例:expired_at,则在 upsert 时,需指定 expired_at 值。 |
响应消息
执行成功,输出如下信息。
{"code":0,"msg":"Operation success","affectedCount":1}
参数名 | 参数含义 |
affectedCount | 影响行数,即为创建集合数量。 |