本文介绍如何通过Java SDK创建一个新的Collection。
前提条件
已创建Cluster:创建Cluster。
已获得API-KEY:API-KEY管理。
已安装最新版SDK:安装DashVector SDK。
接口定义
// class DashVectorClient
// 通过名称和向量维度进行创建Collection
public Response<Void> create(String name, int dimension);
// 通过CreateCollectionRequest创建Collection
public Response<Void> create(CreateCollectionRequest request);
使用示例
需要使用您的api-key替换示例中的YOUR_API_KEY、您的Cluster Endpoint替换示例中的YOUR_CLUSTER_ENDPOINT,代码才能正常运行。
创建单向量集合
import com.aliyun.dashvector.DashVectorClient;
import com.aliyun.dashvector.common.DashVectorException;
import com.aliyun.dashvector.models.requests.CreateCollectionRequest;
import com.aliyun.dashvector.models.responses.Response;
import com.aliyun.dashvector.proto.CollectionInfo;
import com.aliyun.dashvector.proto.FieldType;
public class Main {
public static void main(String[] args) throws DashVectorException {
DashVectorClient client = new DashVectorClient("YOUR_API_KEY", "YOUR_CLUSTER_ENDPOINT");
// 通过CreateCollectionRequest创建Collection
// 创建一个名称为quickstart、向量维度为4、
// 向量数据类型为float(默认)、
// 距离度量方式为dotproduct(内积)的Collection
// 并预先定义三个Field,名称为name、weight、age,数据类型分别为str、float、int
CreateCollectionRequest request = CreateCollectionRequest.builder()
.name("quickstart")
.dimension(4)
.metric(CollectionInfo.Metric.dotproduct)
.dataType(CollectionInfo.DataType.FLOAT)
.fieldSchema("name", FieldType.STRING)
.fieldSchema("weight", FieldType.FLOAT)
.fieldSchema("age", FieldType.INT)
.build();
Response<Void> response = client.create(request);
System.out.println(response);
// example output:
// {"code":0,"message":"","requestId":"883716a3-32f8-4220-ae54-245fa9b87bf0"}
}
}
创建多向量集合
public void createCollection() {
CreateCollectionRequest request = CreateCollectionRequest.builder()
.name(collectionName)
.filedSchema("document_id", FieldType.STRING)
.filedSchema("chunk_id", FieldType.INT)
.vector("title", VectorParam.builder().dimension(4).quantizeType("DT_VECTOR_INT8").build())
.vector("content", VectorParam.builder().dimension(6).metric(CollectionInfo.Metric.euclidean).build())
.build();
Response<Void> createResponse = client.create(request);
System.out.println(createResponse);
assert createResponse.isSuccess();
}
入参描述
可通过CreateCollectionRequestBuilder
构造 CreateCollectionRequest
对象,其可用方法如下:
方法 | 必填 | 默认值 | 描述 |
name(String name) | 是 | - | 待创建的集合名称 |
dimension(int dimension) | 是 | - | 向量维度 |
dataType(CollectionInfo.DataType dataType) | 否 | DataType.FLOAT | 向量数据类型,支持
|
fieldsSchema(Map<String, FieldType> fieldsSchem) | 否 | - | Fields定义,Field类型支持
|
fieldSchema(String key, FieldType value) | 否 | - | |
metric(CollectionInfo.Metric metric) | 否 | Metric.cosine | 距离度量支持
metric为 |
extraParams(Map<String, String> params) | 否 | - | 可选参数:
|
timeout(Integer timeout) | 否 | - |
|
vectorParam(VectorParam) | 否 | - | 设置向量字段的高级参数,如开启量化,详情参考VectorParam |
vectors(Map<String, VectorParam>) | 否 | - | 定义多向量集合,详情参考多向量检索 |
build() | - | - | 构造 |
创建Collection时预先定义Fields的收益见Schema Free
量化策略详情可参考向量动态量化
出参描述
返回结果为Response<Void>
对象,Response<Void>
对象中可获取本次操作结果信息,如下表所示。
方法 | 类型 | 描述 | 示例 |
getCode() | int | 返回值,参考返回状态码说明 | 0 |
getMessage() | String | 返回消息 | success |
getRequestId() | String | 请求唯一id | 19215409-ea66-4db9-8764-26ce2eb5bb99 |
isSuccess() | Boolean | 判断请求是否成功 | true |