支持数据类型
支持多种数据类型,适用于不同的属性模型,包括常见的数字和字符类型、各种向量类型、数组、集合和 JSON
高级数据类型
稀疏向量
二进制向量
JSON
数组
距离度量
考虑使用milvus进行混合检索
非结构化数据、Embeddings 和 Milvus
如上图所示,支持多多种数据类型的存储&检索。
高级搜索算法
支持多种内存和磁盘索引/搜索算法,包括 IVF、HNSW、DiskANN 等
搜索引擎
C++ 搜索引擎向量数据库性能的 80% 以上取决于其搜索引擎。
列存储
Milvus 是面向列的向量数据库系统。其主要优势来自数据访问模式。在执行查询时,面向列的数据库只读取查询所涉及的特定字段,而不是整行,这大大减少了访问的数据量。此外,对基于列的数据的操作可以很容易地进行向量化,从而可以一次性在整个列中应用操作,进一步提高性能。
向量量级
一般情况下,Milvus 单机版可以支持处理数亿级别的向量检索
集群版可以支持数百亿级的向量检索
系统架构
Milvus 本身是完全无状态的,因此可以借助 Kubernetes 或公共云轻松扩展。此外,Milvus 的各个组件都有很好的解耦,其中最关键的三项任务--搜索、数据插入和索引--被设计为易于并行化的流程,复杂的逻辑被分离出来。这确保了相应的查询节点、数据节点和索引节点可以独立地向上和向下扩展,从而优化了性能和成本效率。
支持的搜索类型
- ANN 搜索:查找最接近查询向量的前 K 个向量。
- 过滤搜索:在指定的过滤条件下执行 ANN 搜索。
- 范围搜索:查找查询向量指定半径范围内的向量。
- 混合搜索:基于多个向量场进行 ANN 搜索。
- 全文搜索:基于 BM25 的全文搜索。
- Reranking:根据附加标准或辅助算法调整搜索结果顺序,完善初始 ANN 搜索结果。
- 通过id获取:根据主键检索数据。
- 元数据过滤表达式使用特定表达式检索数据。
加速
索引
内存索引
FLAT, IVF_FLAT, IVF_PQ, IVF_SQ8, HNSW, HNSW_SQ, HNSW_PQ, HNSW_PRQ
磁盘索引
GPU索引
分区
可以选择一个标量字段作为分区键,以获得更好的搜索性能
安全
可调一致性模型一致性可确保每个 Milvus 节点或副本在给定时间写入或读取数据时拥有相同的数据视图。
权限管理
支持多租户场景
内嵌Embedding模型
内嵌reranker
图形化用户界面
Attu(https://github.com/zilliztech/attu)
工具和生态系统
数据批量导入
JSON
Parquert
CSV
性能指标
TP99 是一个统计学术语,用于描述数据的分布情况。具体来说,TP99 是指在一组数据中,99% 的数据点小于等于这个值。例如,在一个系统响应时间的数据集里,TP99 响应时间意味着 99% 的请求响应时间都小于等于这个时间值。
P99 Latency: 99%的查询完成所需的时间。
Throughput 吞吐量QPS
Recall Rate: 向量检索的召回率。
≥ 0.95: High Accuracy
Between 0.9-0.95: Medium Accuracy
<0.95: Low Accuracy