你在MySQL里搜"苹果",它永远不知道你要的是水果还是手机
这是传统数据库和向量数据库最本质的区别。传统数据库——无论是MySQL、PostgreSQL还是MongoDB——处理的是"精确匹配"。你问"苹果",它只能返回包含"苹果"这两个字的数据。向量数据库处理的是"语义匹配"。你问"苹果",它可能返回关于iPhone、MacBook、Tim Cook的文档——因为它理解"苹果"的语义。
这个区别看似简单,但它决定了你什么时候该用哪个。
本质区别一:数据结构——标量vs向量
传统数据库存储的是标量数据:整数、字符串、日期、布尔值。查询方式是精确匹配(WHERE name = ‘苹果’)、范围查询(WHERE price > 5000)、模糊匹配(LIKE ‘%苹果%’)。
向量数据库存储的是Embedding——高维向量。比如"苹果手机"经过Embedding模型转换后,变成[0.023, -0.451, 0.789, …, -0.234],一个768维的浮点数数组。查询方式是相似度计算——找到和查询向量最接近的K个向量。
关键差异:传统数据库的查询结果是"是或否"的二元判断,向量数据库的查询结果是"有多相似"的连续判断。 这意味着向量数据库天然支持模糊搜索、语义搜索、推荐系统——这些是传统数据库做不到的。
本质区别二:索引算法——B-Tree vs HNSW/IVF
传统数据库的核心索引是B-Tree(及其变种B+Tree)。B-Tree适合一维数据(如ID、时间、金额),查询复杂度O(log n)。对于1亿条数据,B-Tree只需约27次比较就能找到目标。
但B-Tree在向量数据上完全失效。因为向量数据是多维的(768维甚至更高),B-Tree无法对多维数据建立有效的排序。
向量数据库使用近似最近邻(ANN)索引:HNSW(分层导航小世界图)、IVF(倒排文件)、LSH(局部敏感哈希)等。以HNSW为例,它在高维空间中构建一个图结构,查询时沿图边导航,复杂度约为O(log n),但实际性能取决于图的质量。
实测数据:在1000万条768维向量中,HNSW的P99查询延迟是5ms,而暴力搜索(线性扫描所有向量)需要800ms。 索引的价值是160倍的性能提升。
金句:B-Tree是给一维数据设计的,HNSW是给高维数据设计的。你用错了索引,就像用扳手拧螺丝——能转,但转不动。
本质区别三:查询模式——精确vs模糊
传统数据库的查询模式:SELECT * FROM products WHERE category = ‘手机’ AND price < 5000。结果是确定性的——满足条件的记录全部返回,不满足的一条不返回。
向量数据库的查询模式:找到最接近查询向量的Top-K个结果。结果不是确定性的(取决于索引参数),而且总会返回K个结果——即使有些结果"不太相关"。
这个差异在RAG系统中至关重要。如果你用传统数据库做知识库检索,用户问"怎么退款",系统只能匹配包含"退款"关键词的文档。但如果文档写的是"退货流程",这个文档就匹配不到——尽管它们语义上高度相关。向量数据库能理解"退款"和"退货"是同一个意思。
pgvector:PostgreSQL的向量扩展——够用吗?
pgvector是PostgreSQL的一个扩展,让PostgreSQL支持向量数据类型和IVFFlat/HNSW索引。它让很多人问:“既然PostgreSQL就支持向量搜索,我为什么还要用专用向量数据库?”
答案是:看你的数据量。
pgvector在100万向量以下的场景中表现不俗。实测数据:
| 向量数量 | pgvector (HNSW) | 专用向量数据库 |
|---|---|---|
| 10万 | 2ms | 3ms(近似) |
| 100万 | 15ms | 5ms |
| 1000万 | 200ms | 8ms |
| 5000万 | OOM/超时 | 12ms |
pgvector的性能拐点在100万-500万向量之间。 超过这个量级,pgvector的索引效率快速下降,而专用向量数据库的分布式架构可以平滑扩展。
金句:如果你的数据量在100万以内,pgvector完全够用。省去一个数据库的运维成本,比那几毫秒的延迟差距重要得多。
什么时候可以不用专用向量数据库?
- 数据量小(<100万向量):pgvector、Redis Stack、甚至Elasticsearch的向量插件都够用
- 不需要纯向量搜索:如果你的场景是"全文搜索+简单的向量搜索混合",Elasticsearch更合适
- 团队没有运维向量数据库的能力:pgvector的运维成本接近零,因为你的DBA已经在管PostgreSQL了
- 预算有限:pgvector免费,Pinecone每月几千美元起步
什么时候必须用专用向量数据库?
- 数据量大(>1000万向量):pgvector性能会断崖式下降
- 需要低延迟(P99<20ms):专用向量数据库在索引调优后有显著优势
- 需要分布式扩展:数据量持续增长,需要水平扩展
- 需要高级功能:多模态检索、Hybrid Search、多租户隔离、元数据过滤
金句:pgvector是向量数据库的"入门毒品"——它让你低成本地体验向量搜索的魅力,但当你真正上瘾后,你会发现你需要更专业的工具。