写点什么

如何快速使用向量检索服务 DashVector?

作者:DashVector
  • 2024-10-30
    陕西
  • 本文字数:2751 字

    阅读完需:约 9 分钟

如何快速使用向量检索服务DashVector?

本文将介绍如何快速上手使用向量检索服务 DashVector。

前提条件

  • 已创建 Cluster

  • 已获得 API-KEY

  • 已安装最新版 SDK


说明


  1. 需要使用您的 api-key 替换示例中的 YOUR_API_KEY、您的 Cluster Endpoint 替换示例中的 YOUR_CLUSTER_ENDPOINT,代码才能正常运行。

  2. Cluster Endpoint,可在控制台"Cluster 详情"中查看。

Step1. 创建 Client

使用 HTTP API 时可跳过本步骤。Python 示例:


import dashvector
client = dashvector.Client( api_key='YOUR_API_KEY', endpoint='YOUR_CLUSTER_ENDPOINT')assert client
复制代码


Java 示例:


import com.aliyun.dashvector.DashVectorClient;import com.aliyun.dashvector.common.DashVectorException;

DashVectorClient client = new DashVectorClient("YOUR_API_KEY", "YOUR_CLUSTER_ENDPOINT");
复制代码

Step2. 创建 Collection

创建一个名称为quickstart,向量维度为 4 的 collection。Python 示例:


client.create(name='quickstart', dimension=4)
collection = client.get('quickstart')assert collection
复制代码


Java 示例:


import com.aliyun.dashvector.models.responses.Response;import com.aliyun.dashvector.DashVectorCollection;

Response<Void> response = client.create("quickstart", 4);System.out.println(response);DashVectorCollection collection = client.get("quickstart");
assert collection.isSuccess();
复制代码


HTTP


curl -XPOST \  -H 'dashvector-auth-token: YOUR_API_KEY' \  -H 'Content-Type: application/json' \  -d '{    "name": "quickstart",     "dimension": 4  }' https://YOUR_CLUSTER_ENDPOINT/v1/collections
复制代码


说明


  1. 在未指定距离度量参数时,将使用默认的Cosine距离度量方式。

  2. 在未指定向量数据类型时,将使用默认的Float数据类型。

Step3. 插入 Doc

Python 示例:


from dashvector import Doc
# 通过dashvector.Doc对象,插入单条数据collection.insert(Doc(id='1', vector=[0.1, 0.2, 0.3, 0.4]))
# 通过dashvector.Doc对象,批量插入2条数据collection.insert( [ Doc(id='2', vector=[0.2, 0.3, 0.4, 0.5], fields={'age': 20, 'name': 'zhangsan'}), Doc(id='3', vector=[0.3, 0.4, 0.5, 0.6], fields={'anykey': 'anyvalue'}) ])
复制代码


Java 示例:


import com.aliyun.dashvector.models.Vector;import com.aliyun.dashvector.models.Doc;import com.aliyun.dashvector.models.requests.InsertDocRequest;import com.aliyun.dashvector.models.responses.Response;
import java.util.Arrays;import java.util.HashMap;

Doc doc1 = Doc.builder() .id("1") .vector( Vector.builder() .value(Arrays.asList(0.1f, 0.2f, 0.3f, 0.4f)) .build() ).build();
Doc doc2 = Doc.builder() .id("2") .vector( Vector.builder() .value(Arrays.asList(0.2f, 0.3f, 0.4f, 0.5f)) .build() ).fields(new HashMap<String, Object>(){{ put("age", 20); put("name", "zhangsan"); }}).build();
Doc doc3 = Doc.builder() .id("3") .field("anykey", "anyvalue") .vector( Vector.builder() .value(Arrays.asList(0.3f, 0.4f, 0.5f, 0.6f)) .build() ).build();
InsertDocRequest request = InsertDocRequest.builder() .docs(Arrays.asList(doc1, doc2, doc3)) .build();
Response<Void> response = collection.insert(request);
复制代码


HTTP 示例:


# 插入3条数据
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]}, {"id": "2", "vector": [0.2, 0.3, 0.4, 0.5], "fields": {"age": 20, "name": "zhangsan"}}, {"id": "3", "vector": [0.3, 0.4, 0.5, 0.6], "fields": {"anykey": "anyvalue"}} ] }' https://YOUR_CLUSTER_ENDPOINT/v1/collections/quickstart/docs
复制代码

Step4. 相似性检索

Python 示例:


rets = collection.query([0.1, 0.2, 0.3, 0.4], topk=2)
print(rets)
复制代码


Java 示例:


import com.aliyun.dashvector.models.Vector;import com.aliyun.dashvector.models.Doc;import com.aliyun.dashvector.models.requests.QueryDocRequest;import com.aliyun.dashvector.models.responses.Response;
import java.util.Arrays;import java.util.List;

Vector vector = Vector.builder().value(Arrays.asList(0.1f, 0.2f, 0.3f, 0.4f)).build(); QueryDocRequest request = QueryDocRequest.builder() .vector(vector) .topk(2) .build();
Response<List<Doc>> response = collection.query(request);
复制代码


HTTP 示例:


curl -XPOST \  -H 'dashvector-auth-token: YOUR_API_KEY' \  -H 'Content-Type: application/json' \  -d '{    "vector": [0.1, 0.2, 0.3, 0.4],    "topk": 2  }' https://YOUR_CLUSTER_ENDPOINT/v1/collections/quickstart/query
复制代码

Step5. 删除 Doc

Python


# 删除1条数据collection.delete(ids=['1'])
复制代码


Java 示例:


import com.aliyun.dashvector.models.Doc;import com.aliyun.dashvector.models.requests.DeleteDocRequest;import com.aliyun.dashvector.models.responses.Response;

DeleteDocRequest request = DeleteDocRequest.builder() .id("1") .build(); Response<List<Doc>> response = collection.delete(request);
复制代码


HTTP 示例:


curl -XDELETE \-H 'dashvector-auth-token: YOUR_API_KEY' \-H 'Content-Type: application/json' \-d '{"ids": ["1"]}' \https://YOUR_CLUSTER_ENDPOINT/v1/collections/quickstart/docs
复制代码

Step6. 查看 Collection 统计信息

Python


stats = collection.stats()
print(stats)
复制代码


Java 示例:


import com.aliyun.dashvector.models.CollectionStats;import com.aliyun.dashvector.models.responses.Response;

Response<CollectionStats> response = collection.stats();
复制代码


HTTP 示例:


curl -H 'dashvector-auth-token: YOUR_API_KEY' \https://YOUR_CLUSTER_ENDPOINT/v1/collections/quickstart/stats
复制代码

Step7. 删除 Collection

Python 示例:


client.delete('quickstart')
复制代码


Java 示例:


import com.aliyun.dashvector.models.responses.Response;

Response<Void> response = client.delete("quickstart");
复制代码


HTTP 示例:


curl -XDELETE -H 'dashvector-auth-token: YOUR_API_KEY' \https://YOUR_CLUSTER_ENDPOINT/v1/collections/quickstart
复制代码


发布于: 刚刚阅读数: 5
用户头像

DashVector

关注

还未添加个人签名 2024-05-14 加入

向量检索服务DashVector基于通义实验室自研的高效向量引擎Proxima内核,提供具备水平拓展能力的云原生、全托管的向量检索服务。

评论

发布
暂无评论
如何快速使用向量检索服务DashVector?_大数据_DashVector_InfoQ写作社区