DashVector - 阿里云向量检索服务

news2024/12/23 19:49:24

DashVector

文章目录

  • DashVector
    • 一、关于 DashVector
    • 二、使用 DashVector 前提准备
      • 1、创建Cluster:
        • 2、获得API-KEY
        • 3、安装最新版SDK
    • 三、快速使用 DashVector
      • 1. 创建Client
      • 2. 创建Collection
      • 3、插入Doc
      • 4、相似性检索
      • 5、删除Doc
      • 6. 查看Collection统计信息
      • 7. 删除Collection
    • 四、关于 Proxima
      • 核心能力
    • 五、构建 Proxima
      • 获取 Docker 镜像
    • 六、向量检索基本概念
      • Client**(**客户端**)
      • Cluster(实例)
      • Collection(**集合**)
      • Partition**(**分区**)
      • Doc**(**文档**)
      • Field(**字段**)
      • Vector(**向量**)
      • Sparse Vector(稀疏向量)
      • QPS**(**访问频次**)
      • API-KEY


一、关于 DashVector

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

DashVector 将其强大的向量管理、向量查询等多样化能力,通过简洁易用的SDK/API接口透出,方便被上层AI应用迅速集成,从而为包括大模型生态、多模态AI搜索、分子结构分析在内的多种应用场景,提供所需的高效向量检索能力。


  • 阿里云:向量检索服务
    https://help.aliyun.com/document_detail/2510225.html
  • 产品首页:https://www.aliyun.com/product/ai/dashvector
  • DashVector PYPI : https://pypi.org/project/dashvector/
  • LangChain - DashVector
    https://python.langchain.com/docs/integrations/vectorstores/dashvector
  • 实践教程 : https://help.aliyun.com/document_detail/2510233.html
    • 基于向量检索服务与TextEmbedding实现语义搜索
    • DashVector x 通义千问大模型:打造基于专属知识的问答服务
    • DashVector + ModelScope 玩转多模态检索
    • DashVector + DashScope升级多模态检索
    • 文本向量生成
    • 多模态向量生成
    • 图片向量生成

二、使用 DashVector 前提准备


1、创建Cluster:

https://help.aliyun.com/document_detail/2631966.html


1)登录向量检索服务控制台。

https://dashvector.console.aliyun.com/

在这里插入图片描述


2)在左侧导航栏单击Cluster列表,单击创建Cluster

image.png


3)选择Cluster实例类型实例规格副本数,填写Cluster名称,单击立即购买image.png


参数说明

参数描述
商品类型向量检索服务的收费类型。当前仅支持按量付费。详见产品计费。
地域向量检索服务所在地域。当前仅支持**华东1(杭州)**地域。
实例类型向量检索服务DashVector当前支持三种实例类型,以支持不同的业务场景和需求:
性能型:提供更高的QPS和更低的查询延迟,适用于高并发、大流量、延迟敏感或对写入和查询效率有较高要求的场景。
存储型:相对于性能型有5倍的存储容量优势,能够存储和管理更多的向量数据,适用于数据规模大、数据增长快、QPS相对较低的场景。
免费试用:适用于测试、体验场景,请勿用于线上生产环境。免费试用实例有效期为1个月,到期后可再次申请试用。免费实例有部分试用限制,详情可参考约束与限制。

说明
付费Cluster,最多可创建32个Collection。免费试用Cluster,最多可创建2个Collection。

重要
每个账户同一时间段仅能创建一个免费试用Cluster。免费试用Cluster到期或主动释放后可以再次创建一个免费试用Cluster。
免费试用Cluster,创建后30个自然日到期会自动释放,删除所有数据。如有重要业务数据,请及时转移到付费Cluster或者将免费试用Cluster升配为付费Cluster。
实例规格免费试用Cluster:采用Serverless架构,适用于快速体验产品。免费试用实例使用限制请参考约束与限制。
存储型和性能型Cluster分别提供6种可选规格,不同规格的主要区别在于存储容量的不同。实例规格详情,请参见实例规格。
副本数向量检索服务DashVector支持调整副本数,可选范围为1-5。副本之间数据完全相同,副本数越大,可支持的QPS越高,呈线性关系。同时副本数越大,服务可用性越高,建议对可用性有较高要求的生产环境选择>=2的副本数
说明 需要注意,副本数的增加和减少不会影响存储容量,仅影响QPS和可用性。
实例名称必须由大小写字母、数字、下划线(_)、中划线(-)组成,长度[3, 32]。同一账户中不允许两个相同的Cluster名称同时存在。

4)确认实例信息,勾选服务协议,然后单击立即开通image.png


5)单击管理控制台跳转至控制台概览页,Cluster创建成功后,即可正常使用向量检索服务。 在这里插入图片描述


2、获得API-KEY

API-KEY管理:https://help.aliyun.com/document_detail/2510230.html

dashscope API-Key : https://dashscope.console.aliyun.com/apiKey


3、安装最新版SDK

安装DashVector SDK:https://help.aliyun.com/document_detail/2510231.html

DashVector向量检索服务提供下列编程语言的SDK供开发者选择。

  • Python SDK
  • Java SDK
  • HTTP API https://help.aliyun.com/document_detail/2510275.html
  • 更多编程语言的DashVector SDK将在稍后陆续提供。

python 安装

pip3 install dashvector

升级:

pip3 install dashvector --upgrade

三、快速使用 DashVector

转载自:https://help.aliyun.com/document_detail/2510223.html


1. 创建Client

使用HTTP API时可跳过本步骤。

import dashvector

client = dashvector.Client(
    api_key='YOUR_API_KEY',
    endpoint='YOUR_CLUSTER_ENDPOINT'
)
assert client

2. 创建Collection

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

client.create(name='quickstart', dimension=4)

collection = client.get('quickstart')
assert collection

说明

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

3、插入Doc

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'})    
    ]
)

4、相似性检索

rets = collection.query([0.1, 0.2, 0.3, 0.4], topk=2)

print(rets)

5、删除Doc

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

6. 查看Collection统计信息

stats = collection.stats()

print(stats)

7. 删除Collection

client.delete('quickstart')

四、关于 Proxima

  • proxima github : https://github.com/alibaba/proxima
  • proxima 文档:https://proximabilin.github.io/docs/
    • 使用样例 : https://proximabilin.github.io/docs/gettingstarted/example_usage/
    • 安装指南 : https://proximabilin.github.io/docs/gettingstarted/installation/

Proxima 是阿里巴巴达摩院系统 AI 实验室自研的向量检索内核。

目前,其核心能力广泛应用于阿里巴巴和蚂蚁集团内众多业务,如淘宝搜索和推荐、蚂蚁人脸支付、优酷视频搜索、阿里妈妈广告检索等。

同时,Proxima 还深度集成在各式各类的大数据和数据库产品中,如阿里云 Hologres、搜索引擎 Elastic Search 和 ZSearch、离线引擎 MaxCompute (ODPS) 等,为其提供向量检索的能力。

Proxima BE,全称 Proxima Bilin Engine,是 Proxima 团队开发的服务化引擎,实现了对大数据的高性能相似性搜索。

支持 RESTful HTTP 接口访问,同时也支持多种语言的 SDK 以 GRPC 协议访问。


核心能力

Proxima BE 的主要核心能力有以下几点:

  • 支持单机超大规模索引:基于底层向量索引的工程和检索算法优化,使得有限成本下,实现了高效率的检索方法,并支持磁盘索引,单片索引可达几十亿的规模。
  • 支持多数据源全量和增量同步:通过 Mysql Repository 等组件,可将 mysql 等数据源中的数据,实时同步至索引服务,提供查询能力,简化数据处理流程。
  • 支持向量索引实时增删改查:基于全新 CRUD 图索引,支持在线大规模向量索引的从 0 到 1 的流式写入,并实现了索引即时增删改查,避免索引需定期重建。
  • 支持正排数据查询:支持在查询时,可展示文档的所有结构化字段。同时后期将基于此功能,进一步扩展出与文本与向量联合检索等功能。

在这里插入图片描述


五、构建 Proxima

环境要求:

  • Linux or MacOS
  • gcc >= 4.9
  • cmake >= 3.14
git clone https://github.com/alibaba/proximabilin.git
cd proximabilin && git submodule update --init

mkdir build && cd build

# Build with Debug (Intel Haswell Microarchitecture)
#cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_HASWELL=ON ..

# Build with Release (Intel Haswell Microarchitecture)
cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_HASWELL=ON ..

make -j all

获取 Docker 镜像

平台仓库版本
Linux X86_64ghcr.io/proximabilin/proxima-be0.2.0

六、向量检索基本概念

转载自:https://help.aliyun.com/document_detail/2511804.html


Client**(客户端

Client(客户端),是用户用于连接DashVector服务端的基础对象,相当于关系型数据库中的Connection。通过设置API_KEY即可完成Client对象的创建,即完成与DashVector服务端的连接。通过Client对象可进行Collection操作(如新建Collection、获取Collection列表等)。


Cluster(实例)

Cluster(实例),是面向售卖的资源管理单位,相当于关系型数据库中的一个库,我们提供了不同的实例产品规格以满足用户不同的业务需求。用户可以通过控制台进行Cluster管理操作(如创建Cluster、升配Cluster、释放Cluster)等,在创建好的Cluster里,用户可以进行后续的Collection、Partition 等操作。

说明

  • 同一个账户支持创建多个Cluster,账户内单个Cluster名称唯一。
  • 每个账户同一时间段仅能创建一个免费试用Cluster,免费试用Cluster到期或主动释放后可以再次创建一个免费试用Cluster。

Collection(集合

Collection(集合),是一个相同类型Doc组成的集合,相当于关系型数据库中的一张表。每个Collection必须使用唯一的名称来标识,通过名称可唯一获取Collection对象。Collection对象可进行各种Doc操作(如插入Doc、检索Doc等)和Partition操作(如新建Partition等)。

说明

  • Collection名称在Cluster内必须唯一,不允许两个相同名称的Collection同时存在。
  • 付费Cluster最多支持创建32个支持Collection;免费Cluster最多支持创建2个Collection。

Partition**(分区

Partition(分区),是指同一个Collection下的Doc可通过不同的Partition进行分区。各种Doc操作(如插入Doc、检索Doc等)如若指定Partition,则该操作将限定在该指定的Paritition内进行。通过合理的Partition设置,可有效提升Doc操作的效率。


Doc**(文档

Doc(文档),是DashVector最基础的数据单元,相当于关系型数据库中的一行数据。Doc包含以下属性:id(主键)、vector(向量)、fields(key-value结构的字段名和字段值)。Doc是插入Doc、更新Doc、插入或更新Doc操作的基础输入结构,同时也是检索Doc和获取Doc操作的输出结构。


Field(字段

Field(字段),是组成Doc的基础单位之一,每个Doc可具备多个Field,相当于关系型数据库中的列。


Vector(向量

Vector(向量),Embedding Vector,非结构化数据通过各种AI Embedding模型进行特征的提取,获取到的多维数据。DashVector中,Vector作为Doc的基础数据单位之一,用于描述各种非结构化数据的特征。例如,[0.1, 0.2, 0.3, 0.4]就是一个维度(dimension)为4的向量。


Sparse Vector(稀疏向量)

Sparse Vector(稀疏向量),稀疏向量是指大部分元素为0,仅少量元素非0的向量。在DashVector中,稀疏向量可用来表示词频等信息。例如,{1:0.4, 10000:0.6, 222222:0.8}就是一个稀疏向量,其第1、10000、222222位元素(分别代表三个关键字)有非0值(代表关键字的权重),其他元素全部为0。


QPS**(访问频次

每秒能向DashVector服务的API发起的最大查询请求次数。QPS越高,同一时段内能够处理的业务量越多。例如QPS为5时,则在1秒内可以进行5次调用请求。


API-KEY

API-KEY是您访问向量检索服务(DashVector)的密 钥。DashVector通过API-KEY进行调用鉴权和计量计费,目前仅支持通过阿里云主账号进行API-KEY管理,每个账户同时可拥有3个有效的API-KEY。

请妥善保存和使用API-KEY,如需进一步了解API-KEY有关的安全信息,请参考保护并正确使用API-KEY。


伊织 2024-03-22(五)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1536123.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

js中多重引号会导致函数的参数失效报错-Invalid or unexpected token

在js使用中我们经常会使动态添加html信息到元素对象中,且还加入了函数及其,函数对应参数,这个时候就会使用多重引号去拼接,如果拼接中没有做引号的转义,就会出现Invalid or unexpected token。 例如以下代码&#xff0…

【嵌入式——QT】Charts常见的图表的绘制

【嵌入式——QT】Charts常见的图表的绘制 柱状图QBarSetQBarSeriesQBarCategoryAxis图示 饼图堆叠柱状图百分比柱状图散点图和光滑曲线图代码示例 柱状图 QBarSet 用于创建柱状图的数据集。 主要函数 setLabel():设置数据集标签 ;setLabelBrush()&am…

复习斐波那契(用C++写)

或者这样写: 斐波那契数列 题目描述 斐波那契数列是指这样的数列:数列的第一个和第二个数都为 1 1 1,接下来每个数都等于前面 2 2 2 个数之和。 给出一个正整数 a a a,要求斐波那契数列中第 a a a 个数是多少。 输入格式…

Windows下MySQL服务启动常见的两种方式,完美适配Mysql5.7,MySql8.0

文章目录 一、图形界面下启动mysql服务二、在命令行重新启动mysql服务3 推荐阅读4 源码获取: Windows系统下,MySQL服务的启动,常见的两种启动方式如下: 一、图形界面下启动mysql服务 在图形界面下启动mysql服务的流程如下&#x…

算法体系-13 第十三 二叉树的基本算法+二叉树的递归套路

一 完全二叉树的判断 1.1 描述 完全二叉树:他每一层都是满的,即使不满也是最后一层不满,最后一层不满也是从左到右变满的;话句话说就是 完全二叉树从根结点到倒数第二层满足完美二叉树,最后一层可以不完全填充&#x…

Elasticsearch数据存储优化方案

优化Elasticsearch数据存储有助于提升系统性能、降低成本、提高数据查询效率以及增强系统的稳定性和可靠性。通常我们再优化Elasticsearch数据存储会遇到一些问题,导致项目卡壳。以下是优化Elasticsearch数据存储的一些重要作用: 1、问题背景 在某些场景…

我的春招求职面经

智能指针在面试时经常被问到,最近自己也在写,有一点思考,于是找到了这样一个题目,可以看看,上面这个代码有什么问题?留言区说出你的答案吧! 最后分享一下之前的实习->春招->秋招等文章汇总…

地质灾害在线监测,精准预警智能化

自然灾害无情且威力巨大,对人类生命财产安全造成严重威胁。地质灾害作为重要的自然灾害类型之一,给人类社会带来了沉重的经济损失和生命威胁。及时掌握地质灾害信息,提高预警能力和监测水平,是保障人民群众生命财产安全的当务之急。(key-iot.com.cn/18703.html&…

Juniper SRX 防火墙基础上网配置

简介 基于PNET-LAB模拟器,使用 vSRX-NG 23.4R1.9 镜像进行实验。 博客:https://songxwn.com/Juniper-SRX-snat/ 实验需求 配置WAN口 LAN口,实现基础的上网功能。配置NAT、DHCP。 ISP 路由器使用Cisco IOS模拟,与SRX对接口配置…

docker镜像安装空间不足no space left on device

报错:Error processing tar file(exit status 1): open /usr/local/lib/libmkl_tbb_thread.so.1: no space left on device 原先docker模型保存位置: docker info -f ‘{{ .DockerRootDir}}’ docker 高点版本,这里26.0 解决参考&#xf…

力扣---零钱兑换---动态规划

思路: 这是一道典型的动态规划问题(希望下次不用提示,能直接认出来):我将g[i]定义为总金币为i所需的最少硬币个数。所以递推公式可以表示为:g[i]min(g[i-1],g[i-2],g[i-5])1,也就是g[i]min(g[i-…

demo版多人聊天系统

目录 ​编辑 一,引入 二,在Server端修改的代码 1,保存用户信息功能实现 2,拼接消息 3,广播消息 三, Client端要修改的代码 四,效果演示 一,引入 在上一篇文章udp网络服务器中&a…

Java-Java基础学习(4)-多线程(2)

3.7. Lambda表达式 为什么要使用lambda表达式 避免匿名内部类定义过多;可以让代码看起来更简洁;去掉一堆没有意义的代码,只留下核心逻辑 属于函数式编程的概念,格式 (params) -> expression [表达式](params) -> statement…

山东省大数据局副局长禹金涛一行莅临聚合数据走访调研

3月19日,山东省大数据局党组成员、副局长禹金涛莅临聚合数据展开考察调研。山东省大数据局数据应用管理与安全处处长杨峰,副处长都海明参加调研,苏州市大数据局副局长汤晶陪同。聚合数据董事长左磊等人接待来访。 调研组一行参观了聚合数据展…

安装OneNote for Win10 | Win10/Win11

前言 PC端的OneNote分为2个版本,分别是Microsoft Store版本和Office版本,Microsoft Store版本即为OneNote for Win10,此版的OneNote有最近笔记功能,但检索功能不如Office版本,个人认为2个版本各有优劣。 但OneNote f…

详细剖析多线程(更新中...)

文章目录 前言一、认识线程1.1线程概念1.2为什么要有线程1.3线程和进程的区别(经典面试题) 二、创建线程2.1继承 Thread 类,重写run2.2实现 Runnable 接口,重写run2.3继承 Thread 类,重写run,匿名内部类2.4实现 Runnable 接口,重写run&#x…

WEB 表单练习题

任务如图&#xff1a; <html><head><meta charest"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head><body><table width"…

解决nginx报错nginx: [emerg] unknown log format main in 的方法

目录 一、故障描述1&#xff1a; 重启nginx是出现了如下错误 解决办法 二、故障描述2&#xff1a; 解决办法&#xff1a; 三、nginx介绍​ 四、nginx原理 五、nginx.conf配置文件 六、nginx负载均衡 七、正向代理、反向代理 一、故障描述1&#xff1a; 在添加Nginx的…

【WEEK4】 【DAY3】整合SSM框架之功能实现—修改、删除数据【中文版】

2024.3.20 Wednesday 接上文【WEEK4】 【DAY2】整合SSM框架之功能实现—总览、添加数据【中文版】 目录 7.6.修改功能7.6.1.修改BookController.java7.6.2.修改allBook.jsp7.6.3.新建updateBook.jsp7.6.4.修改MyBatis-config.xml7.6.5.运行 7.7.删除功能7.7.1.修改BookContro…

网络原理(4)——TCP协议的特性

目录 一、滑动窗口 1、ack丢了 2、数据丢了 二、流量控制&#xff08;流控&#xff09; 三、拥塞控制 拥塞窗口动态变化的规则 四、延时应答 五、捎带应答 六、面向字节流 七、异常情况 &#xff08;1&#xff09;进程崩溃了 &#xff08;2&#xff09;其中一方关机…