资讯动态

向量数据库解决了什么问题?

发布时间:2026/10/3 7:19:57 来源:尧图企业网站定制
向量数据库解决了什么问题为什么不能用MySQL作向量检索、ANN索引原理从一个问题出发你做了一个RAG系统有100万给个文档chunk每个chunk都经过Embedding变成了一个768维向量现在用户提了一个问题你把这个问题也向量化了接下来要做的事情就是找到100万个向量里和这个Query向量最相似的top-5个最直接的方法就是“暴力搜索”把Query向量和全部100万个向量逐一计算余弦相似度排序取top-5在一台普通服务器上这个操作大概需要几百毫秒到几秒—对于实时场景来说完全不可以接收而且当向量数量增长到1000万、1亿时暴力搜索的耗时增长根本无法用于生产这就是向量数据库要解决的核心问题在海量高维向量中如何在毫秒级内找到最相似的结果为社么不能用MySQL做向量检索传统关系型数据库的查询本质上是精确度匹配或者范围扫描比如WHERE age 25 AND city ‘北京’通过B-Tree索引可以快速定位到符合条件的行向量相似度搜索完全不同你不是在问“那些向量等于某个值”而是在问那些向量和我的查询向量最接近—这是一个在高维连续空间里的几何问题传统数据库的索引结构对这类问题完全无效因为他们设计之初没有考虑高维几何相似度这个维度即便PostgreSQL的pgverctor扩展支持向量存储在大规模场景下的性能仍然远不如专门的向量数据库向量索引ANN如何在速度和精度之间取得平衡要在百万级向量中做毫秒级检索关键是向量索引向量数据库不做暴力全量计算而是预先构建一个特殊的索引结构让检索时只需要访问一小部分向量就能找到近似的最近邻—这就是ANN近似这两个字需要注意ANN不保证找绝对最近邻但在实践中找到的结果精确度足够高而速度提升是数量级的目前最主流的两类向量索引算法是HNSWHNSW构建了一个层级结构的图最顶层是少量节点形成高速公路底层是所有节点形成”街道网络“。检索时从顶层入口进入沿图中的邻居边快速导航逐层下降想GPS导航一样越来越精细最终定位到目标附近的最近邻HNSW的优势时查询速度极快、精度高是Milvus,Qdrant,Weaviate等主流向量数据库的默认索引代价是构建索引时内存占用较大IVFIVF先对所有向量做K-means聚类把相似的向量分组到同一个货架检索时先找到Query向量最近的几个货架只在这些货架里面做精细查找而不是全量扫描IVF的优势是内存占用较低适合超大规模数据集缺点是如果Query向量恰好落在两个货架的边界可能会漏掉一些相关结果边界效应向量数据库还能做什么向量数据库不只是”存向量、搜向量“这么简单他还有几个在RAG工程里面非常重要的能力元数据过滤每个向量可以附带结构化的元数据比如文档来源、创建时间、部门归属、文档类型等。检索时可以在向量相似度搜索的同时附加元数据条件—比如”只在最近三个月的文档里面搜索“、”只搜索产品部门的文档“。这让RAG系统可以做到语义相关业务过滤的组合查询混合检索主流向量数据库支持同时运行向量搜索和关键词搜索然后用融合算法合并两路结果。这对中文专业术语场景尤其有用因为有些专有名词的语义表示很弱必须依赖关键词精确匹配向量更新和删除知识库需要持续更新—文档修改了、删除了向量索引也需要对应更新不同数据库对这个操作的支持成本差异很大选型时需要考虑业务更新频率主流向量数据库简介目前常见的向量数据库选项可以分为几类专用向量数据库这类系统从设计之初就以向量检索为核心功能最完善性能最优适合大规模生产场景传统数据库的向量扩展如果已经有这些基础设施小规模场景下也可以用但在百万量级向量时性能明显不如专用方案轻量级本地库适合嵌入到应用内做原型或者小规模部署选型的核心考量是规模和功能需求如果是几十万向量以内的场景Chroma或者pgvector足够规模到百万以上、需要元数据过滤和混合检索Milvus或者Qdrant是更好的选择常见误区误区一向量数据库的结果不精确所以不可靠ANN近似指的是找到的不一定是数学意义上的绝对最近邻但实践过程中召回精度通常在95%-99%对于RAG应用来说这个精度完全够用而速度收益是数量级的误区二向量数据库越大越好键索引时参数越高越好HNSW等索引有超参数如M—每个节点的最大连接数efConstruction—建图时的搜索深度这些参数越大精度越高但占用内存和构建时间也成比例增加。根据实际场景找到精度、内存的平衡点不是越大越好误区三向量相似度高就代表语义相关向量相似度是Embedding模型学出来的相似度取决于模型的训练质量和领域覆盖。如果Embedding模型对某个专业领域支持不足即便向量相似度高语义也可能并不相关向量数据库只是工具底层模型的质量仍然是决定因素误区四用FAISS就是用了向量数据库FAISS是一个向量索引库不是完整的数据库系统。他没有持久化、没有元数据管理、没有CRUD接口只负责索引构建和搜索计算。在生产环境里面通常需要在FAISS基础上自己封装持久化和业务逻辑或者直接用封装好的这些能力的向量数据库

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑