milvus | 第 1 章:从“相似图片搜索”理解 Milvus 向量数据库
本章目标读完本章,你应该能够回答下面几个问题:向量数据库解决的到底是什么问题。Embedding、向量、相似度检索之间是什么关系。Milvus 为什么不只是“带向量字段的普通数据库”。一次最简单的 Milvus 请求大致会经过哪些组件。初次阅读 Milvus 源码时,应该先看哪些目录和文件。本章不会一上来展开复杂的分布式调度、WAL、Segment、索引构建和 C++ 执行引擎。我们先建立一张“能看懂后续源码”的地图。后面的章节会沿着这张地图逐层深入。1. 从一个简单问题开始:如何找相似图片假设你有 1000 万张商品图片,现在用户上传一张图片,希望系统找出最相似的 10 张。如果用传统数据库思路,我们可能会先问:图片文件名是否相同?图片标签是否相同?图片颜色、尺寸、分类是否相同?这些条件能做过滤,但很难回答“看起来像不像”。两张图片可能文件名完全不同,标签也不完全一致,但视觉内容很接近。比如两张白色运动鞋图片,角度和光线不同,人眼仍然能判断它们相似。向量检索的核心思想是:先把图片变成一组数字,再比较这组数字之间的距离。这组数字就是向量。图片 A - [0.12, -0.83, 0.44