向量索引技术详解:从基础概念到常见算法
一.向量索引1.什么是数据库中的向量在数据库中一个向量通常表现为一个浮点数数组(是对于数据的标识)。语义相近的对象其向量在空间中通常也更接近。例:[0.12, -0.98, 0.45, 0.67]2.常见距离度量(1)欧氏距离(距离越小越相似)d(x, y) sqrt(Σ(xᵢ - yᵢ)²)(2)曼哈顿距离(距离越小越相似)d(x, y) Σ|xᵢ - yᵢ|(3)余弦相似度(余弦相似度越大方向越接近。)cos(x,y) (x · y) / (|x| |y|)二.精确KNN与近似KNN1.暴力扫描:读取每个向量计算它与查询向量的距离维护当前最相似的K个结果。优缺点:这种方法结果准确但数据量大时速度较慢。如果有N个向量每个向量有D个维度计算成本大致为O(ND)2.近似最近较(ANN)ANN不保证返回绝对最优的结果但可以显著减少搜索时间。核心思想:牺牲少量召回率,换取更低的查询延迟三.向量索引的常见方法1.空间划分:把向量空间划分为多个区域2.局部敏感哈希(LSH)相似对象 → 大概率哈希到相同桶 不相似对象 → 大概率哈希到不同桶优点查询速度快;可用于高维近似搜索缺点需要多个哈希函数或多个哈希表;召回率和空间使用之间需要权衡;查询结果是近似的3.倒排文件索引(IVF)核心流程是使用聚类算法把向量分成多个簇(按照相似度分)每个簇保存一个中心点查询时先找距离最近的若干簇只在这些簇内部搜索。4.乘积量化(PQ)基本思想把一个高维向量拆成多个子向量为每个子空间建立聚类中心用聚类中心编号代替原始浮点数。优点大幅节省空间;减少内存访问;可使用近似距离计算缺点会损失精度;需要额外训练和构建过程5.HNSW-一种图索引它把向量看成图中的节点每个节点连接若干相近节点节点A ↔ 节点B ↔ 节点C搜索时从入口节点开始移动到距离查询向量更近的邻居到达当前层的局部最优位置进入下一层最后在底层进行更精细搜索。优点查询速度快;召回率通常较高;适合高维向量缺点内存占用较大;插入和删除成本较高;动态更新比普通B树复杂四.预过滤和后过滤1.预过滤:先过滤在进行向量检索优点搜索范围小;结果满足过滤条件缺点过滤条件选择性不好时效果有限;需要同时维护标量索引和向量索引2.后过滤:先向量检索在进行过滤五.反向索引1.概念:主要用于全文搜索,不保存文档-关键字,反过来保存关键字-文档例:数据库 → 文档1、文档2 索引 → 文档1、文档3 查询 → 文档2 优化 → 文档32.倒排列表:每一个词都对应一个倒排列表3.TF-IDF和相关性排序反向索引不仅用于判断文档是否包含关键词还要对结果排序。(1)TF词频.表示一个词在当前文档中出现的频率。(2)IDF:逆文档频率.用于降低常见词的权重(3) TF-IDF:试图衡量某词在文章当中的重要程度六.过滤器1.过滤器的主要用途不是返回完整结果而是快速判断某个元素一定不存在 或 某个元素可能存在如果过滤器说“不存在” → 一定不存在 如果过滤器说“存在” → 可能存在需要进一步检查2.Bloom Filter(1)概念:Bloom Filter由一个位数组;多个哈希函数组成(2)插入元素用多个哈希函数计算多个位置将这些位置设为1。(3)查询元素计算相同的多个位置如果其中一个位置为0则元素一定不存在如果全部为1则元素可能存在。优点空间占用很小;查询速度快;适合判断“不存在”;不保存完整元素缺点存在假阳性;不支持精确删除;插入越多误判率越高;必须合理选择位数组大小和哈希函数数量(4)为什么该过滤器不能直接删除假设元素A.B都将5号位置设置为1,删除A时将5号位置请0,此时B任然有可能存在3.Cuckoo Filter:通常使用类似Cuckoo Hashing的思想保存元素指纹完整键 → 短指纹 fingerprint优点支持删除;查询速度快;某些情况下比Bloom Filter更灵活缺点仍然可能出现假阳性;高装载率下插入可能失败;需要处理元素迁移4.过滤器在数据库当中的用途(1).避免无意义的磁盘读取查询 key 100 → 过滤器判断该页一定没有100 → 不读取该页(2) LSM树中的SSTable,读取某个键时可以先查询每个SSTable的Bloom FilterSSTable A一定不存在 SSTable B可能存在 SSTable C一定不存在只读取B避免扫描A和C。(3)分布式系统中的远程访问优化如果过滤器判断某个节点一定没有数据就不必发起网络请求。七.三类索引的对比附

相关新闻

深度解析吴江城乡建设局网站如何成为市民获取最新房产政策与工程招标信息的权威首选入口

深度解析吴江城乡建设局网站如何成为市民获取最新房产政策与工程招标信息的权威首选入口

在这个信息爆炸的时代,无论是想要安居乐业的普通市民,还是在市场浪潮中搏击的建筑行业从业者,甚至是关注区域经济发展的投资者,大家脑海中浮现的第一个动作往往是打开搜索引擎,输入关键词,寻找那个最权威、最及时、最准确的信息源。对于生活在苏州吴江这片热土上的人们来…

2026/10/19 15:46:57 阅读更多 →
Vibe Coding:非程序员用自然语言开发AI应用的入门指南

Vibe Coding:非程序员用自然语言开发AI应用的入门指南

1. 项目概述:一本写给所有人的AI开发手册 最近几年,AI技术,特别是大语言模型,已经从实验室的尖端科技,变成了我们身边触手可及的工具。但一个普遍的困境是:很多有想法、有业务需求的朋友,并非计…

2026/10/19 1:44:35 阅读更多 →
如何解读大模型基准测试分数:从Opus 5的59%得分到实战选型

如何解读大模型基准测试分数:从Opus 5的59%得分到实战选型

1. 先搞清楚这个“59%”到底意味着什么 看到“Epoch AI 新基准测试 Opus 5 得分 59%”这个标题,很多人的第一反应可能是:这个分数是高是低?它和GPT-4、Claude 3比怎么样?这个测试到底测了什么? 别急着找排名表。这个分…

2026/10/15 21:04:02 阅读更多 →

最新新闻

Kali Linux VirtualBox全屏显示:Guest Additions安装与分辨率配置详解

Kali Linux VirtualBox全屏显示:Guest Additions安装与分辨率配置详解

很多刚开始折腾Kali Linux的朋友,第一次在VirtualBox里把它跑起来之后,第一个让人抓狂的问题往往不是工具链怎么配、网络怎么连,而是屏幕就那么一小块,窗口怎么拉都不管用,分辨率死活上不去。本来想开个终端敲命令&…

2026/10/20 6:52:44 阅读更多 →
主从博弈下售电商多元零售套餐与多级市场购电策略Matlab实现

主从博弈下售电商多元零售套餐与多级市场购电策略Matlab实现

做电力市场研究的朋友应该都有体会,售电公司这行最头疼的两件事,一是零售侧怎么设计套餐才能既吸引用户又不亏本,二是批发侧怎么在多个市场里买电才能把成本压下来。而这两个问题偏偏又耦合在一起:套餐定得不好,用户的…

2026/10/20 6:52:44 阅读更多 →
状态数据库与FTS索引双重防线:日志回放与重建恢复实战

状态数据库与FTS索引双重防线:日志回放与重建恢复实战

先讲一个我上周凌晨三点碰到的事:某服务的状态数据库在滚动重启时,发现全文搜索(FTS)索引文件损坏。状态库本体通过预写日志正常恢复,数据一条没丢,但所有依赖搜索的接口全部报错,用户查不到任何…

2026/10/20 6:52:44 阅读更多 →
双重防线:FTS索引与State DB的恢复实战指南

双重防线:FTS索引与State DB的恢复实战指南

凌晨两点半,某即时通信平台的核心服务在发布过程中被强制重启,启动日志里赫然写着“recovery completed”,所有人都松了口气。结果一个小时后业务方找过来:几个小时前的关键词检索查不到结果,部分消费者的消费位点凭空…

2026/10/20 6:52:44 阅读更多 →
阿里云AI算力硬件体系深度解析:GPU选型、RDMA互联与系统级调优

阿里云AI算力硬件体系深度解析:GPU选型、RDMA互联与系统级调优

1. 这不是“云厂商宣传稿”,而是一份算力硬件工程师的现场笔记“一文看懂阿里云AI算力硬件体系”——这个标题在技术社区里出现频率很高,但多数内容要么是PPT式罗列型号参数,要么是营销口径的“性能提升XX%”,真正能讲清楚“为什么…

2026/10/20 6:52:44 阅读更多 →
十大AI论文工具测评:从文献综述到定稿的实战指南

十大AI论文工具测评:从文献综述到定稿的实战指南

凌晨三点半,我收到一位学弟的消息:“文献综述又被导师打回来了,说写得像‘综述生成器’跑出来的。怎么办?”这个场景太常见了。2026年聊到研究生毕业论文写作,已经绕不开AI工具这个话题。它们确实能显著提速&#xff0…

2026/10/20 6:51:43 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →