向量数据库

一、核心痛点

  1. 简单暴力检索(遍历全量向量算相似度)仅适用于小数据量;
  2. 百万级高维向量下,MySQL普通字段存储+内存遍历,延迟极高、并发不可用
  3. 传统关系型数据库无原生向量索引,无法支撑海量语义检索。

二、核心核心概念

  1. ANN(近似最近邻搜索)
    放弃100%精确匹配,以极小召回率损耗,换取百倍检索性能提升,是向量检索的核心底层思想。
  2. 向量数据库本质
    专用存储 + ANN向量索引 + 标量过滤能力,专为高维向量相似度检索设计。

三、两大主流ANN索引原理

1. IVF 倒排索引

  • 核心:K-Means聚类分区,先匹配聚类中心,仅在少量目标簇内检索;
  • 优势:内存占用低、适合超大存量数据;
  • 劣势:聚类边界易丢失数据,召回率略低。

2. HNSW 分层小世界图(生产首选)

  • 核心:多层图结构,顶层粗定位、底层精检索,依靠节点跳转快速逼近目标向量;
  • 优势:检索速度最快、召回率高、RAG场景通用;
  • 劣势:内存开销大,需维护图连接关系。

四、主流索引选型规则

  1. 数据<10万:FLAT暴力检索,简单无成本;
  2. 10万~500万:内存充足选HNSW,内存有限选IVF_FLAT;
  3. 千万级以上:IVF_SQ8向量压缩 / DISKANN磁盘索引。

五、向量数据库选型对比

  1. 专用库:Milvus、Qdrant、Chroma,向量检索能力强,适配大规模RAG;
  2. 传统库扩展:pgvector、MySQL向量,低代码低成本,适合小体量项目;
  3. 本项目选型 Milvus:开源免费、Java生态完善、索引丰富、易部署,适配后端RAG开发。

六、Milvus 核心概念(对标MySQL)

  • Collection = 数据表
  • Schema = 表结构
  • Entity = 数据行
  • Index = 向量索引/标量索引
  • Partition = 数据分区
    核心区别:独有高维向量字段与专属ANN索引。

七、完整落地流程

Docker部署Milvus → 定义数据表结构 → 文档向量化 → 批量插入数据 → 创建HNSW向量索引+标量索引 → 加载集合 → 向量检索 → 元数据混合过滤检索。

八、工程关键决策点

  1. 相似度算法:文本RAG统一使用余弦余弦COSINE,通用性最强;
  2. 数据更新:向量库不支持原地修改,采用「删旧插新」方案;
  3. 核心参数:HNSW的M、efConstruction、ef 三者平衡性能与召回率;
  4. 混合检索:向量语义匹配+标量条件过滤,大幅提升检索精准度。
相关推荐
廿一夏2 小时前
MySql存储引擎与索引
数据库·sql·mysql
lzhdim3 小时前
SQL 入门 15:SQL 事务:从 ACID 到四种常见的并发问题
数据库·sql
瀚高PG实验室4 小时前
瀚高企业版V9.1.1在pg_restore还原备份文件时提示extract函数语法问题
数据库·瀚高数据库
TDengine (老段)4 小时前
TDengine Tag 设计哲学与 Schema 变更机制
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
YOU OU5 小时前
Spring IoC&DI
java·数据库·spring
Muscleheng6 小时前
Navicat连接postgresql时出现‘datlastsysoid does not exist‘报错
数据库·postgresql
罗超驿7 小时前
18.事务的隔离性和隔离级别:MySQL面试高频考点全解析
数据库·mysql·面试
jran-7 小时前
Redis 命令
数据库·redis·缓存
小江的记录本7 小时前
【Java基础】Java 8-21新特性:JDK21 LTS:虚拟线程、模式匹配switch、结构化并发、序列集合(附《思维导图》+《面试高频考点清单》)
java·数据库·python·mysql·spring·面试·maven
June`8 小时前
多线程redis下如何解决aof重写和rdb持久化的数据一致性问题
数据库·redis·缓存