向量检索服务 DashVector免费试用进行中,玩转大模型搜索,快来试试吧~
了解更多信息,请点击:https://www.aliyun.com/product/ai/dashvector
控制台方式
前提条件
- 已开通向量检索服务。如未开通,请先开通服务。
- 已创建Collection。
步骤
- 登录向量检索服务控制台。
- 在左侧导航栏单击Cluster列表,选中需要新增向量的Collection,单击Collection详情。
- 在左侧二级导航栏,单击向量新增。
- 填写相应内容后,单击确认,完成向量新增。
新增向量参数设置如下所示:
参数 |
对应API参数名称 |
说明 |
是否必选 |
向量 |
vector |
向量数据,例如[1.00,2.00,3.00,4.00]。 说明 新增向量的向量维度和数据类型必须与创建的Collection一致。 |
是 |
主键ID |
id |
|
是 |
属性 |
fileds |
json字段参数,例如 |
否 |
Partition |
partition |
partition名称,默认是default。 说明 新增向量时,可以选择不同的Partition,如只有默认的Partition,可以新建Partition后再新增向量,新增Partition的操作请参见创建Partition。 |
是 |
SDK方式
Python SDK方式
说明
插入Doc时若指定id已存在,已存在的Doc不会被覆盖,本次插入Doc操作无效。
前提条件
- 已创建Cluster:创建Cluster。
- 已获得API-KEY:API-KEY管理。
- 已安装最新版SDK:安装DashVector SDK。
接口定义
Collection.insert( docs: Union[Doc, List[Doc], Tuple, List[Tuple]], partition: Optional[str] = None, async_req: False ) -> DashVectorResponse
使用示例
说明
- 需要使用您的api-key替换示例中的YOUR_API_KEY、您的Cluster Endpoint替换示例中的YOUR_CLUSTER_ENDPOINT,代码才能正常运行。
- 本示例需要参考新建Collection-使用示例提前创建好名称为
quickstart
的Collection。
import dashvector from dashvector import Doc import numpy as np client = dashvector.Client( api_key='YOUR_API_KEY', endpoint='YOUR_CLUSTER_ENDPOINT' ) collection = client.get(name='quickstart')
插入Doc
# 通过Doc对象insert ret = collection.insert( Doc( id='1', vector=[0.1, 0.2, 0.3, 0.4] ) ) # 判断insert是否成功 assert ret # 简化形式:通过Tuple insert ret = collection.insert( ('2', [0.1, 0.1, 0.1, 0.1]) # (id, vector) )
插入带有Fields的Doc
# insert单条数据,并设置Fields Value ret = collection.insert( Doc( id='3', vector=np.random.rand(4), fields={ # 设置创建Collection时预定义的Fileds Value 'name': 'zhangsan', 'weight':70.0, 'age':30, # 设置Schema-Free的Field & Value 'anykey1': 'str-value', 'anykey2': 1, 'anykey3': True, 'anykey4': 3.1415926 } ) ) # insert单条数据,并设置Fields Value ret = collection.insert( ('4', np.random.rand(4), {'foo': 'bar'}) # (id, vector, fields) )
批量插入Doc
# 通过Doc对象,批量insert 10条数据 ret = collection.insert( [ Doc(id=str(i+5), vector=np.random.rand(4)) for i in range(10) ] ) # 简化形式:通过Tuple,批量insert 3条数据 ret = collection.insert( [ ('15', [0.2,0.7,0.8,1.3], {'age': 20}), ('16', [0.3,0.6,0.9,1.2], {'age': 30}), ('17', [0.4,0.5,1.0,1.1], {'age': 40}) ] # List[(id, vector, fields)] ) # 判断批量insert是否成功 assert ret
异步插入Doc
# 异步批量insert 10条数据 ret_funture = collection.insert( [ Doc(id=str(i+18), vector=np.random.rand(4), fields={'name': 'foo' + str(i)}) for i in range(10) ], async_req=True ) # 等待并获取异步insert结果 ret = ret_funture.get()
插入带有Sparse Vector的Doc
ret = collection.insert( Doc( id='28', vector=[0.1, 0.2, 0.3, 0.4], sparse_vector={1:0.4, 10000:0.6, 222222:0.8} ) )
Java SDK方式
说明
插入Doc时若指定id已存在,已存在的Doc不会被覆盖,本次插入Doc操作无效。
前提条件
- 已创建Cluster:创建Cluster。
- 已获得API-KEY:API-KEY管理。
- 已安装最新版SDK:安装DashVector SDK。
接口定义
// class DashVectorCollection // 同步接口 public Response<Void> insert(InsertDocRequest insertDocRequest); // 异步接口 public ListenableFuture<Response<Void>> insertAsync(InsertDocRequest insertDocRequest);
使用示例
说明
- 需要使用您的api-key替换示例中的YOUR_API_KEY、您的Cluster Endpoint替换示例中的YOUR_CLUSTER_ENDPOINT,代码才能正常运行。
- 本示例需要参考新建Collection提前创建好名称为
quickstart
的Collection。
插入Doc
import com.aliyun.dashvector.DashVectorClient; import com.aliyun.dashvector.DashVectorClientConfig; import com.aliyun.dashvector.DashVectorCollection; import com.aliyun.dashvector.common.DashVectorException; import com.aliyun.dashvector.models.Doc; import com.aliyun.dashvector.models.Vector; import com.aliyun.dashvector.models.requests.InsertDocRequest; import com.aliyun.dashvector.models.responses.Response; import com.google.common.util.concurrent.ListenableFuture; import java.util.*; public class Main { public static void main(String[] args) throws DashVectorException { DashVectorClient client = new DashVectorClient("YOUR_API_KEY", "YOUR_CLUSTER_ENDPOINT"); DashVectorCollection collection = client.get("quickstart"); // 构建Vector Vector vector = Vector.builder().value(Arrays.asList(0.1f, 0.2f, 0.3f, 0.4f)).build(); // 构建Doc Doc doc = Doc.builder().id("1").vector(vector).build(); // 插入Doc Response<Void> response = collection.insert(InsertDocRequest.builder().doc(doc).build()); // 判断插入是否成功 // assert response.isSuccess() } }
插入带有Fields的Doc
// 构建Vector Vector vector = Vector.builder().value(Arrays.asList(0.2f, 0.2f, 0.3f, 0.4f)).build(); // 插入单条数据,并设置Fields Value Doc doc = Doc.builder() .id("2") .vector(vector) // 设置创建Collection时预定义的Fileds Value .field("name", "zhangshan") .field("age", 20) .field("weight", 100f) // 设置Schema-Free的Field & Value .field("anykey1", "String") .field("anykey2", 1) .field("anykey3", true) .field("anykey4", 3.1415926f) .build(); // 插入Doc Response<Void> response = collection.insert(InsertDocRequest.builder().doc(doc).build()); // 判断插入Doc是否成功 assert response.isSuccess()
批量插入Doc
// 通过InsertDocRequest对象,批量插入10条Doc List<Doc> docs = new ArrayList<>(); for (int i = 0; i < 10; i++) { docs.add( Doc.builder() .id(Integer.toString(i+3)) .vector(Vector.builder().value(Collections.nCopies(4, (float) i+3)).build()) .build() ); } InsertDocRequest request = InsertDocRequest.builder().docs(docs).build(); Response<Void> response = collection.insert(request); // 判断插入是否成功 assert response.isSuccess();
异步插入Doc
// 异步批量插入10条数据 List<Doc> docs = new ArrayList<>(); for (int i = 0; i < 10; i++) { docs.add( Doc.builder() .id(Integer.toString(i+13)) .vector(Vector.builder().value(Collections.nCopies(4, (float) i+13)).build()) .build() ); } InsertDocRequest request = InsertDocRequest.builder().docs(docs).build(); ListenableFuture<Response<Void>> response = collection.insertAsync(request); // 等待并获取异步insert结果 Response<Void> ret = response.get();
插入带有Sparse Vector的Doc
Vector vector = Vector.builder().value(Arrays.asList(0.1f, 0.2f, 0.3f, 0.4f)).build(); // 构建带有Sparse Vector的Doc Doc doc = Doc.builder() .id("28") .sparseVector( new Map<Integer, Float>() { { put(1, 0.4f); put(10000, 0.6f); put(222222, 0.8f); } }) .vector(vector) .build(); // 插入带有Sparse Vector的Doc Response<Void> response = collection.insert(InsertDocRequest.builder().doc(doc).build());
API方式
说明
插入Doc时若指定id已存在,已存在的Doc不会被覆盖,本次插入Doc操作无效。
前提条件
- 已创建Cluster:创建Cluster。
- 已获得API-KEY:API-KEY管理。
- 已安装最新版SDK:安装DashVector SDK。
Method与URL
POST https://{Endpoint}/v1/collections/{CollectionName}/docs
使用示例
说明
- 需要使用您的api-key替换示例中的YOUR_API_KEY、您的Cluster Endpoint替换示例中的YOUR_CLUSTER_ENDPOINT,代码才能正常运行。
- 本示例需要参考新建Collection-使用示例提前创建好名称为
quickstart
的Collection。
插入Doc
curl -XPOST \ -H 'dashvector-auth-token: YOUR_API_KEY' \ -H 'Content-Type: application/json' \ -d '{ "docs": [{"id": "1", "vector": [0.1, 0.2, 0.3, 0.4]}] }' https://YOUR_CLUSTER_ENDPOINT/v1/collections/quickstart/docs # example output: # {"request_id":"3fc2acfa-48cb-4924-8ef7-f94388ecb07d","code":0,"message":"Success"}
插入带有Fields的Doc
curl -XPOST \ -H 'dashvector-auth-token: YOUR_API_KEY' \ -H 'Content-Type: application/json' \ -d '{ "docs": [ { "id": "2", "vector": [0.2, 0.3, 0.4, 0.5], "fields": { "age": 70, "name": "zhangshan", "anykey1": "str-value", "anykey2": 1, "anykey3": true, "anykey4": 3.1415926 } } ] }' https://YOUR_CLUSTER_ENDPOINT/v1/collections/quickstart/docs # example output: # {"request_id":"4abd0c5e-78a6-488b-976f-16f0d2e628c5","code":0,"message":"Success"}
批量插入Doc
curl -XPOST \ -H 'dashvector-auth-token: YOUR_API_KEY' \ -H 'Content-Type: application/json' \ -d '{ "docs": [ {"id": "3", "vector": [0.3, 0.4, 0.5, 0.6]}, {"id": "4", "vector": [0.4, 0.5, 0.6, 0.7], "fields": {"age": 20, "name": "zhangsan"}}, {"id": "5", "vector": [0.5, 0.6, 0.7, 0.8], "fields": {"anykey": "anyvalue"}} ] }' https://YOUR_CLUSTER_ENDPOINT/v1/collections/quickstart/docs # example output: # {"request_id":"19215409-ea66-4db9-8764-26ce2eb5bb99","code":0,"message":""}
插入带有Sparse Vector的Doc
curl -XPOST \ -H 'dashvector-auth-token: YOUR_API_KEY' \ -H 'Content-Type: application/json' \ -d '{ "docs": [ {"id": "6", "vector": [0.1, 0.2, 0.3, 0.4], "sparse_vector":{"1":0.4, "10000":0.6, "222222":0.8}} ] }' https://YOUR_CLUSTER_ENDPOINT/v1/collections/quickstart/docs # example output: # {"request_id":"4fefe855-ae39-48b3-9aa8-f45a77a3cd29","code":0,"message":"Success"}
了解更多阿里云向量检索服务DashVector的使用方法,请点击:
https://help.aliyun.com/product/2510217.html?spm=a2c4g.2510217.0.0.54fe155eLs1wkT