当前位置: 首页 > news >正文

Elasticsearch:什么是向量和向量存储数据库,我们为什么关心?

Elasticsearch 从 7.3 版本开始支持向量搜索。从 8.0 开始支持带有 HNSW 的 ANN 向量搜索。目前 Elasticsearch 已经是全球下载量最多的向量数据库。它允许使用密集向量和向量比较来搜索文档。 矢量搜索在人工智能和机器学习领域有许多重要的应用。 有效存储和检索向量的数据库对于构建生产就绪的 AI/ML 服务至关重要。更多关于 Elastic 向量搜索的信息,可以在地址 What is vector search? Better search with ML | Elastic 找到更多的信息。

向量到底是什么?

简而言之,向量是数据的数值表示。 所有数据(表格、文本、图像、视频、声音等)都可以表示为多维数字数组。

作为向量的表格数据

将数据转换为机器学习算法易于使用的形式是在 ML 管道的数据预处理阶段完成的。 这是管道的早期阶段之一。

表格数据(例如 SQL 数据库中的表)每行包含一个观察值。

表示为向量的表格数据

每列中的数据可大致分为四种类型之一。

  • Nominal:名义数据是指没有任何顺序或定量值的值。 性别就是此类数据的一个例子。
  • Ordinal:序数数据具有自然排序,其中数字按其在刻度上的位置按某种顺序出现,但我们无法对它们执行任何算术任务。 日期字段是序数数据的示例。
  • Discrete:离散数据包含属于整数或整数的值。 班级中的学生总数是离散数据的一个示例。 这些数据不能分解为小数或分数。
  • Continuous:连续数据采用小数形式。 例如,班级学生的身高就是连续数据的一个例子。

机器学习算法不擅长处理名义数据或有序数据。 因此,在将表格数据输入机器学习算法之前,我们通常需要将这些字段转换为数字。 编码是机器学习中将非数字字段转换为数字字段的过程。 对名义字段和序数字段进行编码后,你获得向量数据集。

图像作为矢量

图像可以表示为 3 维数字矩阵(技术上是 Rank-3 Tensor,但现在让我们忽略细节)。 两个维度代表像素的坐标,第三个维度包含三个颜色通道。 矩阵中的数字范围为 0 到 255,代表像素的三基色(红、绿、蓝)的值。 因此,4 x 4 像素的彩色图像可以表示为如下所示的矩阵。

有关如何把图像转换为向量,请参考文章:

  • Elasticsearch:如何在 Elastic 中实现图片相似度搜索

  • Elasticsearch:使用向量搜索来搜索图片及文字

文本作为矢量

文本信息可以转换为一个长的数字向量,其中向量中的位置代表单词,值代表该单词在文本中出现的次数。 这称为文本数据的词袋(bag of words)表示。

These are not the droid you are looking for. No, I am your father.

these:1, are: 2, not: 1, the: 1, droid: 1, you: 1, look: 1, for: 1

no: 1, i: 1, am:1, you: 1, father: 1

文本信息可以转换为一个长的数字向量,其中向量中的位置代表单词,值代表该单词在文本中出现的次数。 这称为文本数据的词袋(bag of words)表示。这种早期形式的矢量化文本会产生稀疏向量(带有太多零的向量)。现在存在更复杂的方法(词嵌入)将文本转换为向量。 这些方法可以生成紧凑、密集的向量,这些向量具有更小的存储大小,并且还以这样的方式对文本的含义进行编码:向量空间中更接近的文本预计在含义上相似。

为什么我们将数据表示为向量?

数据点(data points)在机器学习中被表示为向量,因为它们可以有效地编码和操作信息。 向量提供了一种简洁且结构化的格式来组织数据点,其中每个向量元素对应于特定的特征或属性。 当数据点表示为向量时,机器学习算法可以轻松执行加法、减法和点积等数学运算。 这有利于训练和推理过程中涉及的各种计算,例如计算数据点之间的相似性、估计距离和优化模型。 此外,向量可以使用线性代数和矩阵运算,这构成了许多机器学习技术的基础。 通过利用向量的力量,机器学习算法可以有效地分析复杂的数据集并从中学习,最终获得准确的预测和有价值的见解。

现在我们已经将数据表示为向量,接下来会发生什么?

一旦数据以向量形式表示,通常会被输入到预先训练的机器学习模型中,该模型将这些向量映射到新的向量空间,以便相似对象(文本、图像或数据点)的向量在向量中显得彼此接近。新的向量空间。 这个过程称为嵌入,你猜对了,生成的一组新向量也称为嵌入。

生成向量嵌入的 ML 管道

一旦我们有了一组新的向量(每个向量代表我们的一个数据点),其中与相似数据对应的向量彼此接近,就会发生令人惊奇的事情。

当数据被表示为基于某种相似性概念彼此靠近排列的向量时,查找与给定项目相似的项目就简化为查找与原始项目向量接近的所有项目向量。

那么有什么大不了的呢?

随着向量搜索的发布,你现在可以使用简单的运算符 HNSW 对存储在 Elasticsearch 中的向量执行相似性搜索,而无需设置完全不同的并行基础设施来执行向量搜索。

应用团队立即开始看到以下好处:

  • 简化的应用程序架构和设计
  • 更快的应用程序发布周期
  • 降低基础设施成本
  • 降低维护费用
  • 更快实现价值

能够使用最新的人工智能技术(例如 LLMs 和生成式人工智能)快速增强用户体验的应用程序团队更有可能在竞争中领先。

更多关于如何使用 Elasticsearch 进行向量搜索的知识,请阅读 AI文章专栏。

向量搜索用例

  1. 语义搜索:根据搜索查询的含义和文档内容的含义来搜索文档。 与传统的文本搜索方法相比,语义搜索是一种从数据库或搜索引擎检索信息的更先进的方法。 传统文本搜索依赖于关键字匹配和精确单词匹配,而语义搜索旨在理解用户查询和搜索内容背后的上下文、意图和含义。请参阅文章 “Elasticsearch:如何部署 NLP:文本嵌入和向量搜索”。
  2. 反向图像搜索:查找 “看起来像” 给定图像的图像 - 例如 谷歌图片搜索。请参阅文章 “Elasticsearch:如何在 Elastic 中实现图片相似度搜索”。
  3. 推荐引擎:根据以前的视图推荐社交媒体帖子(Instagram 中的 Think Image 推荐、Twitter 上的推文推荐、Facebook Feed 或 Youtube 中推荐的故事等)
  4. 抄袭检测:根据文档与数据库中文档的匹配程度来检测抄袭。

相关文章:

Elasticsearch:什么是向量和向量存储数据库,我们为什么关心?

Elasticsearch 从 7.3 版本开始支持向量搜索。从 8.0 开始支持带有 HNSW 的 ANN 向量搜索。目前 Elasticsearch 已经是全球下载量最多的向量数据库。它允许使用密集向量和向量比较来搜索文档。 矢量搜索在人工智能和机器学习领域有许多重要的应用。 有效存储和检索向量的数据库…...

JOSEF约瑟 剩余电流继电器PFR-5 PFE-W-20 国产化改造ZLR-G81 ZCT-45

系列型号: PFR-003剩余电流继电器 PFR-03剩余电流继电器 PFR-5剩余电流继电器 PFR-W-105互感器 PFR-W-140互感器 PFR-W-20互感器 PFR-W-210互感器 PFR-W-30互感器 PFR-W-35互感器 PFR-W-70互感器 一、用途 PFR剩余电流继电器(以下简称继电器…...

分别用Python和Go实现对文件夹及其子文件夹里的文件进行批量重命名

文章目录 问题阐述上代码结果如何 问题阐述 最近在继续提高自己的go技术时,从网上一些平台获取到了一些学习资料,然后下载到本地后,文件的命名是真的像衣托答辩: 除了上述的文件,还有一mol多神奇的命名,害…...

redis深度历险 千帆竞发 —— 分布式锁

分布式应用进行逻辑处理时经常会遇到并发问题。 比如一个操作要修改用户的状态,修改状态需要先读出用户的状态,在内存里进行修改,改完了再存回去。如果这样的操作同时进行了,就会出现并发问题,因为读取和保存状态这两个…...

C#根据中文首字母排序

第一种方式&#xff1a; 这种方式会受制于服务器的区域和语言设置。 1.首先添加一个排序类ChineseNameComparer public class ChineseNameComparer : IComparer<string> {public int Compare(string x, string y){if (x null || y null)return 0;var xFirstChar x.Su…...

仪表基础知识培训

压力传感器:E+H PMX5x/FMX5x 一、安装:安装注意事项: 1、水平安装时仪表的呼吸孔(1)需要向下安装,并远离污染物。 2、请勿用坚硬的物体擦拭或接触膜片。 3、请勿安装在水泵的入口和搅拌叶附近 二、供电、接线、信号、:二线制,仪表输出4-20mA 三、量程:设置最大最小量程…...

无涯教程-JavaScript - PI函数

描述 PI函数返回数字3.14159265358979,数学常数pi,精确到15位数字。 语法 PI ()争论 PI函数语法没有参数。 适用性 Excel 2007,Excel 2010,Excel 2013,Excel 2016 Example JavaScript 中的 PI函数 - 无涯教程网无涯教程网提供描述PI函数返回数字3.14159265358979,数学常…...

前端防抖和节流

前端防抖和节流 概述 防抖&#xff1a; 防止抖动&#xff0c;个人字面理解此处防的不是页面的抖动&#xff0c;而是用户手抖。为了防止用户快速且频繁的触发事件而导致多次执行事件函数&#xff0c;这样的场景有很多&#xff0c;比如监听滚动、鼠标移动事件onmousemove、频繁…...

[pai-diffusion]pai的easynlp的clip模型训练

EasyNLP带你玩转CLIP图文检索 - 知乎作者&#xff1a;熊兮、章捷、岑鸣、临在导读随着自媒体的不断发展&#xff0c;多种模态数据例如图像、文本、语音、视频等不断增长&#xff0c;创造了互联网上丰富多彩的世界。为了准确建模用户的多模态内容&#xff0c;跨模态检索是跨模态…...

期权如何交易?期权如何做模拟交易?

买卖期权的第一步就是要有期权账户&#xff0c;国内的期权品种有商品期权和ETF期权以及股指期权&#xff0c;每种的开户方式和要求都不同&#xff0c;下文为大家介绍期权如何交易&#xff1f;期权如何做模拟交易&#xff1f; 一、期权交易需要开立一个期权账户&#xff0c;可以…...

【新书推荐】大模型赛道如何实现华丽的弯道超车 —— 《分布式统一大数据虚拟文件系统 Alluxio原理、技术与实践》

文章目录 大模型赛道如何实现华丽的弯道超车 —— AI/ML训练赋能解决方案01 具备对海量小文件的频繁数据访问的 I/O 效率02 提高 GPU 利用率&#xff0c;降低成本并提高投资回报率03 支持各种存储系统的原生接口04 支持单云、混合云和多云部署01 通过数据抽象化统一数据孤岛02 …...

Calendar对象获取当前周的bug

项目场景&#xff1a; 双周项目管理&#xff0c;需要获取当前周为一年之中的第几周&#xff0c;原先的代码是用Calendar对象&#xff0c;先用setTime&#xff08;&#xff09;把当前时间传入&#xff0c;再用get&#xff08;3&#xff09;获取一年中的第几周 问题描述 实际发…...

嵌入式环境buildroot的espeak配置与编译

1、在buildroot目录下输入make menuconfig 2、选择Target packages 3、选择Audio and video applications 4、选择espeak、选择alsa via portaudio &#xff08;新版嵌入式linux一般都是用alsa音频驱动&#xff09; 5、配置portaudio 选择Library 6、选择Audio/Sound 7、选择…...

物理机环境搭建-linux部署nginx

1、安装nginx部署所需依赖 yum install -y gcc-c pcre pcre-devel zlib zlib-devel openssl openssl-devel2、安装nginx包 wget http://nginx.org/download/nginx-1.8.0.tar.gz 如果没有wget可以安装一下 yum install -y wget下载完成后可以在/usr/local/下放置tar包&#xf…...

删除安装Google Chrome浏览器时捆绑安装的Google 文档、表格、幻灯片、Gmail、Google 云端硬盘、YouTube网址链接(Mac)

删除安装Google Chrome浏览器时捆绑安装的Google 文档、表格、幻灯片、Gmail、Google 云端硬盘、YouTube网址链接(Mac) Mac mini操作系统&#xff0c;安装完 Google Chrome 浏览器以后&#xff0c;单击 启动台 桌面左下角的“显示应用程序”&#xff0c;我们发现捆绑安装了 Goo…...

硬件故障诊断:快速定位问题

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…...

IP代理与加速器:理解它们的区别与共同点

在网络使用过程中&#xff0c;我们经常会遇到需要提高访问速度或保护隐私的需求。IP代理和加速器都是常见的应对方案&#xff0c;但它们在工作原理和应用场景上存在一些区别。本文将为您深入探讨IP代理和加速器的异同&#xff0c;帮助您更好地理解它们的作用和适用情况&#xf…...

Java中List转字符串的方法

一、使用String.join方法 在Java 8之后&#xff0c;String类增加了一个静态方法join()&#xff0c;可以方便地将列表中的元素连接成字符串。 // 创建List List<String> list Arrays.asList("Google", "Baidu", "Taobao"); // 以逗号分隔…...

PyTorch实战:实现MNIST手写数字识别

前言 PyTorch可以说是三大主流框架中最适合初学者学习的了&#xff0c;相较于其他主流框架&#xff0c;PyTorch的简单易用性使其成为初学者们的首选。这样我想要强调的一点是&#xff0c;框架可以类比为编程语言&#xff0c;仅为我们实现项目效果的工具&#xff0c;也就是我们…...

【计算机网络】深入理解TCP协议二(连接管理机制、WAIT_TIME、滑动窗口、流量控制、拥塞控制)

TCP协议 1.连接管理机制2.再谈WAIT_TIME状态2.1理解WAIT_TIME状态2.2解决TIME_WAIT状态引起的bind失败的方法2.3监听套接字listen第二个参数介绍 3.滑动窗口3.1介绍3.2丢包情况分析 4.流量控制5.拥塞控制5.1介绍5.2慢启动 6.捎带应答、延时应答 1.连接管理机制 正常情况下&…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...