您当前的位置:首页 > 电脑百科 > 数据库 > 百科

一文带你全面理解什么是向量数据库?

时间:2023-07-17 21:03:56  来源:51CTO  作者:

译者丨朱先忠

近些年来,向量数据库引起业界的广泛关注,一个相关事实是许多向量数据库初创公司在短期内就筹集到数百万美元的资金。

你很可能已经听说过向量数据库,但也许直到现在才真正关心向量数据库——至少,我想这就是你现在阅读本文的原因……

如果你阅读本文只是为了简单回答上面的问题,那就让我们直接进入话题吧。

1、定义:什么是向量数据库?

向量数据库是一种以向量嵌入(高维向量)方式存储和管理非结构化数据(如文本、图像或音频)的数据库,以便于快速查找和检索类似对象。

如果这个定义只会引起人们更多的理解上的混乱,那么就让我们一步一步来进行解释。本文的灵感来自WIRED的5级视频系列(https://www.wired.com/video/series/5-levels),本文将揭示向量数据库在以下三个难度级别中的内容:

  • 最浅显的解释
  • 向数字原住民和技术爱好者解释向量数据库
  • 向工程师和数据专业人员解释向量数据库

2、向量数据库:最浅面的解释

这有点离题,但你知道我不明白的是什么吗?当人们按颜色排列书架时,哎哟!当他们不知道书的封面是什么颜色时,他们是如何找到书的?

图片

1)向量数据库背后的直觉

如果你想快速找到一本特定的书,那么,按类型和作者排列书架比按颜色排列更有意义。这就是为什么大多数图书馆都是这样组织的原因,以便帮助你快速找到你想要的东西。

但是,你如何根据一个查询而不是一个流派或作者来找到可以阅读的书籍呢?如果你想读一本书,例如:类似于《饥饿的毛毛虫》或关于一个和你一样喜欢吃美食的主角?

如果你没有时间浏览书架,最快的方法是向图书管理员征求他们的推荐,因为他们读过很多书,会确切地知道哪本书最适合你的查询。

在组织书籍的例子中,你可以将图书管理员视为向量数据库,因为向量数据库旨在存储关于对象(例如书籍)的复杂信息(例如书籍的情节)。因此,向量数据库可以帮助你根据特定的查询(例如,一本关于…的书)而不是一些预定义的属性(例如,作者)来查找对象,就像图书管理员一样。

3、向数字原住民和技术爱好者解释向量数据库

现在,让我们继续探讨图书馆的例子,并获得更多的技术知识:当然,现在,在图书馆中搜索书籍的技术比只按类型或作者搜索更先进了一些。

如果你去图书馆,通常角落里会有一台电脑,可以帮助你找到一本具有更具体属性的书,比如书名、国际标准图书编号、出版年份或一些关键词。根据输入的值,就可以查询存储可用书籍信息的数据库。不过,这个数据库通常是一个传统的关系数据库。

图片

1)关系数据库和向量数据库之间的区别是什么?

关系数据库和向量数据库之间的主要区别在于它们存储的数据类型。虽然关系数据库是为适合表的结构化数据而设计的,但是,向量数据库即是为非结构化数据(如文本或图像)而设计的。

存储的数据类型也会影响数据的检索方式:在关系数据库中,查询结果基于特定关键字的匹配。在向量数据库中,查询结果是基于相似性进行的。

你可以把传统的关系数据库想象成电子表格。它们非常适合存储结构数据,例如关于一本书的基本信息(例如,标题、作者、ISBN等),因为这类信息可以存储在列中,非常适合过滤和排序。

使用关系数据库,你可以快速获取所有书籍,例如儿童书籍,并且标题中有“毛虫”。

但是,如果你喜欢《饥饿的毛毛虫》是关于食物的呢?你可以试着搜索关键词“食物”,但除非在书的摘要中提到关键词“食品”,否则你甚至找不到“非常饥饿的毛毛虫”。相反,你可能会以一堆烹饪书和失望告终。

这是关系数据库的一个限制:你必须添加你认为某人可能需要的所有信息才能找到该特定项目。但是,你怎么知道该添加哪些信息以及添加多少信息呢?添加所有这些信息往往非常耗时,并且不能保证完整性。

然而,这正是向量数据库发挥作用的地方!

不过,你首先需要先来了解一下一个叫做向量嵌入(vector embeddings)的概念。

今天的机器学习(ML)算法可以将给定的对象(例如,单词或文本)转换为保留该对象信息的数字表示。想象一下,你给一个ML模型一个词(例如,“食物”),然后这个ML模型发挥了它的魔力,给你返回了一长串数字。这个长长的数字列表是单词的数字表示,即称为向量嵌入。

因为这些嵌入是一长串数字,所以我们称之为高维。让我们假设这些嵌入只是三维的,以便将它们可视化,如下所示。

图片

你可以看到,类似的单词,如“饥饿”(hungry)、“口渴”(thirsty)、“食物”(food)和“饮料”(drink),都被分组在一个相似的角落里,而其他单词如“自行车”(bicycle)和“汽车”(car),则在这个向量空间中靠近在一起,但在不同的角落里。

数字表示使我们能够将数学计算应用于通常不适合计算的对象,如单词。例如,除非将单词替换为其嵌入;否则,以下计算将不起作用:

drink - food + hungry = thirsty

因为我们可以使用嵌入进行计算,所以我们也可以计算一对嵌入对象之间的距离。两个嵌入对象之间的距离越近,它们就越相似。

正如你所看到的,向量嵌入非常酷。

让我们回到前面的例子,假设我们将每本书的内容嵌入到图书馆中,并将这些嵌入存储在向量数据库中。现在,当你想找到一本“主角喜欢食物的童书”时,你的查询也会被嵌入,并返回与你的查询最相似的书籍,例如《饥饿的毛毛虫》或《金发姑娘与三只熊》。

2)向量数据库的使用情况是什么?

事实上,向量数据库在大型语言模型(LLM)的宣传开始之前就已经存在了。最初,它们被应用于推荐系统中,因为它们可以快速找到给定查询的相似对象。但是,由于它们可以为大型语言模型提供长期记忆,因此最近也被应用于问答应用程序中。

4、向工程师和数据专业人员解释向量数据库

如果在打开本文之前,你已经猜到向量数据库可能是存储向量嵌入的一种方式,并且只想知道向量嵌入的背后是什么,那么,现在让我们来深入了解并讨论一下相关的算法。

1)向量数据库是如何工作的?

向量数据库能够快速检索查询中的类似对象,因为它们已经预先计算过了。其基本概念被称为近似最近邻(Approximate Nearest Neighbor:ANN)搜索,它使用不同的算法来索引和计算相似性。

正如你所能想象的,当你有数百万个嵌入时,用简单的k近邻(kNN)算法计算查询和每个嵌入对象之间的相似性可能会变得相当耗时。而使用ANN搜索算法,你可以以一定的准确性换取速度,并检索与查询近似最相似的对象。

索引:为此,向量数据库对向量嵌入进行索引。此步骤将向量映射到数据结构,从而实现更快的搜索。

你可以把索引看作是把图书馆里的书分成不同的类别,比如作者或流派。但由于嵌入可以包含更复杂的信息,进一步的分类可能是“主角的性别”或“情节的主要位置”。因此,索引可以帮助您检索所有可用向量的较小部分,从而加快检索速度。

我们不会讨论索引算法的技术细节;但是,如果你有兴趣进一步阅读,你可能想从查找分层导航小世界(Hierarchical Navigable Small World:HNSW)开始。

相似性度量:为了从索引向量中找到查询的最近邻居,向量数据库应用相似性度量。常见的相似性度量包括余弦相似性、点积、欧几里得距离、曼哈顿距离和汉明距离(Hamming distance)。

2)向量数据库相对于将向量嵌入存储在NumPy数组中的优势是什么?

我经常(已经)遇到的一个问题是:我们不能只使用NumPy数组来存储嵌入吗?——当然,如果你没有很多嵌入,或者你只是在做一个有趣的爱好项目,你可以这样做。但正如你已经猜到的,当你有很多嵌入时,向量数据库会明显更快,而且你不必把所有东西都保存在内存中。

最后,我仅会简短地说一句,因为伊桑·罗森塔尔在解释使用向量数据库和使用NumPy数组之间的区别方面做得比我写的要好得多。有关此内容的更多信息,请参考他的文章《你真的需要向量数据库吗?》,网址是:www.ethanrosenthal.com。

——译者介绍——

朱先忠,51CTO社区编辑,51CTO专家博客、讲师,潍坊一所高校计算机教师,自由编程界老兵一枚。

原文链接:https://towardsdatascience.com/explAIning-vector-databases-in-3-levels-of-difficulty-fc392e48ab78



Tags:向量数据库   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
向量数据库落地实践
本文基于京东内部向量数据库vearch进行实践。Vearch 是对大规模深度学习向量进行高性能相似搜索的弹性分布式系统。详见: https://github.com/vearch/zh_docs/blob/v3.3.X/do...【详细内容】
2024-04-03  Search: 向量数据库  点击:(4)  评论:(0)  加入收藏
简易百科之什么是向量数据库
随着大数据时代的到来,数据存储和处理成为了一个重要的问题。传统的关系型数据库已经无法满足一些场景的需求,例如大规模高维数据的处理和分析。在这样的背景下,向量数据库应运...【详细内容】
2024-01-15  Search: 向量数据库  点击:(166)  评论:(0)  加入收藏
腾讯云把向量数据库“卷”到哪一步了?
“不是我不明白,这世界变化快”,崔健在20世纪写下的这句歌词,放在刚刚过去的2023年,也同样适用。技术风向的变化之快,让不少人感到惊讶,向量数据库这一年的潮起潮落,就是一个典型的...【详细内容】
2024-01-14  Search: 向量数据库  点击:(65)  评论:(0)  加入收藏
纯向量数据库和向量插件都有局限,那未来发展有其他方向吗?
作者 | 张颖峰导读:向量数据库的争议差不多一年了,但我们一直缺少一篇能透彻讲解向量数据库相关问题的文章,这导致在这个领域的讨论一直没有得到充分的澄清。在这篇文章中,我们将...【详细内容】
2024-01-11  Search: 向量数据库  点击:(13)  评论:(0)  加入收藏
探秘向量数据库:从原理到商业应用的旅程
当我们谈及数据库技术,大部分人的第一反应可能是传统的关系型数据库,如MySQL、Oracle或SQL Server。这些数据库技术凭借其成熟稳定的关系型数据模型,已经在企业级应用中占据了...【详细内容】
2023-12-28  Search: 向量数据库  点击:(111)  评论:(0)  加入收藏
一文了解托管在亚马逊云科技的向量数据库MyScale
MyScale是一款完全托管于亚马逊云科技,支持SQL的高效向量数据库。MyScale的优势在于,它在提供与专用向量数据库相匹敌甚至优于的性能的同时,还支持完整的SQL语法。以下内容,将阐...【详细内容】
2023-12-28  Search: 向量数据库  点击:(97)  评论:(0)  加入收藏
如何评估向量数据库
导语:没有通用的“最 佳”向量数据库——选择取决于您的需求。评估可扩展性、功能性、性能以及与用例的兼容性至关重要。在当今数据驱动的世界里,非结构化数据的指...【详细内容】
2023-12-26  Search: 向量数据库  点击:(109)  评论:(0)  加入收藏
解读向量数据库
不论是RAG,还是Agent,几乎每个LLM 驱动的应用程序都可能会用到向量数据库。那么,向量数据库是什么?与传统数据库有何不同? 又如何选择向量数据库呢? 本文是老码农关于向量数据库的...【详细内容】
2023-11-27  Search: 向量数据库  点击:(133)  评论:(0)  加入收藏
初识向量数据库与pgvector实践
随着大语言模型的兴起,向量数据库正愈发受到人们的关注。作为对向量数据库的一名小白,近期简单对这一新技术方向做了些了解,特分享给大家。 1. 大火的向量数据库 1).什么是向...【详细内容】
2023-11-17  Search: 向量数据库  点击:(208)  评论:(0)  加入收藏
国内首个向量数据库标准发布
科技日报北京11月15日电 (记者都芃)15日,中国信通院联合腾讯云计算(北京)有限责任公司、中移(苏州)软件技术有限公司等多家企业共同编制的、国内首个向量数据库标准正式发布,...【详细内容】
2023-11-16  Search: 向量数据库  点击:(211)  评论:(0)  加入收藏
▌简易百科推荐
向量数据库落地实践
本文基于京东内部向量数据库vearch进行实践。Vearch 是对大规模深度学习向量进行高性能相似搜索的弹性分布式系统。详见: https://github.com/vearch/zh_docs/blob/v3.3.X/do...【详细内容】
2024-04-03  京东云开发者    Tags:向量数据库   点击:(4)  评论:(0)  加入收藏
原来 SQL 函数是可以内联的!
介绍在某些情况下,SQL 函数(即指定LANGUAGE SQL)会将其函数体内联到调用它的查询中,而不是直接调用。这可以带来显著的性能提升,因为函数体可以暴露给调用查询的规划器,从而规划器...【详细内容】
2024-04-03  红石PG  微信公众号  Tags:SQL 函数   点击:(3)  评论:(0)  加入收藏
如何正确选择NoSQL数据库
译者 | 陈峻审校 | 重楼Allied Market Research最近发布的一份报告指出,业界对于NoSQL数据库的需求正在持续上升。2022年,全球NoSQL市场的销售额已达73亿美元,预计到2032年将达...【详细内容】
2024-03-28    51CTO  Tags:NoSQL   点击:(13)  评论:(0)  加入收藏
为什么数据库连接池不采用 IO 多路复用?
这是一个非常好的问题。IO多路复用被视为是非常好的性能助力器。但是一般我们在使用DB时,还是经常性采用c3p0,tomcat connection pool等技术来与DB连接,哪怕整个程序已经变成以...【详细内容】
2024-03-27  dbaplus社群    Tags:数据库连接池   点击:(12)  评论:(0)  加入收藏
八个常见的数据可视化错误以及如何避免它们
在当今以数据驱动为主导的世界里,清晰且具有洞察力的数据可视化至关重要。然而,在创建数据可视化时很容易犯错误,这可能导致对数据的错误解读。本文将探讨一些常见的糟糕数据可...【详细内容】
2024-03-26  DeepHub IMBA  微信公众号  Tags:数据可视化   点击:(6)  评论:(0)  加入收藏
到底有没有必要分库分表,如何考量的
关于是否需要进行分库分表,可以根据以下考量因素来决定: 数据量和负载:如果数据量巨大且负载压力较大,单一库单一表可能无法满足性能需求,考虑分库分表。 数据增长:预估数据增长...【详细内容】
2024-03-20  码上遇见你  微信公众号  Tags:分库分表   点击:(13)  评论:(0)  加入收藏
在 SQL 中写了 in 和 not in,技术总监说要炒了我……
WHY?IN 和 NOT IN 是比较常用的关键字,为什么要尽量避免呢?1、效率低项目中遇到这么个情况:t1表 和 t2表 都是150w条数据,600M的样子,都不算大。但是这样一句查询 ↓select *...【详细内容】
2024-03-18  dbaplus社群    Tags:SQL   点击:(5)  评论:(0)  加入收藏
应对慢SQL的致胜法宝:7大实例剖析+优化原则
大促备战,最大的隐患项之一就是慢SQL,对于服务平稳运行带来的破坏性最大,也是日常工作中经常带来整个应用抖动的最大隐患,在日常开发中如何避免出现慢SQL,出现了慢SQL应该按照什...【详细内容】
2024-03-14  京东云开发者    Tags:慢SQL   点击:(4)  评论:(0)  加入收藏
过去一年,我看到了数据库领域的十大发展趋势
作者 | 朱洁策划 | 李冬梅过去一年,行业信心跌至冰点2022 年中,红衫的一篇《适应与忍耐》的报告,对公司经营提出了预警,让各个公司保持现金流,重整团队,想办法增加盈利。这篇报告...【详细内容】
2024-03-12    InfoQ  Tags:数据库   点击:(26)  评论:(0)  加入收藏
SQL优化的七个方法,你会哪个?
一、插入数据优化 普通插入:在平时我们执行insert语句的时候,可能都是一条一条数据插入进去的,就像下面这样。INSERT INTO `department` VALUES(1, '研发部(RD)', &#39...【详细内容】
2024-03-07  程序员恰恰  微信公众号  Tags:SQL优化   点击:(19)  评论:(0)  加入收藏
站内最新
站内热门
站内头条