向量库(Vector Database)

向量库
1. 向量库发展史
- 早期阶段(2000s)
- 基于关系型数据库的扩展(如 PostgreSQL 的向量插件)。
- 简单相似度计算(如欧氏距离、余弦相似度)。
- 专用向量库的兴起(2010s)
- FAISS(Facebook AI Research,2017):首个高效向量检索库。
- Annoy(Spotify,2013):基于树的近似最近邻搜索。
- Milvus(2019):首个开源分布式向量数据库。
- 现代阶段(2020s)
- 云原生向量库(如 Pinecone、Weaviate)。
- 多模态支持(文本、图像、视频向量统一管理)。
- 与 AI 生态深度集成(如结合大语言模型)。
2. 向量库核心技术点
-
核心组件
- 索引结构:支持高效查询的数据结构(哈希、树、图、量化等)。
- 相似度算法:余弦相似度、欧氏距离、内积等。
- 分布式架构:水平扩展、负载均衡、容灾恢复。
- 存储优化:压缩技术(如 PQ 乘积量化)、内存管理。
-
核心功能
- 向量插入、删除、更新。
- 近似最近邻搜索(ANN)。
- 混合查询(向量 + 结构化数据过滤)。
3. 相似度搜索算法分类
-
基于哈希(Hash-based)
- 局部敏感哈希(LSH)
- 原理:通过哈希函数将相似向量映射到相同桶。
- 适用场景:高维数据快速检索。
- 支持的库:FAISS(LSH 索引)、Vald。
- 多探针 LSH
- 改进:允许跨桶搜索,提高召回率。
- 局部敏感哈希(LSH)
-
基于树(Tree-based)
- KD-Tree
- 原理:递归划分高维空间。
- 缺点:高维数据效率低。
- Ball Tree
- 改进:以超球体划分空间,适合高维数据。
- Annoy(Approximate Nearest Neighbors Oh Yeah)
- 原理:构建多棵二叉树,通过投票机制合并结果。
- 支持的库:Annoy、Elasticsearch(部分支持)。
- KD-Tree
-
基于图(Graph-based)
- HNSW(Hierarchical Navigable Small World)
- 原理:构建分层图结构,快速导航到近邻。
- 优势:高召回率、低延迟。
- 支持的库:FAISS、Milvus、Weaviate。
- NSG(Navigating Spreading-out Graph)
- 改进:优化图结构,减少内存占用。
- HNSW(Hierarchical Navigable Small World)
-
基于量化(Quantization-based)
- IVF(Inverted File Index)
- 原理:聚类向量,建立倒排索引。
- 支持的库:FAISS、Milvus。
- PQ(Product Quantization)
- 原理:将高维向量分解为子空间并量化。
- 优势:大幅减少内存占用。
- 支持的库:FAISS、Milvus。
- IVF(Inverted File Index)
-
混合方法
- IVF-PQ:结合倒排索引和乘积量化。
- HNSW + IVF:分层图与聚类结合。
4. 主流向量库推荐
-
开源向量库
- FAISS
- 特点:高性能、支持多种索引(IVF、HNSW、PQ)。
- 适用场景:单机小规模数据。
- Milvus
- 特点:分布式、支持混合查询、云原生。
- 适用场景:大规模生产环境。
- Weaviate
- 特点:内置多模态模型、GraphQL 接口。
- Annoy
- 特点:轻量级、基于树的索引。
- FAISS
-
商业/云服务
- Pinecone
- 特点:全托管、自动索引优化、低延迟。
- Zilliz Cloud
- 特点:基于 Milvus 的云服务,企业级功能。
- Pinecone
5. 学习方法与资源
-
学习路径
- 基础理论:线性代数(向量空间、距离度量)、数据结构(树、图)。
- 工具实践:FAISS/Milvus 官方文档、示例代码。
- 算法深入:阅读论文(如 HNSW、PQ 的原始论文)。
-
推荐资源
- 书籍:
- 《Nearest Neighbor Search: A Database Perspective》
- 《Similarity Search and Applications》
- 论文:
- HNSW(arXiv:1603.09320)
- PQ(arXiv:1009.4579)
- 在线课程:
- Coursera《Approximate Nearest Neighbor Search for Machine Learning》
- 社区:
- GitHub(FAISS、Milvus 仓库)。
- 知乎、Stack Overflow 技术讨论。
- 书籍:
-
动手实践
- 使用 FAISS 实现 IVF-PQ 索引。
- 在 Milvus 中部署分布式向量检索服务。
- 对比 HNSW 与 IVF 的召回率与性能。
6. 使用向量库的典型流程
-
数据准备
- 生成向量(使用预训练模型如 BERT、ResNet)。
- 数据清洗与归一化。
-
索引构建
- 选择算法(HNSW、IVF-PQ 等)。
- 配置参数(如聚类数、量化维度)。
-
查询优化
- 调整搜索参数(
nprobe、efSearch)。 - 混合过滤(结合结构化条件)。
- 调整搜索参数(
-
性能监控
- 召回率(Recall)与延迟(Latency)权衡。
- 资源占用(内存、CPU/GPU 利用率)。
7. 重要补充技术
-
量化技术(Quantization)
- 标量量化(SQ):降低向量精度(如 float32 → int8)。
- 残差量化(RQ):多阶段量化提升精度。
-
近邻图算法变种
- NGT(Neighborhood Graph and Tree):结合图与树结构。
- SPTAG(微软):基于图的分布式索引。
-
GPU 加速
- RAPIDS RAFT:基于 CUDA 的加速库。
- Milvus GPU 版:支持 GPU 索引构建与查询。
8. 应用场景
- 推荐系统:用户/商品向量匹配。
- 图像检索:以图搜图、版权检测。
- 自然语言处理:语义搜索、问答系统。
- 生物信息学:基因序列比对。
9. 未来趋势
- 自动化索引调优:基于机器学习的参数优化。
- 多模态统一检索:文本、图像、视频跨模态搜索。
- 边缘计算:轻量级向量库在端侧设备的应用。
通过此大纲,您可以从理论到实践全面掌握向量库的核心知识,并选择合适的工具与算法解决实际问题。
相关文章:
向量库(Vector Database)
向量库 1. 向量库发展史 早期阶段(2000s) 基于关系型数据库的扩展(如 PostgreSQL 的向量插件)。简单相似度计算(如欧氏距离、余弦相似度)。 专用向量库的兴起(2010s) FAISS…...
torchsparse安装过程的问题
1、项目要求torchsparse githttps://github.com/mit-han-lab/torchsparse.gitv1.4.0 2、torch1.8.1cu111 nvcc--version:11.1 这个版本的cuda匹配的gcc、g经常是7.5。设置为7.5. (这个gcc、g版本修改不一定,可以先进行后面的,…...
【核心算法篇七】《DeepSeek异常检测:孤立森林与AutoEncoder对比》
大家好,今天我们来深入探讨一下《DeepSeek异常检测:孤立森林与AutoEncoder对比》这篇技术博客。我们将从核心内容、原理、应用场景等多个方面进行详细解析,力求让大家对这两种异常检测方法有一个全面而深入的理解。 一、引言 在数据科学和机器学习领域,异常检测(Anomaly…...
Win10环境使用零讯ZeroNews内网穿透实现Deepseek对外服务
Win10环境使用零讯ZeroNews内网穿透实现Deepseek对外服务 前言 之前笔者已经在Win10环境搭建好了Ollama、DeepSeek、Open WebUI、Dify等组件,成功实现了私有化部署及内网访问: https://lizhiyong.blog.csdn.net/article/details/145505686 https://l…...
CUDA 安装 一直卡在Installing Nsight Visual Studio Edition
最近在安装CUDA的时候,CUDA 安装 一直卡在Installing Nsight Visual Studio Edition,莫名的一直卡在安装进行中这儿,过很久都没进度,如图 后面重新下载了12.6的进行安装也是如此 无论是local还是network,都是这样。度…...
Softing线上研讨会 | 自研还是购买——用于自动化产品的工业以太网
| 线上研讨会时间:2025年1月27日 16:00~16:30 / 23:00~23:30 基于以太网的通信在工业自动化网络中的重要性日益增加。设备制造商正面临着一大挑战——如何快速、有效且经济地将工业以太网协议集成到其产品中。其中的关键问题包括:是否只需集成单一的工…...
STM32 定时器产生定周期方法
目录 背景 程序 第一步、使能PCLK1外设时钟编辑 第二步、时基单元配置 第三步、配置NVIC(设置定时中断优先级)编辑 第四步、使能溢出中断 第五步、使能定时器 第六步、填写中断处理函数(ISR) 背景 在单片机开发当中&…...
解锁机器学习核心算法 | 支持向量机:机器学习中的分类利刃
一、引言 在机器学习的庞大算法体系中,有十种算法被广泛认为是最具代表性和实用性的,它们犹如机器学习领域的 “十大神器”,各自发挥着独特的作用。这十大算法包括线性回归、逻辑回归、决策树、随机森林、K - 近邻算法、K - 平均算法、支持向…...
青少年编程与数学 02-009 Django 5 Web 编程 21课题、部署
青少年编程与数学 02-009 Django 5 Web 编程 21课题、部署 一、软件开发部署部署的主要内容部署的步骤部署的方式部署的环境 二、Django项目部署1. 准备工作2. 代码部署3. 配置Django项目4. Web服务器和应用服务器配置5. 安全和性能优化6. 监控和日志管理7. 测试和上线 三、在U…...
ARM系统源码编译OpenCV 4.10.0(包含opencv_contrib)
因项目部署在ARM系统上,需要编译一个arm版本的opencv-4.10.0(带opencv_contrib)版本。 若需要Linux系统下源码安装OpenCV,可参考:https://blog.csdn.net/qq_45445740/article/details/142770493?spm1001.2014.3001.55…...
cmake:定位Qt的ui文件
如题。在工程中,将h,cpp,ui文件放置到不同文件夹下,会存在cmake找不到ui文件,导致编译报错情况。 cmake通过指定文件路径,确保工程找到ui文件。 标识1:ui文件保存路径。 标识2:添加…...
(leetcode 1749 前缀和)1749. 任意子数组和的绝对值的最大值
核心题意 任意子数组和 的绝对值的最大值实际上是前缀和之间的差的最大值 建立前缀和数组 如果我们只考虑前缀和的最大值和最小值之差,那么就能够获得一个最大的子数组和的绝对值。因为任意一个子数组的和 prefix[j1] - prefix[i],它的绝对值是最大当…...
下载安装运行测试开源vision-language-action(VLA)模型OpenVLA
1. 安装 项目官网OpenVLA 首先按照官网提示的以下代码,执行创建环境->安装最小依赖->git克隆项目等 # Create and activate conda environment conda create -n openvla python3.10 -y conda activate openvla# Install PyTorch. Below is a sample comma…...
【网络安全 | 漏洞挖掘】我如何通过Cookie Manipulation发现主域上的关键PII?
未经许可,不得转载。 文章目录 正文正文 在分析 Example.com 的认证机制时,我注意到一个特定的 cookie,USER_ID,包含了一个具有预测性的会话标识符,其格式为: USER_ID="VYCVCDs-TZBI:XXXX-random-data"其中,XXXX 是由四个大写字母组成的部分,我使用 Burp S…...
【操作系统】操作系统概述
操作系统概述 1.1 操作系统的概念1.1.1 操作系统定义——什么是OS?1.1.2 操作系统作用——OS有什么用?1.1.3 操作系统地位——计算机系统中,OS处于什么地位?1.1.4 为什么学操作系统? 1.2 操作系统的历史1.2.1 操作系统…...
SQL Server 运算符优先级
在 SQL Server 中,运算符的优先级决定了在没有使用括号明确指定计算顺序时,运算符的执行顺序。 运算符优先级列表 括号 () 一元运算符 (正号)-(负号)~(按位取反) 乘法、除法和取模…...
Python的顺序结构和循环结构
文章目录 一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(c)多分支 if-elif-elif-...-else (3)注意事…...
深入浅出TypedArray:网络数据处理、WebGPU与加密实战
JavaScript的TypedArray是现代Web开发中处理二进制数据的利器。本文将结合网络数据传输、WebGPU编程和简单加密算法三个实战场景,带你领略TypedArray的强大能力。 一、TypedArray基础认知 TypedArray家族包括Int8Array、Uint16Array、Float32Array等11种视图类型&a…...
http 响应码影响 video 标签播放视频
背景 使用后端给的文件下载接口地址实现视频播放,但是 video 标签一直无法播放视频如下图,把接口地址放到浏览器请求能直接下载。但就是不能播放 原因 http 响应码不正确,返回201是无法播放视频200可以如下图 状态码的影响: 20…...
观察者模式原理详解以及Spring源码如何使用观察者模式?
前言 首先说明观察者模式,观察者模式,也叫发布-订阅模式,应该是用来处理对象间的一对多依赖关系的。当被观察者的状态变化时,所有依赖它的观察者都会得到通知并自动更新。 观察者模式的结构,通常包括Subject࿰…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
