概念:
Milvus是云原生向量数据库,具备高性能、高可用、易扩展特点,适用海量向量数据的实施召回。
基于FAISS、Annoy、HNSW等向量搜索库构建,核心是解决稠密向量相似度检索的问题。
支持数据分区分片、数据持久化、增量数据摄取、标量向量混合查询、time travel等功能
特征向量:embedding vector,是指由embedding技术从离散变量转变而来的连续向量
向量相似度检索:
指将目标对象与向量数据库中的数据对比,通过近似最近邻搜索ANN算法计算向量之家的距离,并召回最相似的结果。
索引类型
大多数由Milvus支持的向量索引类型使用近似最近邻搜索(ANNS)
- FLAT : 适合在小规模,百万级数据集上寻求完全准确和精准搜索结果的场景
- IVF_FLAT: 量化索引,适合在精度和查询速度之间寻求理想平衡的场景
- IVF_SQ8: 量化索引,适合在磁盘、CPU和GPU内存消耗非常有限的场景中显著减少资源消耗
- IVF_PQ:量化索引,最适合于在高查询速度的情况下以牺牲精度为代价的场景。
- HNSW:基于图形的索引,最适合于对搜索效率有很高需求的场景。
- ANNOY:基于树形结构的索引,最适合于寻求高召回率的场景。
相似度度量
对于浮点嵌入:
- 欧式距离(L2): (欧几里得距离)指标通常用于计算机视觉领域CV
- 内积(IP):指标通常用于自然语言处理领域NLP
二元嵌入广泛使用的度量标准:
- 哈明距离:常用于自然语言处理(NLP)领域。
- 杰卡德距离:通常用于分子相似性搜索领域。
- 塔尼莫托距离:通常用于分子相似性搜索领域。
- 超结构距离:通常用于搜索分子的类似超结构。
- 亚结构距离:通常用于搜索分子的类似亚结构。
架构:
系统分为四个层次:
访问层:access layer,由一组无状态代理组成,作为系统的前层和用户端点,对外提供用户连接的endpoint
协调器服务:coordinator service将任务分配给工作节点
工作节点:worker node,执行来自协调器服务的指令并执行用户触发的DML/DDL命令
存储:storage,负责数据持久化,包括分为元数据存储meta store、消息存储log broker、对象存储object storage三部分
管理工具
- Attu
使用方式:
docker run -p 8000:3000
-e HOST_URL=http://192.168.9.207:8000
-e MILVUS_URL=192.168.9.207:19530 zilliz/attu
# http://192.168.9.207:8000为指定本地的ip和8000端口
# 192.168.9.207:19530为mivlus的连接地址