十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

02-向量数据库与传统数据库区别:适用AI视觉、大模型场景

02-向量数据库与传统数据库区别:适用AI视觉、大模型场景 向量数据库与传统数据库区别适用AI视觉、大模型场景作者黒漂技术佬 | 一篇搞懂两类数据库的根本差异精确匹配 vs 相似度匹配传统数据库的查询逻辑一句话概括找一模一样的。SELECT*FROMproductsWHEREid1;SELECT*FROMproductsWHEREname可口可乐330ml;id 1就是精确匹配——只有 id 完全等于 1 的记录才会返回。name 可口可乐330ml也是精确匹配差一个字都查不到。哪怕你写name LIKE %可乐%那也只是字符串模糊匹配离语义相似差十万八千里。向量数据库的查询逻辑截然不同找最像的。query_vector [0.12, -0.34, 0.87, ...] results vector_db.search(query_vector, top_k5)你丢进去一个查询向量它返回的是与这个向量最相似的 TopK 条结果。没有等于只有接近——越接近排越前。这是两类数据库最根本的差异传统数据库做精确 CRUD向量数据库做近似检索。核心区别对比对比维度传统数据库MySQL向量数据库Milvus 等查询方式SQL 精确匹配向量近似检索索引类型B 树HNSW / IVF / PQ返回结果精确匹配的记录TopK 相似度排序数据类型结构化数据行/列向量 元数据查询语言SQLSDK / REST API适用场景业务 CRUD、事务处理AI 检索、语义搜索逐项展开查询方式SQL精确 vs 向量近似传统数据库用 SQL条件是等于/大于/小于这类确定性判断。向量数据库用向量作为查询输入输出是按相似度排序的结果集——它天然就是个搜索引擎不是记录查找器。索引类型B树 vs HNSW/IVFB 树是为范围查询和精确查找设计的。数据按key排序存储查找一条记录只需要几次磁盘 I/O效率极高——但它没法帮你找最近的向量。向量索引HNSW、IVF 等是为高维空间邻近搜索设计的。它们通过图结构或聚类分组让你不用遍历全部向量就能快速定位到候选集再在候选集里精算相似度。这类索引的本质是用空间结构加速邻近查找这在 B 树的世界里根本不存在。返回结果精确匹配 vs TopK排序传统数据库查到就返回查不到就空结果。没有差不多这个概念。向量数据库永远返回 TopK 结果按相似度从高到低排。即使最相似的那条只有 60% 的相似度它照样给你——毕竟最像的不一定很像但你需要知道谁最接近。混合查询向量相似度 元数据过滤纯向量检索有时不够用。比如无人售货柜场景你想找跟这张照片最像的可乐类商品而不是跟这张照片最像的任意商品。这就需要混合查询先用元数据过滤缩小范围再在范围内做向量检索。# Milvus 混合查询示例 results collection.search( data[query_vector], anns_fieldimage_vector, param{metric_type: COSINE, params: {nprobe: 10}}, limit5, exprcategory 饮料 # 元数据过滤条件 )exprcategory 饮料就是元数据过滤——先筛选出所有饮料类商品再在其中做向量相似度检索。这相当于把传统数据库的精确过滤和向量数据库的近似检索组合在一起。现代向量数据库Milvus、Weaviate、Qdrant都支持这种混合查询这是它们区别于纯向量检索库如 FAISS的重要特性。互补关系不是替代关系有个常见误区向量数据库会不会取代 MySQL答案是不会它们是互补的。传统数据库负责业务逻辑商品信息管理、订单记录、用户账号、库存数量……这些是 CRUD 的活儿向量数据库干不了。向量数据库负责 AI 检索商品图片特征匹配、语义文档搜索、缺陷样本比对……这些是找最像的的活儿传统数据库干不了。两套系统各司其职通过 ID 关联在一起。无人售货柜场景双库协作一个完整的无人售货柜识别系统数据层是这样的MySQL 负责业务数据-- 商品信息表CREATETABLEproducts(idINTPRIMARYKEY,nameVARCHAR(100),priceDECIMAL(10,2),categoryVARCHAR(50),stockINT);-- 插入商品INSERTINTOproductsVALUES(1,可口可乐330ml,3.50,饮料,20);向量数据库负责特征数据# 商品图片特征入库product_id1# 与 MySQL 中的 id 对应image_vectorextract_feature(cola_330ml.jpg)# 512维向量collection.insert([{id:product_id,image_vector:image_vector}])检索流程摄像头拍照片 → 提取特征向量向量数据库检索 Top1 → 得到product_idMySQL 用product_id查询商品详细信息名称、价格、库存# Step 2: 向量检索resultscollection.search([query_vector],image_vector,limit1)product_idresults[0].id# Step 3: MySQL查询productdb.query(SELECT * FROM products WHERE id ?,product_id)print(f识别结果{product.name}, 价格{product.price})向量数据库负责认出这是啥MySQL 负责知道这东西多少钱——分工明确协作高效。这才是 AI 应用落地的常态传统数据库 向量数据库双引擎驱动。别想着一个库搞定所有事让专业工具干专业活儿。
返回列表