向量数据库介绍

📅 2026/6/26 7:20:29
向量数据库介绍
1. 什么是向量数据库非技术解释传统数据库如MySQL查找的是“完全匹配”的数据比如where name 张三。而向量数据库查找的是“最相似”的数据。它存储的不是文字或图片本身而是将这些数据“编码”成一长串浮点数即向量比如[0.256, -0.784, 1.203, ...]。这个向量代表了数据的“语义特征”。比如“猫”和“老虎”的向量在空间中离得很近而“猫”和“汽车”离得很远。2. 核心算法原理如何做到快速查找如果数据量巨大逐一比对向量距离暴力搜索极其缓慢。向量数据库的核心竞争力在于近似最近邻ANN算法主要有三种经典索引HNSW分层可导航小世界图目前最主流。构建一张多层图网络上层跳跃式粗查下层精细搜索。优点查询极快、召回率高缺点内存消耗极大。IVF倒排文件索引先对所有向量进行“聚类”分组查询时只搜索离目标最近的几个组。优点内存占用低缺点召回率略低于HNSW。PQ乘积量化将高维向量压缩成更小的存储单元大幅减少计算量。现状生产环境几乎都采用IVF PQ HNSW的混合策略如Faiss的IVF-PQ或Milvus的混合索引在内存、速度和精度之间取得平衡。3. 主流向量数据库选型对比2026年视角目前市场已趋于稳定分为三大阵营数据库定位与特点适合谁Milvus / Zilliz开源事实标准专为向量设计分布式能力强支持GPU加速。生产级大规模亿级向量AI应用如搜索引擎、推荐系统。Pinecone全托管云服务运维简单索引构建速度极快但价格较贵且封闭。创业公司快速验证MVP不想自建运维团队。QdrantRust编写性能极高内存安全支持过滤和向量混合搜索。注重高性能和稳定性且需要复杂标量过滤的场景。Elasticsearch在原有版本上增加了向量插件。已有ES架构不想引入新组件且对向量精度要求不极致的团队。Chroma / LanceDB轻量级嵌入式专为LLM应用开发LangChain友好。本地开发、原型验证、个人知识库助手。4. 核心应用场景不仅限于RAG很多人以为向量数据库只用来做知识库问答RAG其实这只是冰山一角RAG检索增强生成把企业文档切片向量化让大模型在回答前先“查阅”相关上下文解决幻觉问题。多模态搜索以图搜图、以文搜音如淘宝拍立淘、音乐识别。推荐系统将用户行为特征向量化实时检索与当前用户最相似的“邻居”的喜好物品。药物/分子发现将分子结构编码为向量在化学空间中快速找到结构相似的化合物。5. 避坑建议关键不要迷信“向量”实际业务中“标量过滤”Metadata Filtering比向量相似度更重要。比如“查找与这张图片相似的且价格在100元以内、品牌是Nike的商品”。如果数据库不支持高效的标量过滤查询会非常慢。维度灾难向量维度超过768维后提升精度带来的算力成本急剧上升。尽量使用通用Embedding模型如OpenAItext-embedding-3-small或针对业务微调的模型不要盲目增加维度。工作原理第一阶段写入数据如何把“苹果”变成数字这个过程叫向量化Embedding核心是“语义理解”而非“关键词匹配”。输入你传入一段文本如“苹果很好吃”、一张图片或一段音频。调用模型数据库内部或外部调用一个Embedding模型如OpenAI的text-embedding-3或开源的BGE。输出向量模型将输入转化为一个高维浮点数数组例如[0.12, -0.58, 0.93, ... , 0.41]通常有 384、768 或 1536 个维度。存储索引原始数据文本/图片URL存入对象存储。向量数据存入专门的向量列。最关键的一步数据库立即对这个向量执行索引构建算法如HNSW或IVF把它挂载到特定的“图结构”或“聚类簇”中为后续快速查询做准备。第二阶段查询数据如何在一亿条数据中“闪电”找到最像的如果暴力遍历一亿条向量进行余弦相似度计算一次查询需要几秒钟这不可接受。向量数据库使用“粗略筛选 精细重排”的两阶段策略。步骤 1查询向量化你输入“新鲜的水果”系统用同一个Embedding模型将它转化为向量Q。步骤 2近似最近邻搜索ANN——提速核心系统不会遍历所有数据而是利用事先建好的索引进行“作弊式”查找如果使用 IVF倒排索引系统会先计算Q属于哪个“聚类簇”相当于先确定它在哪个城市只搜索该簇内的向量排除掉其他99%的不相关数据。如果使用 HNSW层级图系统从最顶层的“高速路”节点开始跳跃式地找到离Q最近的几个入口点再逐层向下细化像下楼梯一样快速定位到最底层的小范围邻居群。步骤 3标量预过滤极易踩坑的环节如果你的查询带有条件例如“新鲜的水果且价格10元产地为山东”数据库会执行Pre-filter预过滤或Post-filter后过滤预过滤先在价格10元且产地为山东的记录中再计算向量相似度精准但可能漏掉向量极相似但标量不符的优质结果。后过滤先找出向量最相似的Top 200条再从中筛选出价格10元的速度快但若Top 200里没有符合条件的返回结果为空。高级数据库如Milvus支持迭代式过滤平衡两者。步骤 4精确重排与打分对于筛选出的候选集比如100条系统才进行精确的余弦相似度或欧氏距离计算按分数从高到低排序。步骤 5返回结果数据库将排序后的Top K条结果如最相似的5条连同原始文本/图片URL一起返回给你。关键补充写入与查询的“坑”环节常见误区正确逻辑模型一致性用“百度”的模型入库用“OpenAI”的模型查询。入库和查询必须使用完全相同的Embedding模型否则向量空间不互通查询结果完全错误。索引更新每插入一条数据就重建一次全局索引。新数据先写入缓冲区达到阈值如512MB后才触发索引构建因此向量数据库不适合频繁单条更新的业务写放大严重。删除逻辑物理立即删除。绝大部分向量数据库对删除是标记为“墓碑”软删除查询时过滤掉后台异步物理清理避免索引结构剧烈抖动。一句话总结写入时用AI模型将非结构化数据“翻译”成空间坐标向量并建立索引地图。查询时将你的问题也“翻译”成坐标利用索引地图快速跳过99%的区域只在最可能的小范围内进行精确距离计算最后返回离你坐标最近的原始数据。