Elasticsearch:什么是向量数据库?

向量数据库定义

向量数据库是将信息存储为向量的数据库,向量是数据对象的数值表示,也称为向量嵌入。 它利用这些向量嵌入的强大功能来对非结构化数据和半结构化数据(例如图像、文本或传感器数据)的海量数据集进行索引和搜索。 向量数据库是为了管理向量嵌入而构建的,因此为非结构化和半结构化数据的管理提供了完整的解决方案。

向量数据库与向量搜索库或向量索引不同:它是一种数据管理解决方案,支持元数据存储和过滤、可扩展、允许动态数据更改、执行备份并提供安全功能。

向量数据库通过高维向量来组织数据。 高维向量包含数百个维度,每个维度对应于它所表示的数据对象的特定特征或属性。

什么是向量嵌入?

向量嵌入是主题、单词、图像或任何其他数据的数字表示。 向量嵌入(也称为嵌入)由大型语言模型和其他人工智能模型生成。

每个向量嵌入之间的距离使向量数据库或向量搜索引擎能够确定向量之间的相似性。 距离可以代表数据对象的多个维度,从而使机器学习和人工智能能够理解模式、关系和底层结构。

了解如何部署文本嵌入

更多关于向量嵌入的知识,请阅读文章 “Elasticsearch:什么是向量嵌入?”。

向量数据库如何工作?

向量数据库通过使用算法来索引和查询向量嵌入来工作。 该算法通过哈希、量化或基于图的搜索来实现近似最近邻 (ANN) 搜索。

为了检索信息,人工神经网络搜索会找到查询的最近向量邻居。 与 kNN 搜索(已知最近邻,或真正的 k 最近邻算法)相比,计算强度较小,近似最近邻搜索的准确度也较低。 然而,它对于高维向量的大型数据集可以高效且大规模地工作。

向量数据库管道如下所示:

1)索引:通过哈希、量化或基于图的技术,向量数据库通过将向量映射到给定的数据结构来对向量进行索引。这使得搜索速度更快。

  • 哈希:哈希算法,比如局部敏感哈希(LSH)算法,最适合进行近似最近邻搜索,因为它能够提供快速而近似的结果。LSH 使用哈希表(类似数独谜题)来映射最近邻。查询将被哈希到一个表中,然后与同一表中的一组向量进行比较,以确定相似性。
  • 量化:量化技术,比如产品量化(PQ),将向量分解为较小的部分,并用代码表示这些部分,然后将部分重新组合。结果是向量及其组件的代码表示。这些代码的集合被称为码书(codebook)。在查询时,使用量化的向量数据库将查询分解为代码,然后与码书进行匹配,以找到最相似的代码生成结果。
  • 基于图:图算法,比如分层可导航小世界(HNSW)算法,使用节点表示向量。它对节点进行聚类,并在相似节点之间绘制线条或边缘,创建层次图。当发起查询时,算法将导航图层次结构,以找到包含与查询向量最相似的向量的节点。

向量数据库还将索引数据对象的元数据。 因此,向量数据库将包含两个索引:向量索引和元数据索引。

2)查询:当向量数据库收到查询时,它将索引向量与查询向量进行比较,以确定最近的向量邻居。 为了建立最近邻,向量数据库依赖于称为相似性度量的数学方法。 存在不同类型的相似性方法:

  • 余弦相似度在 -1 到 1 的范围内建立相似度。通过测量向量空间中两个向量之间的角度的余弦,它可以确定向量是完全相反的(用 -1 表示)、正交的(用 0 表示)或 相同(用 1 表示)。
  • 欧氏距离通过测量向量之间的直线距离来确定 0 到无穷大范围内的相似度。 相同的向量用0表示,而较大的值表示向量之间的差异较大。
  • 点积相似性方法确定负无穷大到无穷大范围内的向量相似性。 通过测量两个向量的大小和它们之间角度的余弦的乘积,点积将负值分配给彼此远离的向量,将 0 分配给正交向量,将正值分配给指向相同方向的向量。


3)后处理:向量数据库管道中的最后一步有时是后处理或后过滤,在此期间向量数据库将使用不同的相似性度量来重新排列最近的邻居。 在此阶段,数据库将根据元数据过滤搜索中识别的查询最近邻居。

某些向量数据库可能会在运行向量搜索之前应用过滤器。 在这种情况下,它被称为预处理或预过滤。

为什么向量数据库很重要?

向量数据库很重要,因为它们保存向量嵌入并支持一系列功能,包括索引、距离度量和相似性搜索。 换句话说,向量数据库专门用于非结构化数据和半结构化数据的管理。 因此,向量数据库是机器学习和人工智能数字领域的重要工具。

向量数据库核心组件

向量数据库可能具有以下核心组件:

  • 性能和容错:分片和复制过程确保向量数据库的高性能和容错性。 分片涉及跨多个节点对数据进行分区,而复制涉及跨不同节点制作数据的多个副本。 如果节点发生故障,这可以实现容错和持续的性能。
  • 监控能力:为了确保性能和容错能力,向量数据库需要监控资源使用情况、查询性能和整体系统运行状况。
  • 访问控制能力:向量数据库也需要数据安全管理。 访问控制监管可确保合规性、责任性以及审核数据库使用情况的能力。 这也意味着数据受到保护:拥有权限的人可以访问数据,并且保留用户活动的记录。
  • 可扩展性和可调性:良好的访问控制功能会影响向量数据库的可扩展性和可调性。 随着存储数据量的增加,水平扩展的能力变得必不可少。 不同的插入和查询速率以及底层硬件的差异都会影响应用程序的需求。
  • 多用户和数据隔离:在具备可扩展性和访问控制功能的同时,向量数据库应该能够容纳多用户或多租户。 与此相一致,向量数据库应该启用数据隔离,以便任何用户活动(例如插入、删除或查询)对其他用户保持私有 —— 除非另有要求。
  • 备份:向量数据库创建定期数据备份。 这是向量数据库在系统发生故障时的关键组件 —— 在数据丢失或数据损坏的情况下,备份可以帮助将数据库恢复到以前的状态。 这可以最大限度地减少停机时间。
  • API 和 SDK:向量数据库使用 API 来实现用户友好的界面。 API 是一种应用程序编程接口或一种软件,它使应用程序能够通过请求和响应相互 “对话”。 API 层简化了向量搜索体验。 SDK(即软件开发工具包)通常包含 API。 它们是数据库用于通信和管理的编程语言。 SDK 有助于开发人员友好地使用向量数据库,因为它们在开发特定用例(语义搜索、推荐系统等)时不必担心底层结构。

向量数据库和传统数据库有什么区别?

传统数据库以表格形式存储信息,并通过为数据点分配值来索引数据。 当查询时,传统数据库将返回与查询完全匹配的结果。

向量数据库以嵌入的形式存储向量并启用向量搜索,向量搜索根据相似性指标(而不是精确匹配)返回查询结果。 向量数据库在传统数据库无法做到的地方“提升”了:它被有意设计为与向量嵌入一起操作。

向量数据库也比传统数据库更适合某些应用,例如相似性搜索、人工智能和机器学习应用,因为它支持高维搜索和定制索引,并且具有可扩展性、灵活且高效。

向量数据库的应用

向量数据库用于人工智能、机器学习 (ML)、自然语言处理 (NLP) 和图像识别应用。

  • AI/ML应用:向量数据库可以通过语义信息检索和长期记忆来提高 AI 能力。
  • NLP 应用:向量相似性搜索是向量数据库的关键组成部分,对于自然语言处理应用非常有用。 向量数据库可以处理文本嵌入,这使计算机能够 “理解” 人类或自然语言。
  • 图像识别和检索应用:向量数据库将图像转换为图像嵌入。 通过相似性搜索,他们能够检索相似的图像或识别匹配的图像。

向量数据库还可以服务于异常检测和人脸检测应用。

向量数据库的未来趋势

向量数据库的未来与人工智能和机器学习的发展以及与使用深度学习为结构化和非结构化数据生成更强大的嵌入相关的研究密切相关。

随着创建更好嵌入的能力的提高,向量数据库更好地处理和管理这些嵌入的能力需要新的技术和算法。 事实上,此类新方法一直在开发中。

其他研究致力于混合数据库的开发。 这些旨在结合传统关系数据库和矢量数据库的强大功能,以满足对高效和可扩展数据库日益增长的需求。

Elasticsearch 的向量数据库

Elasticsearch 包含一个用于向量搜索的向量数据库。 Elastic 使开发人员能够使用 Elasticsearch 相关性引擎 (ESRE) 构建自己的向量搜索引擎。

借助 Elasticsearch 工具,你可以构建一个向量搜索引擎,该引擎可以搜索非结构化和结构化数据、应用过滤器和分面、对文本和矢量数据应用混合搜索,并利用文档和字段级安全性,同时在本地运行 云或混合环境中。

探索 Elasticsearch 向量数据库

向量数据库资源

  • Elasticsearch 向量数据库
  • Elastic 的向量搜索原理
  • 阅读有关 ANN 算法的更多信息
  • 了解如何实现图像相似度搜索

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

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

相关文章

操作系统相关--面试和笔试高频

操作系统 计算题 页面置换算法 先进先出(FIFO)更新算法:总是淘汰最先进入内存的页面。即目前出现次数最多的页面 最近最久未使用(LRU)更新算法:当需要更新一页时,选择在最近一段时间内最久没…

TensorRT安装及使用教程(ubuntu系统部署yolov7)

1 什么是TensorRT 一般的深度学习项目,训练时为了加快速度,会使用多 GPU 分布式训练。但在部署推理时,为了降低成本,往往使用单个 GPU 机器甚至嵌入式平台(比如 NVIDIA Jetson)进行部署,部署端也…

Xshell会话文件解密获取密码

Xshell会话文件解密获取密码 开发了一个小工具用于获取已存储的xshell会话密码功能简介截图展示下载地址 开发了一个小工具用于获取已存储的xshell会话密码 在日常开发中,服务器太多,密码记不住。使用xshell管理服务器会话,记住密码&#xf…

Docker容器(一)概述

一、虚拟化概述 1.1引⼊虚拟化技术的必要性 服务器只有5%的时间是在⼯作的;在其它时间服务器都处于“休眠”状态. 虚拟化前 每台主机⼀个操作系统; 软硬件紧密结合; 在同⼀个主机上运⾏多个应⽤程序通常会遭遇冲突; 系统的资源利⽤率低; 硬件成本⾼昂⽽且不够灵活…

开发猿的平平淡淡周末---2023/12/3

2023/12/3 天气晴 温度适宜 AM 早安八点多的世界,起来舒展了下腰,阳光依旧明媚,给平淡的生活带来了一丝暖意 日常操作,喂鸡,时政,洗漱,恰饭,肝会儿游戏 看会儿手机 ___看累…

【Windows】如何实现 Windows 上面的C盘默认文件夹的完美迁移

如何实现 Windows 上面的C盘默认文件夹的完美迁移 1. 遇到的问题 在我想迁移C盘的 下载 和 视频 文件夹的时候,遇到了这样的问题,在迁移之后,我显卡录像的视频还是保存到了C盘默认位置里,以及我迁移了 下载 之后下载的盘依然是在…

LeetCode刷题---反转链表

个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏:http://t.csdnimg.cn/ZxuNL http://t.csdnimg.cn/c9twt 前言:这个专栏主要讲述递归递归、搜索与回溯算法,所以下面题目主要也是这些算法做的 我讲述…

MDETR 论文报告

MDETR - Modulated Detection for End-to-End Multi-Modal Understanding MDETR - Modulated Detection for End-to-End Multi-Modal Understanding发现问题主要贡献和创新点主要方法和技术MDETR 的架构损失函数1. 框预测损失2. 软标记预测损失3. 对比对齐损失4. 总损失 实验和…

Linux网络之连接跟踪 conntrack

一 Linux网络之连接跟踪 conntrack k8s 有关conntrack的分析 ① 什么是连接跟踪 netfilter连接跟踪 conntrack 详述 思考:连接跟踪模块会对哪些协议进行跟踪?TCP、UDP、ICMP、DCCP、SCTP、GRE ② 为什么需要连接跟踪 没有连接跟踪有很多问题是不好解决的&a…

C语言-内存分配

内存分配 1. 引入 int nums[10] {0}; //对int len 10; int nums[len] {0}; //错是因为系统的内存分配原则导致的2. 概述 在程序运行时,系统为了 更好的管理进程中的内存,所以有了 内存分配机制。 分配原则: 2.1 静态分配 静态分配原…

解决top-k问题--堆排序

目录 TOP-K问题 堆排序 考虑以下情况: 1.在n个数里面找最大的一个数 2.在n个数里面找最大的两个数 3.在n个数中求前k大的数 为什么不用大根堆呢? 代码 时间复杂度 TOP-K问题 即求数据结合中前K个最大的元素或者最小的元素,一般情况下数…

使用Redis构建任务队列

文章目录 第1关:先进先出任务队列第2关:优先级任务队列第3关:定时任务队列 第1关:先进先出任务队列 编程要求 在Begin-End区域编写 add_task(task_name) 函数,实现将任务加入队列的功能,具体参数与要求如下…

论文阅读——Loss odyssey in medical image segmentation

Loss odyssey in medical image segmentation github:https://github.com/JunMa11/SegLossOdyssey 这篇文章回顾了医学图像分割中的20种不同的损失函数,旨在回答:对于医学图像分割任务,我们应该选择哪种损失函数? 首…

使用 Kettle 完成数据 ETL

文章目录 使用 Kettle 完成数据 ETL数据清洗数据处理 使用 Kettle 完成数据 ETL 现在我们有一份网站的日志数据集,准备使用Kettle进行数据ETL。先将数据集加载到Hadoop集群中,然后对数据进行清洗,最后加载到Hive中。 在本地新建一个数据集文…

解决vscode中html部分无法嵌套注释

不管是React项目还是Vue项目,相信你一定遇到过同样的问题,如果想要注释的结构内部也存在注释,那么编译器会报以下问题 使用 HTML-Comment 这个插件即可解决问题 选中需要注释的区域并根据系统输入快捷键,可以发现就算嵌套了注释…

【论文解读】角色动画的一致可控的图像到视频合成

论文:https://arxiv.org/pdf/2311.17117.pdf 代码:https://github.com/HumanAIGC/AnimateAnyone 图片解释:给定参考图像(每组中最左边的图像)的一致且可控的角色动画结果。我们的方法能够对任意角色进行动画处理&#…

人工智能原理复习--不确定推理

文章目录 上一篇不确定推理概述主观Bayes(贝叶斯)方法可信度方法证据理论下一篇 上一篇 人工智能原理复习–确定性推理 不确定推理概述 常识具有不确定性。 常识往往对环境有极强的依存性。 其中已知事实和知识是构成推理的两个基本要素,不确定性可以理解为在缺…

Makefile初学之谜之隐式规则

刚开始学习Make教程:https://makefiletutorial.vercel.app/#/docs/fancy-rules,里面有个sample: objects foo.o bar.o all.o all: $(objects)# These files compile via implicit rules foo.o: foo.c bar.o: bar.c all.o: all.call.c:echo "int…

python--自动化办公(Word)

python自动化办公之—Word python-docx库 1、安装python-docx库 pip install python-docx2、基本语法 1、打开文档 document Document() 2、加入标题 document.add_heading(总标题,0) document.add_heading(⼀级标题,1) document.add_heading(⼆级标题,2) 3、添加文本 para…

Spring IOC—基于XML配置和管理Bean 万字详解(通俗易懂)

目录 一、前言 二、通过类型来获取Bean 0.总述(重要) : 1.基本介绍 : 2.应用实例 : 三、通过指定构造器为Bean注入属性 1.基本介绍 : 2.应用实例 : 四、通过p命名空间为Bean注入属性 1.基本介绍 : 2.应用实例 : 五、通过ref引用实现Bean的相…
最新文章