向量数据库(一)

写在前面

最近在学习一些 AI 相关的开发,了解了一些未接触过的东西,其中有一部分是向量数据库,想开一个专题,对相关的内容做一下整理。

内容

什么是向量数据库

一般在我们的日常开发中,使用的数据库存储主要有两种形式:行存储形式列存储形式

行存储形式常见的就是我们的 MySQL,列存储形式常见的有 HBase。

图来自 qdrant 官网

数据用行存储和列存储有什么区别呢?

假设有一个用户信息表,如果用行存储,在磁盘里的表现形式是:

张三18李四19

而如果是用列存储,则相同属性的数据,会靠在一起:

张三李四1819

我们可以发现,假如我想查询某个用户的数据,那么对于行存储,我只要找到张三,然后顺序遍历下去,就可以拿到该用户的全部记录了。而如果是列存储,则为了组装出这个用户的数据,需要跳过多个内容才能获取到。

但如果我想统计有多少个男性这样的数据,行存储则反过来需要全表遍历了。而列存储我只需要找到性别列的开头位置,然后顺序遍历下去,统计即可。

于是行存储和列存储就引申出了两类数据处理:OLTP 和 OLAP。

OLTP(Online transaction processing)翻译为联机事务处理,是关系型数据库的主要应用,常用来做数据的查询,也就是我们的 Select 操作*(想想对于关系型数据库,我们经常提到的就是如何优化查询语句之类的问题)*。

OLAP(OnLine Analytical Processing)翻译为联机分析处理,则是常用来做分析、决策的操作,例如 Group By 之类的操作。

所以日常生活中,我们需要根据实际的业务情况,考虑这块业务是倾向于事务处理,还是分析处理,然后再反推回我们需要怎样的数据库。

但随着人工智能的发展,有些数据需要以更高维度的形式存在,例如图像识别、推荐系统等,它们用到了数学上的向量来进行表示。而行存储和列存储,都是从二维的角度来处理,也就是传统的数据库是难以很好地处理更高维度的数据,因此就有了向量数据库

在向量数据库里,一个向量就是一条数据,例如一张图片,一只狗。一个向量里会有多个元素,代表着这个事物的多个特征,假设说我们想要从毛发、鼻子长度、体型、颜色的四个维度来标识一只狗,那么这个向量里就要有这四个元素。

由于我们可以用多个维度来标识一个事物,也就意味着如果我们想要知道事物之间的关系,有了更多的条件来让我们判断。利用数学上向量的某些距离度量算法,就可以让我们实现这个目标。举个例子,假设我们有四个向量,向量A-人物小A、向量B-人物小B、向量C-猫和向量D-老鼠。如果我们从物种维度上来进行距离度量,则小A和小B的距离应该是小于小A和猫的距离,毕竟物种不同。从另外一个角度,假设小A是警察,小B是贼,我们可能通过计算发现,小A和小B之间的距离,居然跟猫和老鼠之间的距离差不多,这种情况可能就容易让我们产生一种类比的关系。所以用多维向量来表示事物,让我们有了更多的想象空间。


向量的距离度量

向量之间的距离度量,一般有三种方法:

  • 余弦相似度
  • 点积
  • 欧几里得距离

余弦相似度

余弦相似度就是我们高中数学的时候,会计算的 cos 的值。如果两个向量方向相同,cos 等于1,如果方向相反,cos 等于 -1。我们可以通过之间的夹角大小,来判断这两个向量之间的关系大小。

点积

点积是将两个向量之间各自的值相乘,然后将乘积相加,最终得到一个数值。我们通过这个总和的大小,来判断这两个向量之间关系的大小。

欧几里得距离

欧几里得距离,则是计算两个向量的顶点之间的距离,通过顶点距离的大小来判断两个向量之间关系的大小。

参考

什么是列式存储,一文秒懂

What is Qdrant?

向量数据库技术鉴赏

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Matlab进阶绘图第65期—带分组折线段的柱状图

带分组折线段的柱状图是在原始柱状图的基础上,在每组柱状图位置处分别添加折线段,以进行对比或添加额外信息。 由于Matlab中未收录带分组折线段的柱状图的绘制函数,因此需要大家自行设法解决。 本文使用自制的BarwithGroupedLine小工具进行…

大模型算法面试题(十四)

本系列收纳各种大模型面试题及答案。 1、微调后的模型出现能力劣化,灾难性遗忘是怎么回事 微调后的模型出现能力劣化,灾难性遗忘(Catastrophic Forgetting)是一个在机器学习领域,尤其是在深度学习和大模型应用中频繁出…

数据库(MySQL)-DQL数据查询语言

DQL(Data Query Language 数据查询语言)的用途是查询数据库数据,如select语句。其中,可以根据表的结构和关系分为单表查询和多表联查。 单表查询 单表查询:针对数据库中的一张数据表进行查询 全字段查询 语法:select 字段名 fro…

报警系统与机房动力环境监控系统的集成及报警功能实施

在当今的运维行业中,确保关键基础设施的安全与稳定运行面临着诸多挑战,如设备故障、环境异常、非法入侵等。为了有效应对这些挑战,报警系统与机房动力环境监控系统的集成变得至关重要。本文旨在为运维团队提供关于报警系统与机房动力环境监控…

使用frrouting、gns3、pim实现ipv6组播(三)

翻遍整个网络都没有找到用ipv6进行组播推流的实例。 朋友说:A true strong person never complains about the environment 那么,就由我来创造一个吧~ 此文涉及到的所有软件均为开源软件,进行深入学习与其他平台移植时十分便利。 记得点赞额…

如何在GPU服务器上安装Stable Diffusion webUI

一、前提条件 1、硬件条件 GPU:12G,建议16G以上,还是尽量勾搭,好像现在最大32G,目前个人性价比24G有时长出售。 内存:16G以上,建议32G,也是越大越好。 硬盘:最好使用…

2024年【金属非金属矿山(地下矿山)安全管理人员】考试报名及金属非金属矿山(地下矿山)安全管理人员模拟考试

题库来源:安全生产模拟考试一点通公众号小程序 2024年金属非金属矿山(地下矿山)安全管理人员考试报名为正在备考金属非金属矿山(地下矿山)安全管理人员操作证的学员准备的理论考试专题,每个月更新的金属非…

抖音矩阵管理系统功能说明:一站式掌握

在当下这个信息爆炸的时代,抖音作为短视频领域的佼佼者,其用户规模持续扩大,影响力日益增强。对于内容创作者和营销人员来说,如何高效管理抖音账号,实现内容的多平台分发和精准触达,成为了亟待解决的问题。…

Redis常用指令(不定期更新)

Redis常用指令(不定期更新) 查询指定前缀key的数量查看键空间事件开启键空间通知 查询指定前缀key的数量 查询【TEST前缀】的key数量 EVAL "return #redis.call(keys,TEST:*)" 0返回信息 查看键空间事件 config get notify-keyspace-even…

Navicat Charts Creator for Mac:数据可视化利器

Navicat Charts Creator for Mac是一款专为Mac用户设计的数据可视化工具,它将复杂的数据转化为直观、易懂的图表,帮助用户更好地理解和分析数据。 该软件支持连接到多种数据库,如MySQL、MariaDB、PostgreSQL等,轻松获取实时数据&…

【QGroundControl二次开发】七.QGC自定义MAVLink消息MavLink通信协议 C++应用

1. 接收解析源码分析 通过接收串口或UDP发来的的字节流buffer&#xff0c;长度lengthbuffer.size()&#xff0c;通过下列脚本解析&#xff0c;每解析出一个mavlink数据包就执行onMavLinkMessage函数 for(int i 0 ; i < length ; i){msgReceived mavlink_parse_char(MAVL…

VS2022下安装和配置OpenCV环境参数+QT开发环境搭建

1.工具准备 VS2022,OpenCV4.5.5版本&#xff0c;QT5.12.12 VisualStudio最新版直接官网下载&#xff0c;根据需要进行下载&#xff0c;我下载的免费社区版本。日常开发完全够用。 qt官网下载5.12版本。 OpenCVReleases - OpenCV 选择Windows版本下载并解压到本地磁盘&#xff0…

在Spring项目中使用Maven和BCrypt来实现修改密码功能

简介 在数字时代&#xff0c;信息安全的重要性不言而喻&#xff0c;尤其当涉及到个人隐私和账户安全时。每天&#xff0c;无数的用户登录各种在线服务&#xff0c;从社交媒体到银行账户&#xff0c;再到电子邮件和云存储服务。这些服务的背后&#xff0c;是复杂的系统架构&am…

【BUG】已解决:No Python at ‘C:Users…Python Python39python. exe’

No Python at ‘C:Users…Python Python39python. exe’ 目录 No Python at ‘C:Users…Python Python39python. exe’ 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班…

【linux服务器】大语言模型实战教程:LLMS大模型快速部署到个人服务器

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引言 说到大语言模型相信大家都不会陌生&#xff0c;大型语言模型(LLMs)是人工智能文本处理的主要类型,也现在最流行的人工智能…

【数据结构】线性表与顺序表

&#x1f6a9; WRITE IN FRONT &#x1f6a9; &#x1f50e; 介绍&#xff1a;"謓泽"正在路上朝着"攻城狮"方向"前进四" &#x1f50e;&#x1f3c5; 荣誉&#xff1a;2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…

【算法】分布式共识Paxos

一、引言 在分布式系统中&#xff0c;一致性是至关重要的一个问题。Paxos算法是由莱斯利兰伯特&#xff08;Leslie Lamport&#xff09;在1990年提出的一种解决分布式系统中一致性问题的算法。 二、算法原理 Paxos算法的目标是让一个分布式系统中的多个节点就某个值达成一致。算…

【Django】前端技术-网页样式表CSS

文章目录 一、申明规则CSS的导入方式行内样式内部样式外部样式 二、CSS的选择器1. 基本选择器标签选择器&#xff1a; 选择一类标签 标签{}类选择器 class&#xff1a; 选择所有class属性一致的表情&#xff0c;跨标签.类名{}ID选择器&#xff1a;全局唯一 #id名{} 2.层次选择器…

束搜索(与贪心、穷举对比)

一、贪心搜索 1、基于贪心搜索从Y中找到具有最高条件概率的词元&#xff0c;但贪心可能不是最优解 2、比如 &#xff08;1&#xff09;贪心&#xff1a;.5*.4*.2*.1.0024 &#xff08;2&#xff09;另外&#xff1a;.5*.3*.6*.6.0054 二、穷举搜索 &#xff08;1&#xff0…

Transformer中的Multi-head Attention机制解析——从单一到多元的关注效益最大化

Transformer中的Multi-head Attention机制解析——从单一到多元的关注效益最大化 Multi-head Attention的核心作用 组件/步骤描述多头注意力机制&#xff08;Multi-head Attention&#xff09;Transformer模型中的关键组件&#xff0c;用于处理序列数据功能允许模型同时关注到…