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

资讯详情

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

【Vector DB】Milvus快速上手介绍

【Vector DB】Milvus快速上手介绍 它是目前全球最流行的开源向量数据库之一由 Zilliz 开发并捐赠给 LF AI Data 基金会。在 AI 和大模型LLM时代Milvus 扮演着“长期记忆”和“语义搜索引擎”的关键角色。下面我将从定义、SQL 映射、解决的问题以及优缺点四个维度为大家详细介绍。1. Milvus 是什么简单来说Milvus 是一个专为海量向量数据设计的云原生数据库。传统数据库如 MySQL处理的是结构化数据数字、字符串通过精确匹配或 B树索引查询。Milvus处理的是非结构化数据图片、音频、文本转化后的高维向量Embedding。它不追求“精确相等”而是追求“相似度搜索”Approximate Nearest Neighbor Search, ANNS。核心概念在 Milvus 中万物皆向量。一段文字的语义、一张图片的特征都被表示为[0.12, -0.34, ..., 0.99]这样的浮点数数组。2. Milvus 的 DDL / DML / DQL 详解与举例虽然 Milvus 不是关系型数据库但为了降低学习成本它提供了类似 SQL 的操作语义通过 PyMilvus SDK 或 Milvus CLI。️ DDL (Data Definition Language) - 数据定义在 Milvus 中DDL 主要围绕Collection集合和Schema模式展开相当于传统数据库的 Table。操作Milvus 对应概念说明Python (PyMilvus) 示例CREATE TABLEcreate_collection创建集合需定义字段、主键、向量维度utility.create_collection(namedocs, schemaschema)DROP TABLEdrop_collection删除整个集合utility.drop_collection(docs)CREATE INDEXcreate_index核心操作。为向量字段创建 ANN 索引如 HNSW, IVF_FLATcollection.create_index(field_nameembedding, index_params{index_type: HNSW, ...})ALTERalter_collection修改集合属性如 TTL、副本数collection.alter_properties({collection.ttl.seconds: 3600})⚠️ 注意Milvus 的 Schema 是强类型的。你必须预先定义好哪些字段是标量Int/Varchar哪个字段是向量FloatVector/BinaryVector以及向量的维度如 768, 1536。✏️ DML (Data Manipulation Language) - 数据操作Milvus 支持数据的增删改但有其特殊性例如不支持单条 Update 向量通常采用 Upsert。操作Milvus 对应方法说明示例INSERTinsert批量插入数据支持动态字段collection.insert([{id: 1, text: hello, vec: [0.1, ...]}])UPSERTupsert插入或更新基于主键。推荐用于数据同步collection.upsert(data_list)DELETEdelete按主键或过滤表达式删除collection.delete(exprid in [1, 2, 3])FLUSHflushMilvus 特有。将内存中的数据持久化到对象存储确保数据可被搜索utility.flush([docs]) 关键点Milvus 是存算分离架构写入后数据先进入消息队列Pulsar/Kafka和缓存必须flush或等待自动 flush 后新数据才对搜索可见。 DQL (Data Query Language) - 数据查询这是 Milvus 最核心的部分分为向量搜索Search和标量查询Query。操作方法说明示例向量搜索search基于向量相似度找 Top-K。支持混合过滤collection.search(data[query_vec], anns_fieldembedding, param{metric_type: COSINE, params: {nprobe: 10}}, limit10, expryear 2020)标量查询query类似 SQL SELECT仅按条件过滤不走向量索引collection.query(exprauthor 鲁迅, output_fields[title, content])混合查询hybrid_search多路召回 重排序Rerank。结合多个向量字段或稀疏/稠密向量collection.hybrid_search(reqs[sparse_req, dense_req], rankerRRFRanker(), limit10) Search vs Query 的区别search必须传入向量计算距离返回相似结果。query不传向量只做元数据过滤相当于SELECT * FROM table WHERE ...。3. Milvus 解决了什么问题Milvus 填补了传统数据库在AI 原生应用中的空白非结构化数据的语义检索让计算机理解“意思”而不是“关键字”。例如搜索“如何缓解焦虑”能匹配到“放松心情的方法”即使没有相同词汇。RAG检索增强生成作为大模型的外挂知识库解决 LLM 幻觉和知识过时问题。海量向量的高效检索在十亿级向量规模下实现毫秒级响应。传统暴力搜索Flat需要数小时Milvus 通过 HNSW/DiskANN 等索引只需几毫秒。多模态融合同时存储文本向量、图像向量及业务元数据支持跨模态搜索和混合过滤。4. 优缺点分析✅ 优点极致性能专为向量优化支持 GPU 加速十亿级数据毫秒级响应。云原生架构存算分离依赖 MinIO/S3 存储 Pulsar/Kafka 日志支持弹性扩缩容。生态丰富支持多种索引类型HNSW, IVF, DiskANN, GPU_IVF、多种距离度量、LangChain/LlamaIndex 深度集成。混合搜索能力原生支持标量过滤 向量搜索且支持 Sparse-Dense 混合检索BM25 Vector。社区活跃LF AI 顶级项目文档完善迭代快。❌ 缺点 / 挑战运维复杂度高生产环境依赖 etcd MinIO Pulsar/Kafka Milvus 节点组件多对 SRE 要求高。注轻量版 Milvus Lite 已缓解此问题适合单机/开发非事务性不支持 ACID 事务。不适合做金融转账等强一致性业务只适合 AI 检索场景。资源消耗大高性能索引如 HNSW极其吃内存。十亿级 128维向量可能需要数百 GB 内存可用 DiskANN 缓解。学习曲线需要理解 Embedding、ANN 索引原理、分片、一致性级别等 AI Infra 概念比 MySQL 门槛高。更新代价向量索引本质是图或聚类结构频繁 Delete/Upsert 会导致性能衰减需要定期 Compaction。 总结给同学们的建议场景是否推荐 Milvus替代方案RAG / 知识库 / 语义搜索⭐⭐⭐⭐⭐ 强烈推荐Weaviate, Qdrant推荐系统 / 图像检索⭐⭐⭐⭐⭐ 强烈推荐Faiss (单机), Elasticsearch小规模原型 / 本地开发⭐⭐⭐⭐ Milvus LiteChromaDB, SQLite-VSS已有 ES/PG 且向量需求简单⭐⭐⭐ 可选pgvector, Elasticsearch knn强事务 / 报表统计❌ 不推荐PostgreSQL, MySQL学习路径建议先用pymilvus[lite]在本地跑通 Demo → 理解 HNSW 索引参数 → 部署 Docker Compose 版 → 接入 LangChain 做 RAG → 最后再考虑 K8s 集群部署。
返回列表