关于对向量检索研究的一些学习资料整理
官方学习资料
主要是的学习资料是, 官方文档 和官方博客。相关文章还是挺多 挺不错的 他们更新也比较及时。有最新的东西 都会更新出来。
es scdn官方博客
这里简单列一些,还有一些其他的,大家自己感兴趣去看。
什么是向量数据库
Elasticsearch:向量数据库的真相-CSDN博客
什么是向量嵌入
什么是大语言模型(LLM)
什么是语义搜索
向量搜索的优势
什么是机器学习
关于多模态
这个是多模态检索。目前es只能做文本类转向量的模型导入。不支持图片转向量的模型导入。(clip是双塔模型,一个负责文本转向量,一个负责图片转向量。我测过了,图片转向量模型不支持导入)如果用es做多模态。还是要在外边部署模型。 整体体验不好。而且模型导入es,是收费的白金版。 最佳实践(不付费玩法)应该是完全在外边做转向量。 考虑付费,可以用es
学术界前沿的研究对比
这个是学术稍微前沿一点的研究。里边包含的论文,感兴趣可以看看。里边探讨对比了关于BM25和向量检索的效果。还包含稀疏向量相关的知识。
关于稀疏向量
稠密向量有一个致命问题。 检索速度,以及做嵌入的速度。太慢,现在最先进的方向是稀疏向量
这里边有对比 语义检索 和 BM25的效果对比。(最佳实践是两者结合,做内容召回。两者可以互补)根据官方提供的稀疏向量的模型测试结果如下图所示,据说20个场景有19个都优遇BM25.
这是稀疏向量模型的转换效果,应该不会多花费空间。它的维度相对低。
这里有我的一篇文章,国内生产实践经验帖。ES-ELSER 如何在内网中离线导入ES官方的稀疏向量模型(国内网络环境下操作方法)-CSDN博客
如何做向量嵌入
模型转向量,简单来讲,是利用机器学习模型把一块文本(数据),映射到网络空间内,同样问题(query)也是用同一个模型,映射到网络空间内。然后计算cosin值,也就是夹角越小,就越相近。
我在生产实践中,是选择使用es来的机器学习模块倒入hugging face上的NLP模型,来做文本嵌入。
这里有一篇我自己写的国内环境下。如何在es中导入NLP模型。elasticsearch 内网下如何以离线的方式上传任意的huggingFace上的NLP模型(国内避坑指南)-CSDN博客
这里还有一个例子,是在es中使用 E5 嵌入模型进行多语言向量搜索
向量检索简单举个例子
data 是一篇文章的内容。这个内容最终可能是切分成N个片段。 然后通过模型把每个片段都转成向量,然后再把向量存到向量库。
例如,第一个段落 片段转完是 [1.0000009,0.11111111,0.899998]
然后问题,也转成向量可能是 [1.0044449,0.55551111,0.449998]
然后通过计算这两个数组,的cosin值,然后再比较 其它片段和问题的cosin值(当然还可以用其它计算方式),然后做个排序,然后把topN小的返回。这就是KNN最邻近搜索。
关于相关性或者说相似性
相似不相似,其实更多是依赖模型效果好不好。向量库都只是起计算作用。关于向量库的选择,只需要看该向量数据库的稳定性,数据承载能力(也就是能存多少数据,是否满足业务需求。)已经向量数据库实现的向量检索算法都有哪些(实际上目前学术界也就那么多)。还有就是该库的检索性能如何,稳定性如何,能够满足业务需求。但是不要想着在向量数据库上去提升搜索相关性的事情,因为相关性和库没有太大关系。如何要研究提升召回效果。应该去考虑选择什么样的机器学习模型效果更好,还要考虑模型的语言能力,是否支持多语种。例如你在英文模型下做中文数据的embedding,效果肯定会很差。此外不同的业务应该选择自己的模型,加上微调。而不是一个大一统的模型。另外一个提升相关性的方向是探索数据切割的规则,针对不同类型的数据做不同的切分。
实际上利用向量检索的相关性效果,还确实是比BM25好的。但是它不是绝对的,在关键词精准匹配场景下,BM25算法更好一些。
如何选择模型
语义检索系统如何选择合适的embedding模型-CSDN博客
使用模型做文本陷入,如何做数据切分,不丢失语义
目前这一块探索还比较少。根据看过的一些案例,基本上推荐在500个token,300-400个字。再多了就会丢失语义。这里还需要摸索和测试一下。
ES支持混合检索吗? 向量检索+倒排索引
es ANN搜索
这样可以先筛选数据。然后剩下的在做 knn搜索。这个逻辑会先走倒排搜索。
提供一个向量检索的案例
腾讯es云,最近写的最佳实践
关于请求改写经验
美团的查询改写
相关文章:
关于对向量检索研究的一些学习资料整理
官方学习资料 主要是的学习资料是, 官方文档 和官方博客。相关文章还是挺多 挺不错的 他们更新也比较及时。有最新的东西 都会更新出来。es scdn官方博客 这里简单列一些,还有一些其他的,大家自己感兴趣去看。 什么是向量数据库 Elasticse…...
软件开发流程分析
软件开发流程分析 相关概念1 原型设计2 产品设计3 交互设计4 代码实现详细步骤 相关概念 前端:自研API,调用第三放API 后端:自研API,第三方API 数据库:Mysql,数据采集,数据迁移 服务器…...
017 OpenCV 向量机SVM
目录 一、环境 二、SVM原理 三、完整代码 一、环境 本文使用环境为: Windows10Python 3.9.17opencv-python 4.8.0.74 二、SVM原理 OpenCV中的向量机(SVM)是一种监督学习算法,用于分类和回归分析。它通过找到一个最优的超平…...
Qt练习题
1.使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",密码是否…...
文本转图像 学习笔记
VQGAN (Vector Quantized Generative Adversarial Network) 是一种基于 GAN 的生成模型,可以将图像或文本转换为高质量的图像。 VQ (Vector Quantization)是一种数据压缩技术,是指将连续数据表示为离散化的向量。输入的图像或文本…...
开源CDN软件GoEdge —— 筑梦之路
官方网站:GoEdge CDN - 制作自己的CDN - GoEdge CDN | 自建CDN GoEdge是一款管理分布式CDN边缘节点的开源工具软件,目的是让用户轻松地、低成本地创建CDN/WAF等应用。 特性 免费 - 开源、免费、自由、开放 简单 - 架构简单清晰,安装简单&a…...
基于SpringBoot+Vue会员制医疗预约服务管理信息系统(Java毕业设计)
点击咨询源码 大家好,我是DeBug,很高兴你能来阅读!作为一名热爱编程的程序员,我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里,我将会结合实际项目经验,分享编程技巧、最佳实践以及解决问题的…...
【Linux | 编程实践】防火墙 (网络无法访问)解决方案 Vim常用快捷键命令
🤵♂️ 个人主页: AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!&…...
仅 CSS 阅读进度条
为了构建一个阅读进度条,即显示用户向下滚动时阅读文章的进度,很难不考虑 JavaScript。但是,事实证明,您也可以使用纯 CSS 构建阅读进度条。 从本质上讲,一个名为 animation-timeline 的新实验性 CSS 属性可以让你指定…...
深度剖析中国居民消费价格指数CPI数据可视化案例-Python可视化技术实现(附完整源码)【数据可视化项目案例-16】
🎉🎊🎉 你的技术旅程将在这里启航! 🚀🚀 本专栏包括所有的可视化技术学习,感兴趣可以到本专栏页面,查阅可视化宝典可快速了解本专栏。订阅专栏用户可以在每篇文章底部下载对应案例源码以供大家深入的学习研究。 🎓 每一个案例都会提供完整代码和详细的讲解,不论…...
SpringBoot——嵌入式 Servlet容器
一、如何定制和修改Servlet容器的相关配置 前言: SpringBoot在Web环境下,默认使用的是Tomact作为嵌入式的Servlet容器; 【1】修改和server相关的配置(ServerProperties实现了EmbeddedServletContainerCustomizer)例如…...
王炸升级!PartyRock 10分钟构建 AI 应用
前言 一年一度的亚马逊云科技的 re:Invent 可谓是全球云计算、科技圈的狂欢,每次都能带来一些最前沿的方向标,这次也不例外。在看完一些 keynote 和介绍之后,我也去亲自体验了一些最近发布的内容。其中让我感受最深刻的无疑是 PartyRock 了。…...
文件管理和操作工具Path Finder mac功能介绍
Path Finder mac是一款Mac平台上的文件管理和操作工具,提供了比Finder更丰富的功能和更直观的用户界面。它可以帮助用户更高效地浏览、复制、移动、删除和管理文件,以及进行各种高级操作。 Path Finder mac软件功能 - 文件浏览:可以快速浏览文…...
转换 pytorch 格式模型为 caffe格式模型 pth2caffemodel
基于 GitHub xxradon/PytorchToCaffe 源码,修改 example\resnet_pytorch_2_caffe.py 如下 import os import sys sys.path.insert(0, .)import torch from torch.autograd import Variable from torchvision.models import resnet import pytorch_to_caffe"&q…...
【S32DS RTD实战】-1.3-S32K3工程生成S19,BIN,Hex文件,以及Post-build steps的妙用
目录 1 方法一:逐个生成Motorola S-record(s19,srec…),Intel HEX,Bin文件 1.1 生成Motorola S-record(s19,srec…)文件 1.2 生成Intel HEX文件 1.3 生成Bin文件 2 …...
Java工程找不到javax.xml.bind.annotation包
文章目录 问题解决方法参考 问题 最近Java工程找不到javax.xml.bind.annotation包,进行了解决。 解决方法 参考 stackoverflow: package javax.xml.bind.annotation does not exist error javax.xml.bind这个库从Java 11版本就被移除了,缺失了这个包…...
【C语言】网络字节序和主机字节序
网络字节序和主机字节序是计算机中字节的两种排序方式,它们主要用于解决不同计算机之间数据通信的问题。 一、网络字节序 也被称为大端字节序,是一种标准的字节序。在网络通信中,如果两台主机的字节序不同,可能会导致数据解释的二…...
极简模式,助力宏观数据监控
随着UWA GOT Online采样的参数越来越多样化,为了提升开发者的使用体验,我们最新推出了三种预设数据采集方案:极简模式、CPU模式、内存模式。该更新旨在降低多数据采集对数据准确性的干扰,同时也为大家提供更精准且有针对性的数据指…...
智能优化算法应用:基于花授粉算法3D无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于花授粉算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于花授粉算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.花授粉算法4.实验参数设定5.算法结果6.参考文…...
IT圈的“鄙视链”大揭秘:从Java到Go,编程语言之战!
目录 编辑 Java程序员: 自信满满的领头羊 C语言程序员: 严肃的技术守护者 汇编语言程序员: 古老的传承者 Go语言程序员: 新晋的潜力股 结语: 编程语言,相互鄙视中求共存 我的其他博客 在IT圈…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
