向量数据库是专门为处理高维向量数据而设计的数据库。它的核心目的是实现高效的相似性检索,而不是传统数据库的精确匹配。
向量嵌入是基础。任何非结构化数据(文本、图像、音频等)都可以通过嵌入模型(Embedding Model)转换成一个由浮点数组成的向量。比如,一段文字“苹果很好吃”和另一段“这种水果很甜”,在向量空间中的距离会很近,因为它们语义相似。
相似度计算是关键。向量数据库通过计算向量之间的距离来判断相似度,常用的度量方式有:
向量数据库与传统数据库最本质的区别在于索引结构。因为暴力计算所有向量对的距离在百万级以上数据量时完全不可行,因此必须建立专门的近似最近邻(ANN,Approximate Nearest Neighbor)索引,在精度和速度之间做平衡。
主流的索引技术包括:
索引类型 | 原理 | 特点 |
|---|---|---|
HNSW(分层可导航小世界图) | 构建多层图结构,上层稀疏用于快速定位,下层密集用于精确检索 | 目前最主流,查询速度极快,但内存占用较大,构建速度较慢 |
IVF(倒排文件索引) | 通过聚类将向量空间划分为多个分区,查询时只检索最相关的几个分区 | 内存效率高,适合大规模数据,是许多生产系统的首选 |
PQ(乘积量化) | 将高维向量压缩成更小的编码,大幅减少内存占用 | 适合内存受限的场景,通常与IVF组合使用(IVF-PQ) |
LSH(局部敏感哈希) | 用哈希函数将相近向量映射到同一个桶中 | 理论成熟,但实际工程中精度通常不如HNSW |
一个典型的向量数据库架构通常包含:
这是一个经常被混淆的问题,两者的设计哲学完全不同,适用于不同场景:
维度 | 向量数据库 | 传统关系型数据库(如MySQL、PostgreSQL) |
|---|---|---|
数据模型 | 高维向量(几百到几千维)+ 元数据 | 结构化表,行和列,遵循预定义Schema |
查询方式 | 相似性检索(“找最相似的K个”) | 精确查询(等值、范围、聚合、Join) |
索引技术 | ANN索引(HNSW、IVF等),侧重高维空间搜索 | B-Tree、Hash、B+Tree等,侧重精确查找和范围扫描 |
事务支持 | 通常不支持ACID事务,或仅支持弱一致性 | 完整的ACID事务支持 |
扩展性 | 天然分布式,专为海量向量设计 | 主从复制、分库分表,但分布式事务复杂 |
典型场景 | 语义搜索、推荐系统、RAG、图像检索 | 交易系统、ERP、用户账户管理、任何需要强一致性的业务数据 |
一个重要的发展趋势:传统的扩展型数据库(如PostgreSQL通过pgvector插件)正在融合向量检索能力,但原生向量数据库在高并发、高维大规模场景下仍有性能优势。
了解分类能帮你更好地理解各类数据库的定位。我们可以按数据模型将数据库分为以下几大类:
数据模型:表结构,遵循行和列,通过外键建立关系,使用SQL查询 代表:MySQL、PostgreSQL、Oracle、SQL Server
特点:
这是一个大的统称,下面包含多种类型:
子类型 | 数据模型 | 代表 | 特点 |
|---|---|---|---|
文档型 | JSON/BSON文档,自描述Schema | MongoDB、CouchDB | 灵活Schema,适合内容管理、电商商品、日志等。读写性能好,但复杂Join能力弱 |
键值型 | 简单的Key-Value对 | Redis、RocksDB、DynamoDB | 极致性能,通常纯内存或SSD优化。适合缓存、会话存储、排行榜 |
列族型 | 按列族存储,宽表结构 | Cassandra、HBase | 写入吞吐极高,适合时序数据、IoT、日志分析。牺牲了Join和复杂查询能力 |
图数据库 | 节点和边,直接存储关系 | Neo4j、NebulaGraph、ArangoDB | 关系查询极快,支持多跳遍历。适合社交网络、知识图谱、反欺诈、推荐 |
类型 | 数据模型 | 代表 | 特点 |
|---|---|---|---|
时序数据库 | 时间戳 + 指标值 | InfluxDB、TimescaleDB、Prometheus | 高压缩比,高效的时间范围聚合。适合监控指标、物联网设备数据 |
向量数据库 | 高维向量 + 元数据 | Milvus、Qdrant、Weaviate、Pinecone | 海量向量的近似最近邻检索。适合AI应用、语义搜索、RAG |
搜索引擎数据库 | 倒排索引 + 文档 | Elasticsearch、OpenSearch | 全文检索、日志聚合、分析聚合。适合日志平台、站内搜索 |
回到你之前关注的知识图谱和RAG,一个成熟的企业级AI系统往往不是单一数据库支撑的,而是多种数据库协同工作:
这三者各司其职,通过应用层统一调度——比如用户问一个复杂问题,系统可能先用图数据库做实体关联推理,再用向量数据库检索相关片段,最后交给LLM生成答案。
分类 | 核心特点 | 适用场景 |
|---|---|---|
关系型数据库 | 强一致性、SQL支持、事务 | 交易系统、核心业务数据 |
文档型数据库 | 灵活Schema、高性能读写 | 内容管理、用户数据 |
键值型数据库 | 极致性能、简单模型 | 缓存、实时计数器 |
图数据库 | 关系优先、多跳遍历快 | 知识图谱、反欺诈、推荐 |
时序数据库 | 高压缩、时间聚合强 | IoT、监控系统 |
向量数据库 | 相似性检索、高维索引 | 语义搜索、RAG、AI应用 |
向量数据库的兴起,本质上是数据管理从“精确匹配”到“语义理解”的一次范式迁移,不是为了取代关系型数据库,而是为了解决AI时代新的数据检索问题。在实际架构设计中,选择哪种数据库,取决于数据形态(结构化/非结构化/关系/向量)和查询模式(精确/相似/图遍历)这两个核心维度。