您的位置 首页 > 德语词汇

droid是什么意思?什么是向量数据库

大家好,今天小编来为大家解答droid是什么意思这个问题,什么是向量数据库很多人还不知道,现在让我们一起来看看吧!

在这篇介绍性文章中,我们将介绍与向量数据库相关的概念,这是一种旨在存储、管理和搜索嵌入向量的新型技术。

在这篇介绍性文章中,我们将介绍与向量数据库相关的概念,这是一种旨在存储、管理和搜索嵌入向量的新型技术。矢量数据库正在越来越多的应用中使用,包括但不限于图像搜索、推荐系统、文本理解、视频摘要、药物发现、股票市场分析等等。

droid是什么意思?什么是向量数据库

数据无处不在。在互联网的早期,数据大多是结构化的,可以很容易地在关系数据库中存储和管理。以图书数据库为例:

跨基于表的数据进行存储和搜索(如上图所示)正是关系数据库的设计初衷。在上面的示例中,数据库中的每一行代表一本书,而列对应于特定的信息类别。当用户通过在线服务查找书籍时,他们可以通过数据库中存在的任何列名进行查找。例如,查询作者姓名为BillBryson的整体结果会返回Bryson的所有书籍。

随着互联网的发展和发展,非结构化数据杂志文章、共享照片、短视频等)变得越来越普遍。与结构化数据不同,没有简单的方法可以将非结构化数据的内容存储在关系数据库中。想象一下,例如,给定一组不同角度的鞋子图片,尝试搜索相似的鞋子;这在关系数据库中是不可能的,因为仅仅从图像的原始像素值中理解鞋子的款式、尺寸、颜色等是不可能的。

这将我们带到了矢量数据库。非结构化数据的日益普及导致机器学习模型的使用稳步上升,这些模型经过训练可以理解这些数据。Word2vec是一种自然语言处理(NLP)算法,它使用神经网络来学习单词关联,是一个众所周知的早期例子。word2vec模型能够将单个单词(多种语言,而不仅仅是英语)转换为浮点值列表或向量。由于机器学习模型的训练方式,彼此接近的向量表示彼此相似的单词,因此称为嵌入向量。我们将在下一节中更详细地介绍(使用代码!)。

将一段非结构化数据转换为数值列表的想法并不是什么新鲜事*。随着深度学习在学术界和工业界的发展,表示文本、音频和图像的新方法应运而生。所有这些表示的一个共同组成部分是它们使用由训练有素的深度神经网络生成的嵌入向量。回到word2vec的例子,我们可以看到生成的嵌入包含重要的语义信息。

*早期的计算机视觉和图像处理依赖于局部特征描述符将图像变成嵌入向量的“包”——每个检测到的关键点一个向量。SIFT、SURF和ORB是您可能听说过的三个众所周知的特征描述符。这些特征描述符虽然对匹配图像很有用,但被证明是表示音频(通过频谱图)和图像的一种相当糟糕的方式。

fromgensim.modelsimportKeyedVectors\nmodel=KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin',binary=True)示例:苹果、公司、水果……或两者兼而有之?

“苹果”这个词既可以指公司,也可以指美味的红色水果。在这个例子中,我们可以看到Word2Vec保留了这两种含义。

print(model.most_similar(positive=['samsung','iphone'],negative=['apple'],topn=1))\nprint(model.most_similar(positive=['fruit'],topn=10)[9:])

[('droid_x',0.6324754953384399)]。

[('苹果',0.6410146951675415)]。

“Droid”指的是三星首款4GLTE智能手机(“Samsung”+“iPhone”-“Apple”=“Droid”),而“apple”是第10个最接近“fruit”的词。

虽然有更新更好的深度学习算法/模型用于生成词嵌入(ELMo、GPT-2和BERT,仅举几例),但概念保持不变。

从多层神经网络生成的向量具有足够的高级信息以适用于各种任务。

向量嵌入不仅限于自然语言。在下面的示例中,我们使用该towhee库为三个不同的图像生成嵌入向量,其中两个具有相似的内容:

现在让我们使用towhee为我们的图像生成嵌入。

fromtowheeimportpipeline\np=pipeline('image-embedding')\ndog0_vec=p(dog0)\ndog1_vec=p(dog1)\ncar_vec=p(car)\n

fromsklearn.preprocessingimportnormalize\ndog0_vec=normalize(dog0_vec[0])\ndog1_vec=normalize(dog1_vec[0])\ncar_vec=normalize(car_vec[0])\n现在让我们计算距离

importnumpyasnp\nprint('dog0todog1distance:',np.linalg.norm(dog0_vec-dog1_vec))\nprint('dog0tocardistance:',np.linalg.norm(dog0_vec-car_vec))\n

dog0到dog1的距离:0.59794164

现在我们已经看到了向量嵌入的表示能力,让我们花点时间简要讨论一下向量的索引。与关系数据库一样,向量数据库需要可搜索才能真正有用——仅存储向量及其相关元数据是不够的。这称为最近邻搜索,或简称NN搜索,由于提出的解决方案数量之多,因此可以将其单独视为机器学习和模式识别的一个子领域。

矢量搜索通常分为两个部分——相似度度量和索引。相似度度量定义了如何评估两个向量之间的距离,而索引是一种有助于搜索过程的数据结构。相似度度量相当简单——最常见的相似度度量是L2范数的倒数(也称为欧几里得距离)。另一方面,存在各种各样的指数,每一种指数都有自己的优点和缺点。我们不会在这里详细介绍向量索引(这是另一篇文章的主题?),只知道没有它们,单个查询向量将需要与数据库中的所有其他向量进行比较,从而使查询过程长得难受。

现在我们了解了嵌入向量的表示能力,并对向量搜索的工作原理有了一个很好的概括,现在是时候将这两个概念放在一起了——欢迎来到向量数据库的世界。向量数据库专门用于存储、索引和查询嵌入向量,这些向量是通过机器学习模型传递非结构化数据而生成的。

当扩展到大量向量嵌入时,跨嵌入向量(即使使用索引)进行搜索可能会非常昂贵。尽管如此,除了指定您选择的索引算法和相似性度量之外,最好和最先进的向量数据库将允许您插入和搜索数百万甚至数十亿个目标向量。

与生产就绪的关系数据库一样,向量数据库在部署到实际生产环境之前应该满足几个关键性能目标:

随着数据以前所未有的速度生成,通过矢量数据库了解所有数据将变得越来越重要。

Milvus是一个开源矢量数据库,是该领域的领导者。Milvus提供了许多演示,您可以使用它们来评估向量数据库的功能和用例。随着Milvus2.0GA的发布,Milvus现在是一个云原生的容错系统,能够扩展到数十亿个向量之外。设置通过一个简单的docker命令完成,而跨Milvus的插入和查询可以通过我们的Python、Go、Node.js或Java绑定来完成。欲了解更多信息,欢迎您访问milvus.io。

我们希望这篇文章中的信息对您有用。我们将定期发布这些帖子,因此请随时回来获取更多关于矢量数据库、非结构化数据或一般AI/ML的材料。

翻译自https://dzone.com/articles/what-are-vector-databases?fromrel=true

如果你还想了解更多这方面的信息,记得收藏关注本站。

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023