向量库与嵌入模型

简介

非结构化数据

世界上大约超过百分之八十的数据都是非结构化数据,例如:图像、音视频、自然语言等,这些模型不遵循预定义的模式或组织方式,可以使用各种人工智能 (AI) 和机器学习 (ML) 模型转换为向量。

嵌入向量(Embedding vectors)

嵌入向量是非结构化数据的特征抽象,例如电子邮件、物联网传感器数据、Instagram 照片、蛋白质结构等等。从数学上来说,嵌入向量是浮点数或二进制数的数组。现代嵌入技术用于将非结构化数据转换为嵌入向量。

向量相似度搜索

向量相似性搜索是将向量与数据库进行比较以查找与查询向量最相似的向量的过程。近似最近邻(ANN - Approximate nearest neighbor)搜索算法用于加速搜索过程。如果两个嵌入向量非常相似,则意味着原始数据源也相似。

索引

FLAT

不经过量化(扁平)的索引,没有分层或分组,进行相似度搜索时,系统会计算查询向量与所有存储向量之前的相似度。因为它需要计算查询向量与所有存储向量之间的相似度,这会随着数据量的增加而变得非常昂贵,大规模数据集时需要更复杂的索引结构,如IVF_FLAT。
特点:每个向量都是扁平的,即未经过量化或者降维的处理,简单高效(更新效率高,不涉及倒排文件等结构)。
适用场景:适用于较小规模(百万级)的数据集,特别是当数据集能够完全加载到内存中时。

IVF_FLAT

Inverted File with FLAT (or non-quantized) vectors,即具有 flat(或非量化)向量的倒排文件索引,对应的还有一个 GPU 版本GPU_IVF_FLAT。
特点:使用了倒排文件(Inverted File)的结构,可以高效地处理大规模数据集。同时,每个向量也是扁平的,即未经过额外处理的原始向量。**
适用场景:适用于需要在大规模数据集中进行相似度搜索的情况,在搜索精度上与FLAT没有区别,但是在大规模数据集上可以先用倒排文件更快定位包含可能相似向量的倒排列表,从而减少计算相似度量的开销。

IVF_SQ8

Inverted File with Scalar Quantizer of 8 bits,即具有8位标量量化器的倒排文件索引。模型量化介绍
特点:它在量化向量时使用了较小的位数(8位),可以在保持较低存储开销的同时,实现相对较快的搜索速度。然而,由于使用了量化,可能会牺牲一些精度。
适用场景:用于在有限的磁盘、CPU 和 GPU 内存资源下,追求显著的资源消耗降低。这意味着在资源受限的环境中,它可以带来存储和内存的显著减少。

IVF_PQ

Inverted File with Product Quantization,对应的还有一个 GPU 版本GPU_IVF_PQ
特点:使用了一种叫做 Product Quantization 的技术,这种技术可以在加快查询速度的同时,对准确度进行一定的牺牲。
适用场景:用于追求高查询速度,会牺牲一定准确度。

HNSW

Hierarchical Navigable Small World,是一种基于图的索引结构,适用于对搜索效率要求较高的场景。这种索引结构通过构建一个分层的可导航小世界图,以支持高效的搜索操作。

相似度度量

欧氏距离(Euclidean Distance)

常用输入:计算机图像领域的内嵌Float向量
适用于连续的数值型数据,如图像处理、数值分析等领域。当各个特征的重要性相等时,欧氏距离是一个常见的选择。
欧氏距离

余弦相似度(Cosine Similarity)

常用输入:文本领域的内嵌Float向量
余弦相似度计算两组数据之间的夹角(假设它们都是从[0,0,…]开始的线),它的值范围是[-1, 1],值越大相似度越高。
主要用于衡量两个向量之间的夹角,而不受向量大小的影响。适用于高维稀疏数据,比如文本数据
余弦相似度

内积(Inner Product)

常用输入:文本/图形像素领域的内嵌Float向量
内积的计算是将两个向量对应位置的元素相乘后再相加。常用于度量两个向量的相似性,特别是在向量表示的语境中,如自然语言处理中的词向量。两个向量的内积越大,表示它们在方向上越相似,而越小则表示它们在方向上差异较大。内积主要用于度量向量之间的相似度,适用于密集向量。
内积

Jaccard相似度(Jaccard Similarity)

常用输入:文本领域的内嵌Binary向量
主要应用于集合数据,如文档相似度计算、推荐系统中用户行为的相似性等。 Jaccard相似度计算的是两个集合交集与并集的比值。
Jaccard相似度

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

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

相关文章

用ChatGPT教学、科研!大学与OpenAI合作

亚利桑那州立大学(简称“ASU”)在官网宣布与OpenAI达成技术合作。从2024年2月份开始,为所有学生提供ChatGPT企业版访问权限,主要用于学习、课程作业和学术研究等。 为了帮助学生更好地学习ChatGPT和大语言模型产品,AS…

01.Elasticsearch应用(一)

Elasticsearch应用(一) 1.什么是ELK ELK是一个免费开源的日志分析架构技术栈总称,包含三大基础组件,分别是Elasticsearch、Logstash、Kibana。但实际上ELK不仅仅适用于日志分析,它还可以支持其它任何数据搜索、分析和…

nodejs学习计划--(六)包管理工具

包管理工具 1. 介绍 包是什么 『包』英文单词是 package ,代表了一组特定功能的源码集合包管理工具 管理『包』的应用软件,可以对「包」进行 下载安装 , 更新 , 删除 , 上传 等操作 借助包管理工具,可以快…

【若依】前后端分离框架部署

1.拉取若依项目代码 进入若依 基于SpringBootVue前后端分离的Java快速开发框架,并通过相应协议拉取到本地IDE 2.前端部署 2.1.下载nodejs 进入nodejs官网下载所需版本, 完成后在命令行运行npm -v可查询版本 2.2.配置依赖 在若依ui目录下运行 np…

oracle古法unwrap手艺(oracle存储过程解码)

先说骚话 首先oracle官方是不支持解包的,见Doc ID 376303.1 但是需求来了。我就寄希望于民间大神的工具。很顺利,找到了几个,甚至还有网页版,以为是个easy money。 但是,我点背,总是能遇到精彩的情况。数…

Android开发--状态栏布局隐藏的方法

1.问题如下,安卓布局很不协调 2.先将ActionBar设置为NoActionBar 先打开styles.xml 3.使用工具类 package com.afison.newfault.utils;import android.annotation.TargetApi; import android.app.Activity; import android.content.Context; import android.graph…

【Elasticsearch篇】详解使用RestClient操作索引库的相关操作

文章目录 🍔什么是Elasticsearch🌺什么是RestClient🎆代码操作⭐初始化RestClient⭐使用RestClient操作索引库⭐使用RestClient删除索引库⭐使用RestClient判断索引库是否存在 🍔什么是Elasticsearch Elasticsearch是一个开源的分…

SpringBoot 统计更多Api接口SQL相关日志信息

统计(查询,更新,批量更新)SQL执行次数及用时并输出log import com.zhangziwa.practisesvr.utils.log.LogContext; import org.apache.ibatis.executor.statement.StatementHandler; import org.apache.ibatis.plugin.Interceptor; import org.apache.ibatis.plugin.Intercepts…

什么是通配监听端口? 什么是通配监听IP?

什么是通配监听端口? 监听端口: 指的是服务器或服务开启的特定TCP或UDP端口号,等待客户端连接或发送数据。TCP/IP协议下每个端口只能由一个服务独占监听,一个服务或应用会指定监听特定的一个或多个端口来接收客户端的连接请求。 例如 Web…

RocketMQ-Windows版本安装

RocketMQ-Windows版本安装 1.环境准备 JDK和maven需要先安装好,我这里使用的JDK1.8版本 Maven 3.8.6版本。需要注意的是,这里配置java时需要指定JAVA_HOME环境变量 RokectMQ才能正常启动。 2.下载RocketMQ 官网下载: https://rocketmq.apache.org/z…

C++读取txt文件中的逐个字符

为了增加读取的灵活性,所以separator和filename都设置为在主函数中获取输入或者在函数中传参的视线方法 举个例子,txt文件如下: household;2;true; 首先声明一个读取数据的文件 void read_data_file(const string& filename,char se…

Matplotlib Mastery: 从基础到高级的数据可视化指南【第30篇—python:数据可视化】

文章目录 Matplotlib: 强大的数据可视化工具1. 基础1.1 安装Matplotlib1.2 创建第一个简单的图表1.3 图表的基本组件:标题、轴标签、图例 2. 常见图表类型2.1 折线图2.2 散点图2.3 条形图2.4 直方图 3. 图表样式与定制3.1 颜色、线型、标记的定制3.2 背景样式与颜色…

CC工具箱使用指南:【属性映射】

一、简介 在规划工作中,经常会遇到这样一种情况,有一组一一对应的值。 比如用地编码和用地名称,用地编码【0101】和用地名称【水田】是对应的。 当你在用地编码字段输入【0101】时,用地名称值就必须为【水田】。 当我们确定用地…

gin路由篇

1. 基本路由 gin 框架中采用的路由库是基于httprouter做的 import ("net/http""github.com/gin-gonic/gin" )func main() {// 1.创建路由r : gin.Default()// 2.绑定路由规则,执行的函数// gin.Context,封装了request和responser.…

Nacos源码下载与运行

早先在linux环境下搭建过nacos环境 即Centos安装部署nacos实战,本次是从官网上下载源码,本地运行看看,记录过程,方便备查。 第一步、Nacos源码下载 推荐到nacos官网下载 Github地址,本次选择最新版,1.4.7…

查看Pytorch的GPU是否可用

查看Pytorch的GPU是否可用 import torch torch.cuda.is_available()返回为True表示 Pytorch 的 GPU 可用,返回为False表示 Pytorch 的 GPU 不可用。 其余命令: # 查看cuda是否可用 torch.cuda.is_available() # 返回当前设备索引 torch.cuda.current_d…

Kubeadm安装单master多node节点K8S集群

kubeadm安装k8s1.25版本集群步骤 环境说明实验环境规划集群搭建规划 初始化安装k8s集群的实验环境安装虚拟机更新yum源和操作系统配置机器主机名配置主机hosts文件,相互之间通过主机名互相访问配置主机之间无密码登录关闭交换分区swap,提升性能修改机器内…

Excel导出警告:文件格式和拓展名不匹配

原因描述: Content-Type 原因:Content-Type,即内容类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定文件接收方将以什么形式、什么编码读取这个文件,这就是经常…

Qt单选按钮

前言 本篇文章介绍Qt的单选按钮,就是QRadioButton QRadioButton是一个选项按钮,可以打开(选中)或关闭(取消选中)。单选按钮通常向用户提供“众多之一”的选择。 在一组单选按钮中,一次只能选中…

QT 实现自动生成小学两位数加减法算式

小学生加减法训练 QT实现–自动生成两位数加减法算式,并输出txt文件 可以copy到word文件,设置适当字体大小和行间距,带回家给娃做做题 void MainWindow::test(int answerMax, int count) {// 创建一个随机数生成器QRandomGenerator *gener…