LangChain+LLM实战---向量数据库介绍

原文:Vector Databases

Embeddings是由人工智能模型(如大型语言模型)生成的,具有大量的属性或特征,使其表示难以管理。在人工智能和机器学习的背景下,这些特征代表了数据的不同维度,这些维度对于理解模式、关系和底层结构至关重要。

这就是为什么我们需要一个专门为处理这类数据而设计的专门数据库。向量数据库通过为Embeddings提供优化的存储和查询功能来满足这一要求。向量数据库具有传统数据库独立向量索引所不具备的能力,并且具有传统基于标量的数据库所缺乏的处理向量Embeddings的专门化能力。

使用向量Embeddings的挑战在于,传统的基于标量的数据库无法跟上此类数据的复杂性和规模,从而难以提取见解并执行实时分析。这就是向量数据库发挥作用的地方——它们被有意设计为处理这类数据,并提供充分利用数据所需的性能、可伸缩性和灵活性。

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

我们都知道传统数据库是如何工作的(或多或少)——它们将字符串、数字和其他类型的标量数据存储在行和列中。另一方面,向量数据库对向量进行操作,因此它的优化和查询方式是完全不同的。

在传统数据库中,我们通常查询数据库中值通常与查询完全匹配的行。在向量数据库中,我们应用相似度度量来找到与我们的查询最相似的向量。

向量数据库使用不同算法的组合,这些算法都参与了近似最近邻(ANN)搜索。这些算法通过散列、量化或基于图的搜索来优化搜索。

这些算法组合成一个管道,提供查询向量的邻居的快速和准确的检索。由于向量数据库提供了近似的结果,我们主要考虑的是准确性和速度之间的权衡。结果越准确,查询速度就越慢。然而,一个好的系统可以提供近乎完美的超快速搜索。

下面是向量数据库的常见管道::

img

  1. 索引:向量数据库使用PQ、LSH或HNSW等算法对向量进行索引。这一步将向量映射到一个数据结构,以实现更快的搜索;
  2. 查询:向量数据库将索引的查询向量与数据集中的索引向量进行比较,以找到最近的邻居(应用该索引使用的相似性度量);
  3. 后处理:在某些情况下,向量数据库从数据集中检索最后最近的邻居,并对它们进行后处理以返回最终结果。这一步可以包括使用不同的相似度度量对最近的邻居重新排序。

有了向量数据库,我们可以为我们的人工智能添加高级功能,比如语义信息检索、长期记忆等等。上图让我们更好地理解了向量数据库在这类应用中的作用。

为什么使用向量数据库?

在生产中,向量搜索是使用向量数据库的最常见原因。向量搜索将多个对象与搜索查询或主题项的相似性进行比较。为了找到相似的匹配项,您可以使用用于创建向量Embeddings的相同ML embedding模型将主题项或查询转换为向量。向量数据库比较这些对象的相似性以找到最接近的匹配,提供准确的结果,同时消除传统搜索技术可能返回的不相关结果。

让我们看看向量搜索的一些常见用例:

1. 语义搜索

搜索文本和文档通常可以通过两种方式完成。词汇搜索查找模式和精确的单词或字符串匹配,而语义搜索使用搜索查询或问题的含义并将其置于上下文中。向量数据库存储和索引来自自然语言处理模型的向量Embeddings,以理解文本字符串、句子和整个文档的含义和上下文,从而获得更准确和相关的搜索结果。

使用自然语言查询来查找相关结果是一种更好的体验,并允许用户更快地找到他们需要的内容,而无需了解数据分类的具体方式。

2. 对图像、音频、视频、JSON和其他形式的非结构化数据进行相似性搜索

图像、音频、视频和其他非结构化数据集在传统数据库中分类和存储非常具有挑战性。这通常需要手动将关键字、描述和元数据应用于每个对象。一个人对一个复杂数据对象进行分类的方式对另一个人来说可能并不明显。因此,搜索复杂的数据可能非常容易出错。这种方法要求搜索者了解数据的结构,并构建与原始数据模型匹配的查询。

3. 排名和推荐引擎

向量数据库是为排名和推荐引擎提供动力的一个很好的解决方案。对于在线零售商来说,它们可以用来推荐与过去购买的商品相似的商品,或者客户正在研究的当前商品。流媒体服务可以应用用户的歌曲评级,为个人量身定制完美匹配的推荐,而不是依赖于协同过滤或流行列表。

基于最接近匹配找到相似项目的能力使向量数据库成为提供相关建议的理想选择,并且可以很容易地根据相似性分数对项目进行排名。

4. 重复数据删除和记录匹配

向量相似性搜索的另一个用例是记录匹配和重复数据删除。使用相似性服务查找几乎重复的记录可以在各种应用程序中使用。考虑一个应用程序,它从目录中删除重复项,以使其更可用和更相关。

5. 数据质检

向量数据库在查找相似对象方面做得很好,但它们也可以查找与预期结果相距甚远或不同的对象。这些异常在用于威胁评估、欺诈检测和IT操作的应用程序中是有价值的。可以识别出最相关的异常以进行进一步分析,而不会因高假警报率而占用大量资源。

最受欢迎的向量数据库:

Pinecone

Pinecone就是这样一个向量数据库,它在整个行业中被广泛接受,用于解决复杂性和维度等挑战。Pinecone是一个云原生向量数据库,用于处理高维向量数据。Pinecone的核心基础方法是基于近似最近邻(ANN)搜索,它可以有效地定位更快的匹配并在大型数据集中对它们进行排序。

Pinecone的一些主要特征包括:

  1. 高度可扩展:Pinecone可以处理数十亿个高维向量和水平缩放,使其适用于最苛刻的机器学习工作负载。

  2. 实时数据摄取:松果支持实时数据摄取,允许您存储和索引新数据,因为它变得可用而没有任何停机时间

  3. 低延迟搜索:Pinecone的高级索引算法确保最近邻查询和相似性搜索操作以低延迟执行,提供快速准确的结果。

  4. 易于集成:Pinecone的API设计简单直观,使其易于与现有的机器学习工作流程和数据管道集成。

  5. 完全管理的服务:Pinecone是一个完全管理的平台,这意味着您不必担心基础设施管理或维护,让您专注于开发和部署机器学习应用程序。

Weavite

Weaviate是一个向量数据库和搜索引擎。它是一个低延迟的向量搜索引擎,支持各种媒体类型(文本、图像等)。Weaviate使用机器学习对数据进行向量化和存储,并找到对自然语言问题的回答。它包括语义搜索、问答提取、分类和可定制模型(PyTorch/TensorFlow/Keras)。您还可以使用Weaviate在生产中扩展自定义机器学习模型。

Weaviate存储媒体(文本,图像。等)对象及其相应的向量,允许将向量搜索与结构化过滤与云原生数据库的容错相结合。编织搜索可以通过不同的方法执行,例如GraphQL、REST和各种语言客户机。Python、Javascript、Go和Go是支持Weaviate客户端的流行编程语言。

如今,Weaviate被软件工程师用作其应用程序的ml优先数据库,数据工程师使用以人工神经网络为核心的向量数据库,数据科学家使用MLOps部署他们的搜索应用程序。

Weaviate特性:

快速查询 -在不到100毫秒的时间内,Weaviate在数百万个项目上运行10个最近邻(NN)搜索。

不同的媒体支持 -使用最先进的AI模型推理(例如变形金刚)图像,文本等。

结合标量和向量搜索 - Weaviate保存您的对象和向量,确保检索始终快速。不需要第三方对象存储系统。

水平可扩展性 - Weaviate可以根据用例在生产中水平扩展。

类图连接 -在数据项之间建立类图连接,以模拟数据点之间的实际连接。GraphQL用于遍历这些连接。

Milvus

Milvus是一个开源向量数据库,为用户提供高效、可扩展的解决方案,用于存储、管理和搜索大规模、高维数据。它的设计目标是满足对高级数据分析和机器学习应用快速增长的需求,这些应用需要快速准确地计算大量复杂数据。Milvus可用于各种行业,包括金融、电子商务、医疗保健等。在本文中,我们将深入了解Milvus及其关键特性、用例和优点。

Milvus的主要功能:

Milvus是一个高度可扩展和灵活的数据库,支持广泛的向量数据类型,包括图像,音频和文本数据。它的主要特点包括:

快速高效: Milvus可以处理大量的向量数据,低延迟和高吞吐量。它使用最先进的算法和技术来优化存储和检索速度,使其成为需要快速响应时间的实时应用的理想选择。

可扩展: Milvus设计为水平扩展,允许用户随着数据增长向集群添加新节点。这使得用户即使使用大量数据集也能获得高性能和可伸缩性。

搜索和相似度: Milvus提供了一个强大的搜索和相似度查询引擎,允许用户在他们的数据集中搜索相似的向量。这对于图像和面部识别、自然语言处理和推荐系统等应用程序尤其有用。

多接口: Milvus支持多种编程接口,包括Python, Java和Go,使其易于与现有的数据分析和机器学习工具集成。

FAISS

Faiss背后的科学原理有详细的描述在这里。Faiss的想法是,向量可以被转换成更像我们习惯搜索的文本的东西——一种码字。一旦有了这个码字,就可以使用标准的颠倒索引技术来检索类似的结果。使用精确的向量比较,结果可以基于这个近似结果集重新排序。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入理解计算机系统CS213 - Lecture 02

Bits, Bytes, and Integer 1.位运算与条件运算 &&#xff0c;|&#xff0c;^&#xff0c;~ 是做位运算。诸位01运算。 &&&#xff0c;||&#xff0c;&#xff01;是判断条件真假&#xff0c;而后返回0或1。 2. 位移 x << y&#xff1a;左移y位&#xff…

3+单细胞+代谢+WGCNA+机器学习

今天给同学们分享一篇生信文章“Identification of new co-diagnostic genes for sepsis and metabolic syndrome using single-cell data analysis and machine learning algorithms”&#xff0c;这篇文章发表Front Genet.期刊上&#xff0c;影响因子为3.7。 结果解读&#x…

飞书开发学习笔记(三)-利用python开发调试云文档和电子表格

飞书开发学习笔记(三)-利用python开发调试云文档和电子表格 一.建立Python飞书开发环境 首先还是进入开放平台下的API调试台 飞书开放平台&#xff1a;https://open.feishu.cn/app?langzh-CN 以获取"我的空间"下的文件清单为例&#xff0c;通过获取飞书API调试台提…

51单片机锅炉监控系统仿真设计( proteus仿真+程序+原理图+报告+讲解视频)

51单片机锅炉监控系统仿真设计( proteus仿真程序原理图报告讲解视频&#xff09; 1.主要功能&#xff1a;讲解视频2.仿真3. 程序代码4. 原理图5. 设计报告6. 设计资料内容清单&&下载链接资料下载链接&#xff08;可点击&#xff09;&#xff1a; 51单片机锅炉监控系统仿…

企业电脑屏幕监控有哪些?如何实现电脑屏幕监控

企业电脑屏幕监控有哪些&#xff1f;如何实现电脑屏幕监控 下载使用安企神电脑屏幕监控软件 企业电脑屏幕监控是一种监测和记录员工在工作时间内在他们的计算机上执行的活动的技术。这种监控可以有多种目的&#xff0c;包括确保员工的生产力、确保数据安全性&#xff0c;或满…

Git 删除本地和远程分支

目录 删除本地和远程分支分支删除验证验证本地分支验证远程分支 开源项目微服务商城项目前后端分离项目 删除本地和远程分支 删除 youlai-mall 的 dev 本地和远程分支 # 删除本地 dev 分支&#xff08;注&#xff1a;一定要切换到dev之外的分支才能删除&#xff0c;否则报错&…

46基于matlab的模拟退火算法(SA)优化车辆路径问题(VRP)

基于matlab的模拟退火算法&#xff08;SA&#xff09;优化车辆路径问题&#xff08;VRP&#xff09;&#xff0c;在位置已知的条件下&#xff0c;确定车辆到各个指定位置的行程路线图&#xff0c;使得路径最短&#xff0c;运输成本最低。一个位置由一台车服务&#xff0c;且始于…

STM32中微秒延时的实现方式

STM32中微秒延时的实现方式 0.前言一、裸机实现方式二、FreeRTOS实现方式三、定时器实现&#xff08;通用&#xff09;4、总结 0.前言 最近在STM32驱动移植过程中需要用到微秒延时来实现一些外设的时序&#xff0c;由于网上找到的驱动方法良莠不齐&#xff0c;笔者在实现时序过…

集线器、交换机、网桥、路由器、网关

目录 集线器(HUB)交换机(SWITCH)网桥(BRIDGE)路由器(ROUTER)网关(GATEWAY)交换机和路由器的区别参考 集线器(HUB) 功能 集线器对数据的传输起到同步、放大和整形的作用 属于物理层设备 工作机制 使用集线器互连而成的以太网被称为共享式以太网。当某个主机要给另一个主机发送单…

webpack 高级

高级配置就是要进行 webpack 优化&#xff0c;让代码在编译、运行时性能更好 主要从以下角度去优化&#xff1a; 1、提升开发体验 2、提升打包构建速度 3、减少代码体积 4、优化代码运行性能 一、提升体验 1、SourceMap 为什么 打包出来的所有css和js合并成了一个文件&#…

手把手教程 | YOLOv8-seg训练自己的分割数据集

&#x1f680;&#x1f680;&#x1f680;手把手教程&#xff1a;教会你如何使用自己的数据集开展分割任务 &#x1f680;&#x1f680;&#x1f680;YOLOv8-seg创新专栏&#xff1a;http://t.csdnimg.cn/KLSdv 学姐带你学习YOLOv8&#xff0c;从入门到创新&#xff0c;轻轻松…

一文读懂从 CPU 多级缓存 缓存一致性协议(MESI)到 Java 内存模型

文章目录 CPU 多级缓存 & 缓存一致性协议&#xff08;MESI&#xff09;CPU 多级缓存缓存一致性协议&#xff08;MESI&#xff09;缓存行&#xff08;Cache line&#xff09;四种缓存状态缓存行状态转换多核协同示例网站体验 MESI优化和引入的问题Store Bufferes & Inva…

python- 学生信息管理系统

偶然整的学生信息管理系统一个学生信息管理系统&#xff0c;包括录入学生信息、查找学生信息、删除学生信息、修改学生信息、排序学生信息、统计学生总数和显示所有学生信息等功能 开发环境要求本系统的软件开发及运行环境具体如下。 操作系统&#xff1a;Windows 10。 Python…

Object转List<>,转List<Map<>>

这样就不会局限在转换到List<Map<String,Object>>这一种类型上了.可以转换成List<Map<String,V>>上等,进行泛型转换虽然多了一个参数,但是可以重载啊注: 感觉field.get(key) 这里处理的不是很好,如果有更好的办法可以留言 public static <K, V> …

7-2 数论中的模幂运算

solution 欧拉函数法可以解决模幂运算 #include<stdio.h> #include<math.h> int main(){int a, m, n, r1;scanf("%d%d%d", &a, &m, &n);while(m){if(m&1) r(r*a)%n;a(a*a)%n;m>>1; }printf("%d", r);return 0; }给定伪…

AtCoder Beginner Contest 327 G. Many Good Tuple Problems(带标号二分图计数+有区别小球放入有区别盒子)

题目 一个长为n(n<30)的原始序列x&#xff0c;x[i]可以取值0或1 一个长为m(m<1e9)的点对序列(s,t)&#xff0c; s序列第i项和t的第i项&#xff0c;均可以取值[1,n]&#xff0c; 如果构造好s和t后&#xff0c;对任意都存在01序列x使得&#xff0c; 则称这个序列是合法…

Python入门:6个好用的Python代码,快来收藏!

文章目录 1.类有两个方法&#xff0c;一个是 new,一个是 init,有什么区别&#xff0c;哪个会先执行呢&#xff1f;2.map 函数返回的对象3.正则表达式中 compile 是否多此一举&#xff1f;4.[[1,2],[3,4],[5,6]]一行代码展开该列表&#xff0c;得出[1,2,3,4,5,6]5.一行代码将字符…

01-开发第一个Vue程序,了解Vue构造函数的配置项data,template,插值语法,el

Vue的快速入门 下载并安装vue.js Vue是一个基于JavaScript实现的框架, 要使用它就需要从Vue官网下载 vue.js文件 第一步&#xff1a;打开Vue2官网&#xff0c;点击下图所示的起步 第二步&#xff1a;继续点击下图所示的安装 第三步&#xff1a;在安装页面向下滚动&#xff0…

[架构之路-254/创业之路-85]:目标系统 - 横向管理 - 源头:信息系统战略规划的常用方法论,为软件工程的实施指明方向!!!

目录 总论&#xff1a; 一、数据处理阶段的方法论 1.1 企业信息系统规划法BSP 1.1.1 概述 1.1.2 原则 1.2 关键成功因素法CSF 1.2.1 概述 1.2.2 常见的企业成功的关键因素 1.3 战略集合转化法SST&#xff1a;把战略目标转化成信息的集合 二、管理信息系统阶段的方法论…

图解系列--路由器和它庞大的功能

03.01 何为路由器 路由器是指主要负责 OSI参考模型中网络层的处理工作&#xff0c;并根据路由表信息在不同的网络 之间转发IP 分组的网络硬件(图3-1)。这里的网络一般是指IP 子网&#xff0c;也可以称为广播域。此外&#xff0c;现在的路由器还会搭载其他各种各样的功能。 0…