AI时代新宠,向量数据库

news2024/11/16 1:45:36

随着生成式人工智能(GAI)应用以及大语言模型(LLM)的快速发展,一种新型数据库也获得了市场和资本的重点关注,它就是向量数据库(Vector Database)。

向量数据库简介

向量数据库是一种专门用于存储和处理向量的数据库。向量数据库使用专门的算法和数据结构来支持相似性搜索,通常用于机器学习或数据挖掘,侧重于性能、可扩展性和灵活性。向量数据库可以帮助 AI 模型理解和储存长期记忆等问题,以完成复杂的任务,加速应用场景落地。

在这里插入图片描述
向量数据库采用嵌入向量(embedding vector)技术,对非结构化数据(包括文本、图片、视频、音频等)进行特征抽象。数学上,嵌入向量是一个浮点数或二进制数的数组,即 N 维特征向量空间中的向量。

向量数据库能够将向量存储为高维点并且高效、快速地查找 N 维空间中的最近邻。这些功能通常由近似最近邻搜索(ANN)提供支持,并使用分层可导航小世界(HNSW)和倒排文件索引(IVF)等算法构建。常见的相似性度量包括余弦相似性、点积、欧几里得距离、曼哈顿距离和汉明距离。

向量数据库还提供了其他功能,例如数据管理、容错、身份验证和访问控制以及查询引擎。

向量数据库的应用场景非常广泛,包括:推荐系统、图像检索、自然语言处理、人脸识别和图像搜索、音频识别、实时数据分析、物联网以及生物信息学等。

主流向量数据库

数据库排名网站 DB-Engines 列出了常见的一些向量数据库,包括专用的向量数据库和基于传统数据库的扩展功能。

在这里插入图片描述
接下来我们介绍其中常见的几个向量数据库。

Milvus

Milvus 是一款云原生的开源向量数据库,专为向量相似性搜索和 AI 应用赋能。

在这里插入图片描述

Milvus 是一款云原生向量数据库,采用存储与计算分离的架构设计,所有组件均为无状态组件,极大地增强了系统弹性和灵活性。整个系统分为四个层面:

  • 接入层(Access Layer)。系统的门面,由一组无状态 proxy 组成。对外提供用户连接的 endpoint,负责验证客户端请求并合并返回结果。
  • 协调服务(Coordinator Service)。系统的大脑,负责分配任务给执行节点。协调服务共有四种角色,分别为 root coord、data coord、query coord 和 index coord。
  • 执行节点(Worker Node)。系统的四肢,负责完成协调服务下发的指令和 proxy 发起的数据操作语言(DML)命令。执行节点分为三种角色,分别为 data node、query node 和 index node。
  • 存储服务 (Storage)。系统的骨骼,负责 Milvus 数据的持久化,分为元数据存储(meta store)、消息存储(log broker)和对象存储(object storage)三个部分。

在这里插入图片描述
Milvus 已有应用场景包括:

  • 图片检索系统。以图搜图,从海量数据库中即时返回与上传图片最相似的图片。
  • 视频检索系统。将视频关键帧转化为向量并插入 Milvus,便可检索相似视频,或进行实时视频推荐。
  • 音频检索系统。快速检索海量演讲、音乐、音效等音频数据,并返回相似音频。
  • 分子式检索系统。超高速检索相似化学分子结构、超结构、子结构。
  • 推荐系统。根据用户行为及需求推荐相关信息或商品。
  • 智能问答机器人。交互式智能问答机器人可自动为用户答疑解惑。

Pipecone

Pipecone 是一个托管的、云原生的向量数据库,具有简单的API和无需基础架构的优势。

在这里插入图片描述
Pinecone具有以下特点:

  • 快速:即使有数十亿个条目,也可以获得超低的查询延迟。
  • 实时:添加、编辑或删除数据时,可以获得实时的索引更新。
  • 过滤:将向量搜索与元数据过滤器相结合,以获得更相关、更快速的结果。
  • 完全托管:轻松开始、使用和扩展,我们会让事情保持平稳和安全。

Pinecone适用于广泛的应用程序。以下是一些最常见的应用程序:

  • 语义文本搜索:使用像NLP转换器和句子嵌入模型将文本数据转换为向量嵌入,然后使用Pinecone索引和搜索这些向量。
  • 生成问答:从Pinecone检索与查询相关的上下文,并将其传递给像OpenAI这样的生成模型,以生成由真实数据来源支持的答案。
  • 混合搜索:在一个查询中执行语义和关键字搜索,并将结果组合以获得更相关的结果。
  • 图像相似度搜索:将图像数据转换为向量嵌入,并使用Pinecone构建索引。然后将查询图像转换为向量并检索相似图像。
  • 产品推荐:基于代表用户的向量生成电子商务的产品推荐。

Chroma

Chroma 是一个开源向量嵌入数据库,它使得构建 LLM 应用更加容易。通过将知识、事实和技能可插件化到大语言模型,Chroma 更易于构建大语言模型应用。

在这里插入图片描述
Chroma 提供了以下工具:

  • 存储嵌入及其元数据
  • 嵌入文档和查询
  • 搜索嵌入

Chroma 目前处于 Alpha 阶段,不适合生产使用。

Weaviate

Weaviate 是一个开源的向量数据库,可以存储对象、向量,支持将矢量搜索与结构化过滤与云原生数据库容错和可拓展性等能力相结合。

在这里插入图片描述
Weaviate 是一个低延迟的向量数据库,它支持多种媒体类型(如文本、图片等),并且具有语义搜索、问题答案提取、分类等功能,还支持可定制的模型(例如 PyTorch/TensorFlow/Keras)。它完全使用 Go 语言构建,存储了对象和向量,允许将向量搜索与结构化过滤器相结合,并具有云原生数据库的容错性。可以通过 GraphQL、REST 和各种客户端编程语言进行访问。

pgvector

pgvector 是基于 PostgreSQL 数据库的扩展插件,支持向量数据的存储和相似性搜索。

在这里插入图片描述
pgvector 支持精确和近似最近邻搜索、L2 距离、内积和余弦距离、各种开发语言以及 PostgreSQL 数据库功能。

其他产品

除了以上向量数据库之外,还有很多相关产品,包括:Qdrant、腾讯云向量数据库、Vearch、星环科技(Transwarp Hippo)等。

关于一些常见向量数据库的性能比较,可以参考 VectorDBBench。VectorDBBench 提供多个主流向量数据库和云服务的性能测试结果。

在这里插入图片描述

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

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

相关文章

点击跳到详情页

父页面 <template><view class"order-list"><cu-custom bgColor"bg-gradual-blue" :isBack"true"><block slot"content">荒料管理</block></cu-custom><view class"" ><!-- 订…

【Python Numpy教程】切片和索引

文章目录 前言一、切片和索引是什么&#xff1f;二、数组索引操作示例代码12.3 示例代码22.4 示例代码3 三、数组切片3.1 最基础的数组切片1. 切片格式&#xff1a;2. 如何使用&#xff1a;3. 示例代码&#xff1a; 3.2 切片中包括省略号基本格式1. 单个省略号示例&#xff1a;…

Linux系统编程:IO系统总结

stdio标准IO 标准IO都是一些C语言的函数&#xff0c;注意与文件IO的系统调用函数区别开。 fopen 函数描述&#xff1a; 第一个参数填要打开的文件路径&#xff0c;第二个参数填以什么形式打开&#xff08;读or写or其它&#xff09;。 在我们学习fopen函数时&#xff0c;查看…

Vue基础之购物车案例

个人名片&#xff1a; &#x1f60a;作者简介&#xff1a;一名大二在校生 &#x1f921; 个人主页&#xff1a;坠入暮云间x &#x1f43c;座右铭&#xff1a;懒惰受到的惩罚不仅仅是自己的失败&#xff0c;还有别人的成功。 &#x1f385;**学习目标: 坚持每一次的学习打卡 经过…

非关系型数据库Redis的安装【Linux】及常用命令

前言 Redis&#xff08;Remote Dictionary Server&#xff09;是一种开源的内存数据库管理系统&#xff0c;它以键值存储方式来存储数据&#xff0c;并且支持多种数据结构&#xff0c;如字符串、哈希、列表、集合、有序集合等。Redis最初由Salvatore Sanfilippo开发&#xff0c…

WiFi模块在智能家居中的应用与优化

智能家居技术的迅速发展已经改变了我们对家庭的定义。WiFi模块作为智能设备连接的核心&#xff0c;扮演着连接和控制智能家居生态系统的关键角色。本文将深入研究WiFi模块在智能家居中的应用&#xff0c;同时探讨如何通过优化来提升其性能和用户体验。 1. 智能家居中WiFi模块的…

QSqlTableModel结合使用数据库心得

文章目录 目的QSqlTableModel采用Model-View-Delegate(模型视图代理)框架的整体结构QT数据库组件用户界面层(UI Layer)SQL接口层(SQL API Layer)驱动程序层(Driver Layer)实现翻页功能实现数据库查询功能QSqlDatabaseQSqlQueryQSqlRecord目的 1: 了解QSqlTableMode 与 数据库…

基于wireguard与NAT实现windows10代理服务器

参考文章&#xff1a;https://blog.csdn.net/babytiger/article/details/127111474 一、 下载windows 安装包 下载wireguard安装包 二、 配置服务端&#xff1a; 新建空隧道并保存为server1&#xff0c;配置如下&#xff1a; 点击保存&#xff0c;并连接&#xff0c;多了个se…

STM32-创建项目流程

一、基于STM官网得库进行开发 准备工作&#xff1a;下载STM库文件 1、创建项目文件夹 2、在keil 中new uVision project,然后选择刚刚创建得文件夹&#xff0c;在文件夹里面创建一个文件&#xff0c;用来存放这个项目&#xff0c;然后在文件夹里面&#xff0c;写个文件名&am…

HHDBCS扩展数据库类型

为应对市面上的数据库种类繁多的问题&#xff0c;HHDBCS设置了扩展数据库功能。 在登陆界面点击“工具”&#xff0c;选择“扩展数据库类型”&#xff1b; 注&#xff1a;HHDBCS支持已kingbase&#xff0c;本文仅用来举例。 填入名称、所需数据库的信息&#xff0c;上传驱动…

Cesium 展示——实现右键菜单功能

文章目录 需求分析需求 在 Cesium 上实现右键菜单功能,使得对Cesium上的实体或其他可进行操作 分析 参考自文章:实现右键出现菜单选项功能 分析该需求,流程如下 写一个 div 作为右键弹出的菜单选项 ——> 监听鼠标右键事件——> 添加 Cesium 鼠标右击事件——>…

Jmeter分布式压测 —— 易踩坑点

1、压测机 无论是从成本角度还是维护的难易方面&#xff0c;压测机的数量&#xff0c;适量就好。举个例子&#xff0c;8C16G的一台服务器&#xff0c;部署Jmeter后&#xff0c;根据我个人的测试比对数据&#xff0c;配置≤1500个线程数&#xff0c;最好。太多了性能损耗较大&a…

文件夹批量重命名:如何利用上级目录给多个文件夹进行高效重命名

在文件管理中&#xff0c;我们经常需要处理大量的文件和文件夹。其中&#xff0c;文件名过长或混乱的问题经常让我们感到困扰。这不仅影响了我们的工作效率&#xff0c;还可能导致一些错误。为了解决这个问题&#xff0c;我们可以用云炫文件管理器将“上级目录”批量重命名文件…

[一] C++入门

摘要&#xff1a;OOP(面向对象)&#xff0c;namespace&#xff0c;cout and cin&#xff0c;缺省参数&#xff0c;函数重载&#xff0c;引用&#xff0c;内联函数&#xff0c;auto&#xff0c;范围 for&#xff0c;nullptr 20世纪80年代&#xff0c;计算机界提出了OOP(object o…

我和“云栖大会”的双向奔赴

目录 引言初次参加云栖大会云栖大会带来的技术风向标本届大会最强技术有哪些&#xff1f;云栖大会对我职业生涯的影响个人对未来云栖大会的期待和建议结语 引言 想必大家对“云栖大会”并不陌生&#xff0c;“云栖大会”作为国内最具规模和影响力的云计算盛会&#xff0c;每年…

flink状态不能跨算子

背景 在flink中进行状态的维护和管理应该是我们经常做的事情&#xff0c;但是有些同学认为名称一样的状态在不同算子之间的状态是同一个&#xff0c;事实是这样吗&#xff1f; flink状态在保存点中的存放示意图 事实上&#xff0c;每个状态都归属于对应的算子&#xff0c;也…

用红黑树封装mapset【C++】

目录 前言 一&#xff0c;定义 二&#xff0c;完善set&map比较 三&#xff0c;迭代器实现 operator operator-- operator[] 四&#xff0c;发现问题 解决 修改一&#xff1a; set封装层面 修改二&#xff1a;正向迭代器修改 下期预告&#xff1a; 哈希&#x…

DataxWeb安装部署及使用--真香警告

DataxWeb安装部署及使用–真香警告 文章目录 1.Datax简介1.1 Datax是什么&#xff1f;1.2 Datax的架构1.3 设计理念1.4 DataX3.0框架设计1.5 DataX3.0插件体系1.6 DataX3.0核心架构1.6.1 核心模块介绍1.6.2 DataX调度流程 2.DataxWeb简介2.1 DataxWeb是什么&#xff1f;2.2 Dat…

在Ubuntu上安装Redis并学习使用get、set和keys命令

目录 安装Redis切换到root用户搜索redis相关软件包安装redis修改配置文件重启服务器使用redis客户端连接服务器 get与set命令keys 安装Redis 我们在Ubuntu20.04上进行Redis的安装 切换到root用户 使用su命令&#xff1a; 在终端中&#xff0c;输入su并按回车键。然后输入roo…

【产品应用】一体化伺服电机在焊接设备中的应用

随着制造业的不断发展&#xff0c;焊接设备在许多领域都得到了广泛应用&#xff0c;如汽车制造、机械加工、钢结构等领域。为了提高焊接设备的性能和效率&#xff0c;许多厂家开始采用一体化伺服电机作为焊接设备的主要驱动部件。本文将介绍一体化伺服电机在焊接设备中的应用背…