新建Collection

本文介绍如何通过Java SDK创建一个新的Collection。

前提条件

接口定义

// 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

向量数据类型,支持

  • DataType.INT

  • DataType.FLOAT

fieldsSchema(Map<String, FieldType> fieldsSchem)

-

Fields定义,Field类型支持

  • FieldType.BOOL

  • FieldType.STRING

  • FieldType.INT

  • FieldType.FLOAT

fieldSchema(String key, FieldType value)

-

metric(CollectionInfo.Metric metric)

Metric.cosine

距离度量支持

  • Metric.cosine

  • Metric.euclidean

  • Metric.dotproduct

metric为cosine时,datatype必须为FLOAT

extraParams(Map<String, String> params)

-

可选参数:

timeout(Integer timeout)

-

  • timeout == null:接口开启同步,待Collection 创建成功后返回

  • timeout == -1:接口开启异步

  • timeout >= 0:接口开启同步并等待,若规定时间Collection未创建成功,则返回超时

vectorParam(VectorParam)

-

设置向量字段的高级参数,如开启量化,详情参考VectorParam

vectors(Map<String, VectorParam>)

-

定义多向量集合,详情参考多向量检索

build()

-

-

构造 CreateCollectionRequest对象

说明

出参描述

说明

返回结果为Response<Void>对象,Response<Void>对象中可获取本次操作结果信息,如下表所示。

方法

类型

描述

示例

getCode()

int

返回值,参考返回状态码说明

0

getMessage()

String

返回消息

success

getRequestId()

String

请求唯一id

19215409-ea66-4db9-8764-26ce2eb5bb99

isSuccess()

Boolean

判断请求是否成功

true