Milvus 是由 Zilliz(中国团队创立)主导开发的开源向量数据库,专注解决海量向量数据的存储与相似度检索问题。在大模型时代,它是 RAG(检索增强生成,即先从知识库检索相关内容再交给大模型生成答案)、语义搜索、多模态检索、智能推荐等场景最常见的底层基础设施之一。Milvus 的核心价值在于:当数据量达到百万、千万甚至亿级时,依然能保持毫秒级检索延迟,同时提供增删改查、标量过滤、多租户、高可用与水平扩展等完整的数据库能力,而不仅是 Faiss 那样的内存索引库。本文基于官方文档与发布记录整理,结构为:速览卡与部署方式 → 第一个向量检索示例 → 混合检索、索引体系、分布式架构等核心能力 → 生产部署与监控 → 选型对比、版本演进、应用场景、常见误区与面试题,帮助读者一次性建立从安装到上手的完整认知。

岗位关联

掌握 Milvus 意味着你具备了大规模向量检索系统的工程落地能力,这是 RAG、语义搜索、多模态推荐等 AI 应用的标准基础设施,也是国内大厂与 AI 公司招聘中高频出现的技能项。

目录
  1. 为什么需要 Milvus:向量检索不能只靠 Faiss
  2. 安装与环境配置:3 步就绪(Lite / Docker / K8s)
  3. 快速上手:10 分钟跑通第一个向量检索
  4. 核心能力详解:四大支柱
  5. 生产部署与监控:从上线到运维
  6. 版本迭代
  7. AI 应用场景
  8. 常见误区
  9. 面试题
  10. 参考来源
工具类型
云原生分布式向量数据库(开源)
开发商
Zilliz(中国团队创立)
开源协议
Apache 2.0(可商用)
GitHub Stars
主要语言
Go(服务端)、C++(索引内核)、Python(SDK)
当前版本
2.5.x(最新以官方 Release 为准)
安装方式
pip(Milvus Lite)/ Docker Compose / K8s Helm
下载地址
官方文档
上手难度
★★★☆☆(中等)
适合人群
RAG 与搜索工程师、推荐系统团队、AI 平台团队
同类工具
Qdrant · Weaviate · Chroma
托管服务
无

速览卡是工具类内容的固定首屏模块:30 秒判断「这工具是什么、能不能商用、适不适合我」。

为什么需要 Milvus:向量检索不能只靠 Faiss

在 Milvus 出现之前,业务做向量相似检索通常有三条路:一是直接用 Faiss、ScaNN 这类内存索引库,把向量加载进内存做最近邻搜索,但持久化、并发控制、数据恢复都要自己写,进程一重启就要重新加载全量数据,工程成本极高;二是在 Elasticsearch 或关系型数据库上加向量插件,ES 的向量能力在千万级以上规模时性能与资源开销明显劣化,普通数据库则只能支撑几万到几十万的量级;三是自研分布式检索系统,动辄数月工期且难以通用。这三条路在“数据量过亿、过滤条件复杂、要求毫秒级响应”的场景里都会碰壁。

Milvus 把“向量检索引擎 + 数据库管理”做成了开箱即用的系统:官方宣称支持十亿级向量的毫秒级检索;提供 insert、delete、upsert、query 等完整数据操作;支持标量字段过滤(类似 SQL 的 WHERE)、分区(Partition)与多租户隔离;基于存算分离(存储与计算独立部署、独立扩展)架构做到水平扩展与高可用。2.4 起支持 GPU 索引与稀疏向量,2.5 起内置 BM25 全文检索,可直接承担 RAG 应用的“混合检索”层,不必再外挂 Elasticsearch 做关键词兜底。

与同类的 Qdrant、Chroma 相比,Milvus 更偏“企业级分布式数据平台”:概念与组件更多、上手门槛更高,换来的是规模化能力、混合检索、多租户与运维体系。若只是本地原型或教学项目,Milvus Lite 也能提供“一行代码起库”的轻量体验。选型的核心是评估数据规模、并发量与团队运维能力,而不是单纯比“谁快”。

安装与环境配置:3 步就绪(Lite / Docker / K8s)

步骤一 · 本地原型:Milvus Lite(无需 Docker)

Milvus Lite 是随 pymilvus 提供的本地嵌入式版本,Python 进程内直接创建文件型向量库,适合开发调试与教学。macOS/Linux 下可直接使用,Windows 建议用 WSL2 或改用 Docker 方案。

步骤二 · 单机服务:Docker Compose

官方推荐的单机部署方式是下载对应版本的 compose 文件并启动,单机版由 milvus 服务端、etcd(元数据存储)与 MinIO(对象存储)三个容器组成,消息队列使用内嵌 RocksMQ。

步骤三 · 验证服务与 SDK 连通

健康检查端口为 9091,返回 {"status":"OK"} 即正常;数据端口为 19530。默认账号 root,默认密码 Milvus。生产集群部署请使用 Milvus Operator 或 Helm,详见“生产部署与监控”一节。

bash11 行
# ① Milvus Lite(本地原型)pip install pymilvus # ② Docker Compose 单机版wget https://github.com/milvus-io/milvus/releases/download/v2.5.4/milvus-standalone-docker-compose.yml -O docker-compose.ymldocker compose up -ddocker compose ps   # 确认 milvus/etcd/minio 均 Up # ③ 验证健康状态curl http://localhost:9091/healthz# 期望输出:{"status":"OK"}
python4 行
# ④ 用 Python SDK 验证连通性from pymilvus import MilvusClientclient = MilvusClient(uri="http://localhost:19530", token="root:Milvus")print(client.list_collections())   # 输出空列表即连接成功

快速上手:10 分钟跑通第一个向量检索

核心思路非常直接:先创建集合(Collection,相当于关系型数据库中的表)并指定向量维度;插入带主键、向量和业务字段的数据(Entity);再对集合执行相似度搜索。使用 Milvus Lite 时无需启动任何服务,代码即库。

完整可运行示例(本地文件型向量库):

操作要点:

1. 安装:pip install pymilvus,同时获得 SDK 与 Milvus Lite。

2. 创建集合:create_collection 只需指定 dimension,主键与向量字段自动创建;也可用自定义 Schema 精细控制字段类型。

3. 插入数据:字典列表批量写入,字段名与集合字段对应。

4. 相似度检索:search 的 data 传入查询向量(可多个),limit 控制返回条数,output_fields 指定随结果返回的业务字段。

5. 结果解读:返回按相似度降序排列,distance 字段为相似度分数;未指定 metric_type 时默认使用 COSINE,也可显式指定 L2 或 IP。

进阶:连接远端 Milvus 只需把 MilvusClient("milvus_demo.db") 换成 MilvusClient(uri="http://localhost:19530", token="root:Milvus")。数据量变大后,用 prepare_index_params() 显式指定索引类型(如 HNSW),并为高频过滤字段创建标量索引。

python28 行
# 前置:pip install pymilvusfrom pymilvus import MilvusClient # 1. 创建本地向量库(Milvus Lite)client = MilvusClient("milvus_demo.db") # 2. 创建集合,向量维度 5client.create_collection(collection_name="demo_collection", dimension=5) # 3. 插入数据:id + vector + 业务字段 colorclient.insert(    collection_name="demo_collection",    data=[        {"id": 0, "vector": [0.1, 0.2, 0.3, 0.4, 0.5], "color": "red"},        {"id": 1, "vector": [0.2, 0.3, 0.4, 0.5, 0.6], "color": "blue"},        {"id": 2, "vector": [0.3, 0.4, 0.5, 0.6, 0.7], "color": "green"},    ],) # 4. 加载集合并搜索与目标向量最相似的 Top2client.load_collection(collection_name="demo_collection")res = client.search(    collection_name="demo_collection",    data=[[0.3, 0.4, 0.5, 0.6, 0.7]],    limit=2,    output_fields=["color"],)print(res)

核心能力详解:四大支柱

支柱一 · 混合检索:向量 + 全文 + 稀疏向量

Milvus 2.5 内置 BM25 全文检索引擎,支持 ANALYZER 分词配置(含中文分词),同一集合可定义多个向量字段:稠密向量(FLOAT_VECTOR)、稀疏向量(SPARSE_FLOAT_VECTOR)与二进制向量(BINARY_VECTOR)。hybrid_search 接口把多路召回结果通过加权融合(WeightedRanker)或倒数排名融合(RRF,即按各结果排名倒数求和后重排)合并,显著改善专有名词、同义词等纯向量检索易漏召回的查询。业务价值在于“关键词兜底 + 语义召回”可在同一个数据库内完成,省掉 ES 外挂与数据同步。

支柱二 · 索引体系:内存 / 磁盘 / GPU 全覆盖

内存索引以 HNSW(图索引,召回率高、参数少)和 IVF 系列(倒排分区,内存可控)为主;磁盘索引 DiskANN 面向百亿级超大数据,用磁盘换内存成本;GPU 索引 CAGRA 与 GPU_IVF(2.4+)面向高并发服务。稀疏向量则使用 SPARSE_INVERTED_INDEX,全文检索的 BM25 也基于它。AUTOINDEX 可按数据规模自动选型,但生产环境建议按数据量与查询模式显式指定,并调优参数(如 HNSW 的 M、efConstruction,检索时的 ef)。

支柱三 · 云原生分布式架构

2.x 采用存算分离:数据持久化在对象存储(MinIO/S3),元数据存放在 etcd,写入日志走消息队列(分布式部署为 Pulsar/Kafka,单机为内嵌 RocksMQ)。计算侧组件包括 Proxy(接入层)、QueryNode(执行检索)、DataNode(数据落盘)、IndexNode(构建索引),以及 RootCoord、DataCoord、QueryCoord、IndexCoord 四个协调器。各组件可独立扩缩容与滚动升级,查询节点故障后可从对象存储重新加载数据,这是它支撑亿级数据高可用的根基。对应到运维:写入与检索可以分别扩容,资源不会互相挤占。

支柱四 · 数据管理与多租户

数据按 Collection → Partition → Shard → Segment 四级组织。Partition Key 可将数据按业务键路由到固定分区,检索时自动剪枝,是低成本多租户隔离的常用手段。管理能力方面支持 upsert(存在则更新、不存在则插入)、TTL 数据过期、多数据库(2.3+)、RBAC 权限(2.4+)与动态字段。一致性级别可选 Strong、Bounded、Session、Eventually,默认 Bounded(有界一致性),在性能与时效间取平衡。

生产部署与监控:从上线到运维

单机部署(Docker Compose):适合总向量量千万级以内、无强高可用要求的内部系统。注意持久化:etcd 与 MinIO 的容器卷要挂到宿主机稳定路径,并定期备份 MinIO bucket 与 etcd 快照,否则容器重建会丢元数据或数据文件。

集群部署(Kubernetes / 托管):生产建议用 Milvus Operator 或 Helm 部署分布式形态(helm repo add milvus https://milvus-io.github.io/milvus-helm/)。生产环境至少 3 个 etcd 副本,对象存储使用云厂商 S3/COS/OSS,消息队列可选 Kafka;按负载单独扩缩 QueryNode(检索)与 DataNode(写入)副本。不想自运维的团队可直接使用 Zilliz Cloud 全托管服务。

可观测性:Milvus 在 9091 端口暴露健康检查(/healthz)与 Prometheus 指标(/metrics),官方提供 Grafana 面板 JSON。重点监控:检索延迟分位数(P95/P99)、QPS、QueryNode 内存水位、Segment 数量、对象存储用量、compact 堆积情况;日志建议接入集中日志系统。管理操作可用官方 GUI 工具 Attu。上线前务必用业务数据压测,索引参数与副本数都应以压测结果为准。

<p class="para-label">避坑清单:</p>

<ul class=“dash-list“><li>集合的向量维度与 metric_type(L2/IP/COSINE)创建后不可修改,改维度只能重建集合并全量重灌,建表前先确认 embedding 模型的输出维度;</li><li>插入后立刻查询可能返回空:默认 Bounded 一致性存在可见延迟,需要”读己之写“时在 search/query 请求中设置 consistency_level=”Strong”;</li><li>标量过滤会全表扫描:高频过滤字段要建标量索引(如 INVERTED),并配合 partition key 做分区剪枝;</li><li>delete 是逻辑删除,磁盘空间在 compact 后才会回收,高频更新场景优先用 upsert 而非 delete+insert;</li><li>重复主键的 insert 会覆盖旧数据(upsert 语义),生产环境必须设计好主键策略,避免静默丢数据。</li></ul>

维度MilvusQdrantChromaWeaviate
定位云原生分布式向量数据库高性能向量检索引擎(Rust 编写)面向 LLM 应用的嵌入式向量库带图模型能力的向量数据库
架构范式存算分离,Proxy/Query/Data/Index 分层,etcd+对象存储+RocksMQ单机内存优先,支持分布式部署本地嵌入式,单进程文件存储模块化微服务,支持模块扩展
类型约束强 Schema,创建后维度与度量不可改动态 Schema,Payload 自动类型推断无需 Schema,Python 对象直存定义 Class 与属性类型(GraphQL)
学习曲线中:Collection/Partition/Segment 概念多较低:API 简洁低:pip install 即用中:需额外学习 GraphQL 查询
生态集成LangChain/LlamaIndex/Haystack,国内生态友好LangChain/LlamaIndex/FastEmbedLangChain/LlamaIndex,OpenAI 生态紧密OpenAI/Cohere 模块、GraphQL、LangChain
生产部署Docker Compose/K8s Operator/全托管Docker/K8s,官方有分布式方案单机文件为主,适合小规模Docker/K8s/Weaviate Cloud
LicenseApache 2.0Apache 2.0Apache 2.0BSD-3-Clause
适合谁亿级向量、需要分布式与多租户的 RAG 与搜索团队追求单机极致性能、Rust 栈或 API 简洁团队原型验证、轻量 RAG 教学与小规模应用需要图关联与富 Schema 的知识业务

选型建议:纯 Python 原型与小规模应用选 Chroma,秒级上手;追求单机性能上限与简洁 API 选 Qdrant;规模达千万级以上、需要分布式/多租户/混合检索或国产化生态,选 Milvus;知识图谱类场景可评估 Weaviate。性能结论务必基于自测数据,建议用 VectorDBBench 对业务场景统一压测后再拍板。

版本迭代

Milvus 1.x(2019-2021)完成“能跑”的积累,但存在架构耦合、不支持水平扩展等问题;2.0 起彻底重写为云原生架构。此后主线清晰:2.3 补齐数据更新语义,2.4 引入 GPU 与多向量类型,2.5 内置全文检索并把部署门槛降到 pip 即用。整体演进方向是“检索能力增强 + 部署成本下降”。(截至训练数据,可能已有更新版本)

版本时间变化提升
2.0.02021-07云原生架构全面重写与 1.x 不兼容的升级:存算分离、etcd+对象存储+消息队列、组件化水平扩展
2.3.02023-06数据语义补齐支持 upsert、group by、range search,引入 partition key 分区路由,使用体验接近完整数据库
2.4.02024-04GPU 与多向量类型支持 GPU 索引(CAGRA/GPU_IVF)、稀疏与二进制向量、单集合多向量字段,混合检索能力成形
2.5.02024-11全文检索与嵌入式版本内置 BM25 全文检索(含中文 ANALYZER 分词)、Milvus Lite 随 SDK 发布、load 操作可选、hybrid_search 融合排序框架
2.5.22025-02稳定与易用性全文检索与稀疏向量场景修复,部署脚本与安装体验优化
2.5.42025-06生态与运维完善与 LangChain/LlamaIndex 集成增强,稳定性与性能持续修复(最新稳定版,后续以官方 Release 为准)
结论

向量数据库没有类似 MMLU 的统一评测集,业界通常用 Zilliz 开源的 VectorDBBench 做横向压测;不同数据量与查询模式下结论差异很大,选型务必用业务数据自测。趋势上,Milvus 正从“向量检索引擎”走向“AI 数据基础设施”——混合检索、多向量、生态集成是后续版本的核心发力点。

AI 应用场景

企业 RAG 知识库的向量存储层

阶段:RAG 管道构建(文档切分 → Embedding → 向量入库 → 召回)

解决的问题:传统关键词检索对语义相似问题召回率低;Milvus 存文档切块后的 Embedding 向量,支持亿级规模毫秒级召回。2.5 的混合检索(稠密向量 + BM25 全文)解决专有名词、缩写、同义词易漏召回的问题,无需再外挂 Elasticsearch。

具体案例:将客服知识库、技术文档切块后写入 Milvus,在 LangChain 中通过 Milvus 检索器接入问答链路;查询时先召回 Top-50 再交给 LLM 精排,检索耗时可从关键词方案的秒级降至毫秒级,具体数值以业务压测为准。官方 Bootcamp 提供完整 RAG 端到端示例。

以图搜图与多模态检索

阶段:多模态 Embedding + 向量召回

解决的问题:商品图、视频帧经 CLIP/ResNet 等模型提取特征向量后入库,按相似度返回最接近的图片;Milvus 支持在向量检索的同时叠加类目、价格区间等标量过滤,做到“以图搜图 + 定向筛选”二合一。

具体案例:电商同款识别场景中,商品主图特征写入 Milvus,上传一张图即可返回 Top-K 相似商品;官方 Bootcamp 的 reverse image search 示例验证了该链路。图像检索常用 L2 或 IP 度量,索引选 HNSW 即可获得较好召回率。

推荐系统的向量召回层

阶段:个性化召回(Recall)

解决的问题:用户向量与内容向量做近邻召回是推荐系统召回层的常见做法,但召回量级大、更新频繁。Milvus 提供 group by、范围搜索与迭代器(Iterator),支持全量离线灌库与在线增量写入;partition key 可按城市/频道/租户分片,实现隔离与剪枝。

具体案例:资讯/短视频推荐中,用户 Embedding 与内容 Embedding 定期更新入库,在线服务按 partition key 只检索本业务分片,避免跨租户扫描;Zilliz 在 VectorDBBench 公布的对比中,Milvus 在部分大数据集高并发场景 QPS 领先(以官方仓库数据为准,建议自测复现)。

常见误区

误区Milvus 和 Faiss 差不多,都是把向量塞进内存做最近邻搜索的库,数据量大了加内存就行。

正解Faiss 是单机内存索引库,没有 CRUD、持久化、过滤与集群能力;Milvus 是完整的分布式向量数据库,数据落盘到对象存储,支持增删改查、标量过滤、多租户与水平扩展。内存占用也可控——索引支持按需加载/释放,并用 IVF/DiskANN 降低内存成本。选型应看数据规模与管理需求,而非“谁更快”。

为何常见:早期资料常以“高性能向量检索”一句话概括 Milvus,掩盖了数据库侧能力;Faiss 知名度高,两者被混为一谈。

误区先随便建个集合跑通流程,维度设小点省资源,后面不够再改。

正解集合创建后向量维度与 metric_type 不可修改,只能新建集合并全量重灌。建表前先确认 Embedding 模型的输出维度(如 OpenAI text-embedding-3 为 1536,BGE 系列常见 768/1024),并确定业务适合的度量方式。

为何常见:关系型数据库可以 ALTER TABLE 加列改类型,向量库 Schema 语义不同,文档中“不可修改”的提示容易被忽略。

误区刚 insert 了一批向量,立刻 search 查不到,是不是写入失败了?不该是强一致的吗?

正解Milvus 默认有界一致性(Bounded),写入到可被检索存在一定延迟。需要“读己之写”时,在 search/query 请求中显式传 consistency_level="Strong";生产写入后立即检索的场景要评估强一致对吞吐的影响,必要时用 upsert 配合业务重试。

为何常见:单机数据库“写后读”天然一致,迁移到分布式架构后沿用旧习惯,遇到延迟就以为写失败了。

误区向量检索很快,为什么加了个 filter 就慢了几十倍?Milvus 过滤能力不行。

正解标量过滤走独立执行路径,未建索引的标量字段过滤会退化为全量扫描。为高频过滤字段建标量索引(如 INVERTED 倒排索引),再用 partition key 把数据先按业务键切分,检索时只扫描相关分区,性能可恢复。过滤表达式的写法同样影响执行计划。

为何常见:只关注向量索引,忽略了“搜索 + 过滤”是两段独立的执行路径;标量索引说明在文档独立章节,容易被跳读。

误区每天定时 delete 老数据,但对象存储用量一直涨,Milvus 是不是有 bug?

正解Milvus 的 delete 是标记删除(向段内写入删除标记),物理空间需要 compact 后才回收;drop collection 才会立即释放全部空间。高频更新场景应优先使用 upsert,按业务节奏定期 compact,避免过度 compact 占用计算资源。

为何常见:数据库 delete 的通用心智模型是“立即释放”,而向量库采用不可变段 + 标记删除的设计,这一差异新手往往不知道。

误区Milvus Lite 用起来真方便,一行代码就建库,生产环境也这么搞不就行了?

正解Milvus Lite 是随 pymilvus 提供的本地嵌入式版本,定位是原型验证、测试与教学,不支持多节点、多副本与完整运维能力,数据量与并发能力有限。生产环境应根据规模选择 Standalone(单机 Docker)或分布式集群(K8s / 托管服务)。

为何常见:官方快速上手教程默认用 Lite 演示,读者容易把“最快跑通”当成“生产形态”。

面试题

Q1. Milvus 与 Faiss 的本质区别是什么?

单选题 · easy

  • A.Faiss 是完整向量数据库
  • B.Faiss 是不带持久化的索引库← 正确答案
  • C.Milvus 仅能用于内存检索
  • D.两者均支持 SQL 查询

答案:B。Faiss 是 Meta 开源的向量检索库,提供索引与最近邻搜索算法,但无持久化、CRUD、过滤与集群能力;Milvus 是完整向量数据库,在检索之上提供了数据管理、分布式与高可用能力。A、C、D 均与事实不符。

Q2. Milvus 默认的一致性级别是?

单选题 · mid

  • A.强一致性 Strong
  • B.有界一致性 Bounded← 正确答案
  • C.会话一致性 Session
  • D.最终一致性 Eventually

答案:B。Milvus 提供 Strong、Bounded、Session、Eventually 四种级别,默认 Bounded:写入后的数据在一段有界时间内达到可见,兼顾性能与时效。Strong 需要显式指定且影响吞吐;最终一致性与会话一致性均非默认。

Q3. 集合创建后,下列哪项不可修改?

单选题 · easy

  • A.向量维度与相似度度量← 正确答案
  • B.分区数量与索引类型
  • C.标量字段的默认取值
  • D.检索返回条数上限

答案:A。向量维度与 metric_type 在创建集合时确定,之后无法修改,只能重建集合。分区可以新增、索引可以删除重建,所以 B 可变;C、D 不构成集合级不可变约束。建表前务必确认 Embedding 维度。

Q4. Milvus 2.4+ 支持哪些 GPU 索引?

多选题 · mid

  • A.CAGRA GPU 索引← 正确答案
  • B.GPU_IVF 系列索引← 正确答案
  • C.HNSW 内存索引
  • D.DiskANN 磁盘索引

答案:AB。Milvus 2.4 正式支持 CAGRA 与 GPU_IVF_FLAT/GPU_IVF_PQ 等 GPU 索引,用于高并发检索场景。HNSW 运行于 CPU 内存,DiskANN 是 CPU 磁盘索引,二者不属于 GPU 索引。

Q5. 关于 Milvus 的删除行为,下列说法正确的是?

单选题 · easy

  • A.删除后数据立即物理删除
  • B.逻辑删除,压缩后回收空间← 正确答案
  • C.删除只影响过滤查询
  • D.删除后空间立即归还

答案:B。Milvus 的 delete 写入删除标记,数据仍占物理空间,需执行 compact 才回收;drop collection 则直接释放整个集合空间。A、D 把 delete 当成即时物理删除,C 描述错误。

Q6. Milvus 2.4+ 支持哪些向量字段类型?

多选题 · hard

  • A.稠密浮点向量← 正确答案
  • B.稀疏浮点向量← 正确答案
  • C.二进制向量← 正确答案
  • D.文本字符串向量

答案:ABC。Milvus 支持 FLOAT_VECTOR(稠密)、SPARSE_FLOAT_VECTOR(稀疏)、BINARY_VECTOR(二进制),并允许单集合多个向量字段。文本字符串属于标量字段(VARCHAR),不是向量类型。

Q7. 分布式集群中负责执行向量检索计算的组件是?

单选题 · mid

  • A.DataNode 数据节点
  • B.QueryNode 查询节点← 正确答案
  • C.IndexNode 索引节点
  • D.RootCoord 协调节点

答案:B。QueryNode 将分段(Segment)加载到内存并执行向量搜索;DataNode 负责数据落盘,IndexNode 负责构建索引,RootCoord 负责 DDL 与任务调度。检索路径是 Proxy 转发请求到 QueryNode。

Q8. 向量检索叠加标量过滤后性能骤降,最有效的优化手段是?

单选题 · mid

  • A.增加向量索引数量
  • B.为过滤字段建标量索引← 正确答案
  • C.调大检索返回条数
  • D.提高一致性级别

答案:B。未建索引的标量字段过滤会全量扫描,导致延迟劣化。为高频过滤字段创建标量索引(如 INVERTED),并配合 partition key 剪枝,可显著恢复性能。向量索引数量与检索条数不解决过滤瓶颈。

Q9. 关于 Milvus 2.5 的全文检索,下列说法正确的是?

多选题 · hard

  • A.内置 BM25 检索算法← 正确答案
  • B.支持中文分词配置← 正确答案
  • C.可与向量检索混合使用← 正确答案
  • D.需要外挂 ES 集群

答案:ABC。2.5 内置 BM25 全文检索,支持 ANALYZER 分词(含中文),并通过 hybrid_search 与向量检索做融合排序(加权或 RRF)。全文检索在 Milvus 内部完成,无需部署 Elasticsearch,D 错误。

Q10. 某 QueryNode 节点故障被替换,为什么检索服务不丢数据?

单选题 · extreme

  • A.数据实时同步到其他节点内存
  • B.数据持久化于对象存储可重建← 正确答案
  • C.每次查询直连对象存储
  • D.仅保存在查询节点备份

答案:B。Milvus 存算分离,数据物理存储在对象存储(MinIO/S3),QueryNode 只是把 Segment 加载进内存执行检索。节点故障后,新的 QueryNode 会从对象存储重新加载数据,所以不依赖节点内存做持久化。C 描述了错误的访问路径。

参考来源