如何基于亚马逊云科技打造高性能的 SQL 向量数据库 MyScale

7340e9f910db95335d816728be3fedf9.gif

MyScale 是一款完全托管于亚马逊云科技、支持 SQL 的高效向量数据库。MyScale 的优势在于,它在提供与专用向量数据库相匹敌甚至优于的性能的同时,还支持完整的 SQL 语法。在这篇文章中,我们将阐述 MyScale 是如何借助亚马逊云科技的基础设施,构建出一个稳定且高效的云数据库。

什么是向量数据库

或许你尚未察觉,然而向量嵌入(vector embedding)实际上无处不在。它们构成了众多机器学习和深度学习算法的根基,被广泛运用于从搜索引擎到智能助手等各式各样的应用。机器学习与深度学习通常会把文本、图像、音频、视频等非结构化数据转化为向量嵌入的形式进行储存,并借由向量相似性搜索技术进行语义相关性搜索。基于向量的相似性搜索现如今已被大量应用于各类人工智能驱动的应用场景,包括图像检索、视频分析、自然语言理解、推荐系统、定向广告、个性化搜索、智能客服以及欺诈检测等。在这样的背景下,对向量数据的管理显得尤为重要,我们需要能够快速地储存、索引和搜索这些向量化的数据。

现存的向量数据库大体上可以分为两大类别。一类是专为向量设计的专有向量数据库产品,例如 Pinecone、Weaviate、Qdrant、Chroma、Milvus 等。另一类则是在通用的 SQL 或 NoSQL 数据库产品上进行扩展,其中最为人熟知的 SQL 数据库之一 Postgres 通过插件 pgvector 支持了向量索引和搜索;而包括 ClickHouse、Redis、Elasticsearch 和 Cassandra 在内的许多开源数据库近期都增加了对向量索引的原生支持。

人们通常认为,专有的向量数据库专门为向量检索设计,能够提供较佳的搜索性能。而支持向量搜索的通用数据库产品则依赖于原有的通用数据库,能够提供更为完善的数据管理和结构化数据查询能力,向量检索性能则有所损失。MyScale 基于开源的在线分析处理(OLAP)数据库 ClickHouse 开发,集成了自主研发的多尺度树图(英文:multi-scale tree graph,缩写 MSTG)向量索引算法。它不仅继承了 ClickHouse 卓越的结构化数据分析和查询能力,同时也提供了数倍于专有向量数据库的性价比,从而将两者的优势集于一身,给企业提供了统一的结构化和非结构化数据管理方案。

整体架构

MyScale 是一款完全依托于亚马逊云科技云平台的数据库服务,其架构深度结合了亚马逊云科技的多元化产品线,包含了 Amazon EC2 云端虚拟服务器、Amazon EKS 集群管理、Amazon S3 对象存储、Amazon NLB 负载均衡等。有赖于亚马逊云科技提供的强大底层设施,我们迅速地构建出了 MyScale 的云端服务产品。

如下图所示,MyScale 云服务的架构设计包括全局控制平面(global control plane)、区域控制平面(regional control plane)以及区域数据平面(regional data plane)三个层次,每个层次对应一个 Kubernetes 集群。全局控制平面中部署了云服务的业务系统,负责组织、用户的管理以及整体的使用量统计等。每个区域对应一个云服务供应商的一个可用区,如 Amazon US-EAST-1。每个区域独立部署一个控制平面和多个数据平面。控制平面提供该区域内的集群管理(创建、停止、销毁)API 以及计费系统,数据平面则运行用户启动的 MyScale 数据库集群,它们运行在同一个数据平面中的多个可用区。

d3cfaf40d82eebcfb0b3489bed476865.jpeg

MyScale 的所有服务都部署在亚马逊云科技的托管 Kubernetes 服务 EKS 上。EKS 提供了高度可用、安全及可扩展的 Kubernetes 环境,这使得 MyScale 可以充分利用 Kubernetes 的强大功能,如服务发现、负载均衡、自动扩缩容、安全隔离等。借助 Amazon EKS 上的 Cluster Autoscaler,MyScale 可以根据用户工作负载的需求,快速地启动、停止和扩展实例,对 EKS 的节点池进行扩缩容。

为了保证用户集群之间的隔离,MyScale 利用了 Kubernetes 的命名空间(namespace)特性。在数据平面中,用户创建的每个 MyScale 数据库集群对应 Kubernetes 中的一个命名空间,这样就可以最小化集群之间的相互影响。每个集群对应的命名空间中包含数据库节点、负载均衡服务和元数据存储服务。

用户在使用 MyScale 云服务时,可以通过运行在全局控制平面上的 Web UI 来创建和管理 MyScale 集群。用户在 Web UI 创建 MyScale 集群后,云服务的后端会调用相应区域控制平面中的接口,将 MyScale 数据库集群的具体参数和配置转成一个 Kubernetes 中的 CRD 资源配置文件,保存在该区域的控制平面中。对应的区域数据平面中运行的 Cluster Manager 会监听到区域控制平面中数据库集群 CRD 资源的变化情况,并做出相应的操作,在数据平面中创建或修改实际的 MyScale 数据库集群。在 MyScale 数据库集群启动后,用户可以通过 Web UI、Python/Java/NodeJS 客户端、HTTP 接口以及包括 Langchain 和 LlamaIndex 在内的 LLM 应用框架来访问 MyScale 数据库。

我们选择了配备基于 NVMe 的本地 SSD 盘的 EC2 实例来部署 MyScale 数据库。和大部分选择纯内存 HNSW 向量索引算法的向量数据库不同,MyScale 自研的 MSTG 算法允许将向量数据缓存在本地 NVMe SSD 盘中,因此 MyScale 在为用户提供高性能的向量搜索的同时,大大节约了内存的使用。在我们的公开测试中,MyScale 超过了 Pinecone、Weaviate、Qdrant、Zilliz 等专有向量数据库,提供了最佳的性价比(QPS per dollar)。

在部署 MyScale 云服务时,我们使用 Crossplane 来实现对亚马逊云科技上的 EC2 和 EKS 服务的部署和管理。首先,我们通过 Crossplane 的 Amazon Provider 配置了对应的亚马逊云科技账户信息,使得 Crossplane 能够访问和操作我们的亚马逊云科技资源。然后,我们定义了 EC2 和 EKS 的 YAML 配置文件,通过这些文件,我们可以定义我们需要的服务器和 Kubernetes 集群的参数,如实例类型、集群大小等。通过应用这些配置文件,Crossplane 的 Amazon Provider 会调用 Amazon API 来创建和配置这些资源。

不仅如此,Crossplane 还能够定期同步这些资源的状态,使得我们可以通过 Kubernetes 的接口来监控和管理这些资源。当我们需要修改或删除这些资源时,只需要修改对应的 YAML 文件并重新应用,Crossplane 就会自动完成对应的操作。通过使用 Crossplane,我们能够以一种声明式、统一和自动化的方式来管理我们的云资源,大大提升了我们的工作效率和准确性。

在数据安全方面,MyScale 采用了 Teleport,一种先进的远程访问管理系统。Teleport 能够为开发者和运维人员提供通过密文连接安全地访问我们 Kubernetes 集群的能力。这不仅提升了系统的安全性,也提升了操作的便捷性。更重要的是,Teleport 具有全面的审计功能,能够详细记录所有会话和事件,这对于进行安全分析和满足合规性要求非常有帮助。这就意味着我们可以对任何操作有完全的可视化,从而更好地控制和保护 MyScale 云服务系统,为用户提供安全可靠的服务。

小结

这篇文章介绍了 MyScale,一个在亚马逊云科技上托管的向量数据库。MyScale 基于开源的在线分析处理(OLAP)数据库 ClickHouse 开发,集成了自主研发的多尺度树图(MSTG)向量索引算法,可以提供优秀的数据管理和结构化数据查询能力,同时也提供了性价比突出的向量搜索功能,以及结构化和非结构化联合分析、处理的功能,可以被广泛应用于图像检索、视频分析、自然语言理解等 AI 驱动的场景。

本篇作者

f1f6b6f8d42e61927986a22931d6b94f.jpeg

刘勤

刘勤博士是 MyScale 基础设施团队的负责人。之前,他曾在墨奇科技和华为诺亚方舟实验室工作。2016 年,刘勤在吕自成教授(Prof. John C.S. Lui)的指导下获得了香港中文大学(CUHK)计算机科学博士学位。在博士期间,他专注于图计算和流处理系统的研究。2012 年,他毕业于上海交通大学并获得计算机科学学士学位,并且是 ACM 班的成员。他在国际会议与期刊 KDD、VLDB、ICDE、DSN、CIKM 和 IEEE TKDE 上发表过多篇学术论文,并与同伴一起荣获了 2012 年 KDD Cup 冠军。

a080e62ec765eec9696319f4ccaeb271.jpeg

Kelvin Guo

亚马逊云科技资深解决方案架构师。主要技术方向为 MLOps,DevOps,容器,数据分析。20+年软件开发,项目管理,敏捷思想落地,工程效能咨询和落地经验。

fe605863740b56c6ef1799899b307da9.gif

3ac316da559ecaa30038e23b5cadd101.gif

听说,点完下面4个按钮

就不会碰到bug了!

35e82719035deb47477c8b4df6cfd32f.gif

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

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

相关文章

Supervisor配置和使用

Supervisor配置和使用 一、使用背景二、工具简介三、安装四、配置文件1. 位置2. 步骤 五、服务启动六、supervisorctl客户端管理七、常用操作指令八、示例九、配置项说明supervisored.conf配置项说明进程任务配置项说明 十、web页面监控 一、使用背景 目前在公司搭建了一套基于…

Mac最佳屏幕录像机:FoneLab Screen Recorder

FoneLab Screen Recorder是一款功能强大的屏幕录像机软件,它允许您在 Mac 上捕获视频、音频、在线教程等,您可以轻松自定义大小、编辑视频或音频等。如果您想录制会议、电影、电话、教程、电视节目、歌曲、快照或其他内容,FoneLab Screen Rec…

MRMC推机器人摄像机Polycam,可自动跟拍运动员

这款名为Polycam的电动相机机器人支持使用图像识别和人工智能技术来追踪运动员的动作,完全不需要人工摄像师的操作。 近日,据外媒报道,MRMC推出一款名为Polycam的电动相机机器人,其支持使用图像识别和人工智能技术来追踪运动员的…

使用Workerman做一个简单的录像直播功能

1、准备好项目 之前做过一个简单的聊天室,我是根据之前弄的聊天室改过来的。 参考:https://blog.csdn.net/qq_38231822/article/details/1128004572、大致思路 这些小东西都是自己没事捅咕玩的,随便写一写。概括来说的话就是将录像定时的转成…

livekit 简单上手教程

什么是livekit? livekit是一个开源的webrtc项目,基于pion实现了SFU架构的go程序。 它主要有以下几个特性: 可以水平扩展的sfu架构。有完整的sdk程序接口供开发人员使用。基于JWT进行身份验证,可与大部分系统进行权限集成。内置Tur…

【Supervisor】Supervisor使用教程

在项目中,经常有脚本需要常驻运行的需求。以PHP脚本为例,最简单的方式是: Copy $ nohup php cli.php & 这样能保证当前终端被关闭或者按CRTLC后,脚本仍在后台运行。但是没法保证脚本异常后自动重启等。 Supervisor 是用Py…

learnOpenGL_07_摄像机

1、 摄像机/观察空间 以摄像机的视角作为场景原点时场景中所有的顶点坐标:观察矩阵把所有的世界坐标变换为相对于摄像机位置与方向的观察坐标。要定义一个摄像机,需要它在世界空间中的位置、观察的方向、一个指向它右侧的向量以及一个指向它上方的向量。…

AWS助理架构师认证培训实操练习 | How to SSH using Windows

视频来源:B站《AWS 认证解决方案架构师 助理级 SAA-C03》 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:AWS助理架构师认证培训实操练习 | 汇总_热爱编程的通信…

supervisord初体验

Supervisor是一个客户端/服务器系统,允许其用户监视和控制类似UNIX的操作系统上的许多进程。 安装 1.supervisord是python的一个库可以直接用过pip来进行安装 pip install supervisor2.如果没有pip可以在PyPi[https://pypi.org/project/supervisor/]上下载supervi…

AWS助理架构师认证培训实操练习 | IAM Policies Hands on

视频来源:B站《AWS 认证解决方案架构师 助理级 SAA-C03》 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:AWS助理架构师认证培训实操练习 | 汇总_热爱编程的通信…

AWS助理架构师认证培训实操练习 | IAM MFA Hands On

视频来源:B站《AWS 认证解决方案架构师 助理级 SAA-C03》 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:AWS助理架构师认证培训实操练习 | 汇总_热爱编程的通信…

AWS SageMaker Studio Lab免费的机器福利利用起来~

国内无法访问Google Colab,所以有时候跑Python notebook比较麻烦,得倒腾到本地,如果自己的机器(比如笔记本)性能不行的话跑起来也很痛苦 现在有了免费的羊毛,AWS SageMaker Studio Lab,国内可用…

AWS助理架构师认证培训实操练习 | IAM Roles Hands On

视频来源:B站《AWS 认证解决方案架构师 助理级 SAA-C03》 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:AWS助理架构师认证培训实操练习 | 汇总_热爱编程的通信…

【笔记】MySQL行转列函数

GROUP_CONCAT()函数 创建表person_info,并插入数据 CREATE TABLE person_info (id bigint(20) NOT NULL AUTO_INCREMENT,name varchar(100) DEFAULT NULL,family varchar(100) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT8 DEFAULT CHARSETutf8;…

谷粒商城环境搭建二:开发环境统一

开发环境配置统一 Maven配置 查看maven信息 修改配置文件&#xff1a;apache-maven-3.3.9\conf\settings.xml# 配置阿里云镜像 <mirrors><mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name&…

htc hd2连上wifi却显示无法连接服务器,HTC HD2线刷官方ROM疑难问题解答

HTC HD2线刷官方ROM更新实用程序 (RUU)需要注意哪些问题呢&#xff1f;安致小编在这里为大家整理这篇 《HTC HD2线刷官方ROM疑难问题解答》&#xff0c;希望对大家线刷官方RUU有所帮助。 开始准备: 运行 ROM 更新实用程序 (RUU) 前&#xff0c;请确认下列事项&#xff1a; 1.An…

提取官方原生(RUU/.exe)ROM刷机文件

官方ROM提取刷机文件结构主要为&#xff1a; android-info.txt&#xff0c;boot.img&#xff0c;hboot_*.nb0&#xff0c;radio.img&#xff0c;rcdata.img&#xff0c;recovery.img&#xff0c;splash1.nb0&#xff0c;system.img&#xff0c;userdata.img 官方(.exe)ROM提取过…

HTC One V卡刷RUU准备工作 图文教程详解

为什么80%的码农都做不了架构师&#xff1f;>>> HTC One V卡刷RUU准备工作 图文教程详解 相对于线刷&#xff0c;HTC One V卡刷RUU更为方便快捷&#xff0c;不会和普通RUU那样这么容易出错&#xff0c;不必害怕刷机中发生断电等意外事故&#xff0c;也可以重启或者…

Elasticsearch-8.x.x安装启动后测试报错[WARN ][o.e.x.s.t.n.SecurityNetty4HttpServerTransport] [DESKTOP-0QU7RUU]

浏览器输入 IP:端口号后报错。&#xff08;*默认端口号9200&#xff0c;自定义端口号在elasticsearch.yml文件里http.port: 自定义端口&#xff09; [WARN ][o.e.x.s.t.n.SecurityNetty4HttpServerTransport] [DESKTOP-0QU7RUU] received plaintext http traffic on an https c…

HTC ONE X刷ruu的详细刷机教程

一&#xff1a;准备工作&#xff1a; 1&#xff1a;手机必须能用usb数据线电脑&#xff0c;因为是线刷&#xff0c;所以必须要有数据线 2&#xff1a;检查一下电脑&#xff0c;确保电脑上已经安装htc one m7的usb驱动了 2&#xff1a;下载ruu刷机包&#xff0c;下载适合一款…