Milvus简介

Milvus 是另一个专为大规模向量相似度搜索 设计的开源向量数据库,和 ChromaFAISS 属于同一类技术栈,但定位更偏向 企业级、生产级、超大规模场景


✅ 一句话介绍 Milvus

Milvus 是一个高性能、可扩展的向量数据库,专为 AI 应用中的"向量相似性搜索"而生,支持亿级向量的毫秒级检索。


🔍 Milvus vs Chroma vs FAISS:全面对比

特性 Milvus Chroma FAISS (cpu/gpu)
类型 向量数据库(分布式) 轻量级向量数据库 向量搜索库(底层引擎)
是否需要独立部署 ✅ 是(可 Docker 或集群) ✅ 可嵌入(in-memory)或持久化 ❌ 不需要,纯 Python 库
可扩展性 极强(支持亿级向量、分布式) 🐢 中小规模(万到百万级) ⚠️ 单机,内存受限
易用性 ⚠️ 中等(需配置服务) 极高(几行代码搞定) ⚠️ 中等(需手动管理索引)
元数据过滤 ✅ 强大(支持复杂 SQL-like 查询) ✅ 支持简单过滤 ❌ 原生不支持
GPU 支持 ✅ 是(可加速搜索) ❌ 目前无 faiss-gpu 支持
持久化 ✅ 是(自动) ✅ 是 ✅ 可手动保存索引文件
高可用 & 多副本 ✅ 支持 ❌ 不支持 ❌ 不支持
社区 & 生态 ✅ 活跃(LF AI & Data 基金会) ✅ 活跃(LangChain 原生集成) ✅ Meta 开源,广泛使用
适合场景 企业级 RAG、推荐系统、图像检索 快速原型、本地实验、小项目 高性能单机搜索、嵌入式

✅ Milvus 的核心优势

1. 超大规模支持

  • 支持 十亿级向量 的高效检索
  • 使用分片(sharding)、副本(replica)、索引优化(如 IVF, HNSW, DiskANN)实现高性能

2. 混合搜索(Hybrid Search)

  • 不仅支持向量相似度搜索
  • 还支持 向量 + 结构化元数据过滤 联合查询
复制代码

Python

编辑

复制代码
# 例子:找"类别=新闻"且语义匹配"天气"的文档
results = collection.query(
    vector=query_vector,
    filter="category == 'news'",
    limit=5
)

3. 多种索引类型,灵活优化

  • IVF_FLAT, IVF_SQ8, HNSW, DISKANN
  • 可根据数据量、精度、速度需求选择

4. 支持多种距离度量

  • L2(欧氏距离)
  • IP(内积,归一化后 ≈ 余弦相似度)
  • COSINE(新版本直接支持)

✅ Milvus 的典型架构

复制代码

Text

编辑

复制代码
+----------------+     +---------------------+
|   AI 应用       | --> |    Milvus Server     |
| (Python/Java)  |     | (Docker/Kubernetes) |
+----------------+     +----------+----------+
                                  |
                                  v
                   +---------------------------+
                   |       向量索引 + 元数据      |
                   | (存储在本地或云存储如 S3)   |
                   +---------------------------+

📌 你需要启动一个 Milvus 服务(通常用 Docker),然后通过 SDK 连接它。


✅ 代码示例:用 Milvus 实现 retrieve

复制代码

Python

编辑

复制代码
from pymilvus import connections, Collection, FieldSchema, CollectionSchema, DataType
import numpy as np

# 1. 连接 Milvus 服务
connections.connect(host="localhost", port="19530")  # 默认端口

# 2. 定义 schema
fields = [
    FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True),
    FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=384),
    FieldSchema(name="text", dtype=DataType.VARCHAR, max_length=5000),
]
schema = CollectionSchema(fields, "文档检索")
collection = Collection("documents", schema)

# 3. 创建索引(如 HNSW)
index_params = {
    "index_type": "HNSW",
    "metric_type": "COSINE",  # 直接支持余弦相似度!
    "params": {"M": 8, "efConstruction": 64}
}
collection.create_index("embedding", index_params)

# 4. 插入数据(假设已有 embeddings 和 texts)
# collection.insert([embeddings, texts])

# 5. 检索函数
def retrieve_milvus(query: str, top_k: int = 3):
    query_embedding = embed_chunk(query).reshape(1, -1)
    
    collection.load()  # 加载到内存
    results = collection.search(
        data=query_embedding,
        anns_field="embedding",
        param={"metric_type": "COSINE", "limit": top_k},
        limit=top_k,
        output_fields=["text"]
    )
    
    # 提取文本
    return [hit.entity.get("text") for hit in results[0]]

# 使用
results = retrieve_milvus("今天天气怎么样")
print(results)

✅ 什么时候该用 Milvus?

场景 推荐使用 Milvus?
项目原型、本地实验 ❌ 用 Chroma 更快
数据量 < 10 万 ❌ 用 Chroma 或 FAISS
数据量 > 100 万 ✅ Milvus 更稳定高效
需要高可用、多副本 ✅ Milvus 支持
需要混合查询(向量 + 条件) ✅ Milvus 强大支持
团队有运维能力 ✅ 可部署管理
云原生、Kubernetes 环境 ✅ Milvus 支持

✅ Milvus 的部署方式

方式 说明
Milvus Lite 嵌入式,类似 Chroma,用于测试
Docker Compose 单机部署,适合中小规模
Kubernetes (Helm) 生产级集群部署,支持自动伸缩

✅ 总结:三者怎么选?

你的需求 推荐工具
快速验证想法、做 demo Chroma
单机高性能、嵌入式搜索 FAISS
企业级、大规模、高并发、混合查询 Milvus

🎯 最终建议

  • 学习阶段 :用 Chroma,简单直观
  • 性能优化 :用 FAISS,掌握底层
  • 生产上线 :用 MilvusWeaviate / Pinecone,确保稳定可扩展

🔥 你可以把它们看作"向量搜索技术栈"的不同层次:

  • FAISS:发动机
  • Chroma:家用轿车(易开)
  • Milvus:重型卡车(载重大、可集群)

如果你正在构建一个企业级 RAG 系统、推荐引擎或图像搜索引擎Milvus 是非常值得投入学习和使用的工具

相关推荐
Microsoft Word7 天前
向量数据库与RAG
数据库·人工智能·向量数据库·rag
whltaoin1 个月前
AI 超级智能体全栈项目阶段四:学术分析 AI 项目 RAG 落地指南:基于 Spring AI 的本地与阿里云知识库实践
人工智能·spring·阿里云·向量数据库·rag
JolyouLu2 个月前
LangChain4J-基础(整合Spring、RAG、MCP、向量数据库、提示词、流式输出)
大模型·提示词·向量数据库·rag·mcp·langchain4j
未来之窗软件服务3 个月前
自建知识库,向量数据库 体系建设(二)之BERT 与.NET 8
人工智能·深度学习·bert·知识库·向量数据库·仙盟创梦ide·东方仙盟
一包烟电脑面前做一天3 个月前
RAG实现:.Net + Ollama + Qdrant 实现文本向量化,实现简单RAG
.net·向量数据库·ai大模型·rag·ollama·qdrant·文本分块
TGITCIC3 个月前
还在使用Milvus向量库?2025-AI智能体选型架构防坑指南
milvus·向量数据库·ai agent·ai智能体·qdrant·rag增强检索
GEM的左耳返3 个月前
Java AI面试实战:Spring AI与RAG技术落地
prompt工程·向量数据库·java面试·rag·ai应用·spring ai
alex1003 个月前
AI Agent开发学习系列 - langchain之LCEL(5):如何创建一个Agent?
人工智能·python·语言模型·langchain·prompt·向量数据库·ai agent
之之为知知3 个月前
Chromadb 1.0.15 索引全解析:从原理到实战的向量检索优化指南
人工智能·深度学习·机器学习·大模型·索引·向量数据库·chromadb