• 最火向量数据库Milvus安装使用一条龙!

最火向量数据库Milvus安装使用一条龙!

2025-04-27 10:39:47 栏目:宝塔面板 108 阅读

向量数据库是大模型应用开发必备组件之一,因为它知识库、语义搜索、检索增强生成(RAG)等人工智能应用中发挥着举足轻重的作用。但向量数据有很多,为什么要使用 Milvus 呢?

常见向量数据

常见的向量数据库有以下这些:

  • Chroma
  • Elasticsearch
  • Milvus
  • Neo4j
  • OpenSearch
  • Redis
  • PGVector

然而目前市面上使用最多的向量数据库还是 Milvus,为什么呢?

这点从企业的招聘要求中也能发现:

为什么是 Milvus?

Milvus 设计之初就是为 AI  而生的一个高效的向量数据库系统,在大多数情况下,Milvus 的性能是其他向量数据库的 2-5 倍,它能实现万亿级向量的毫秒级相似性搜索,而且 Milvus 还是开源的向量数据库

PS:也就说 Milvus 既开源(可以免费使用+支持二次开发)又具备高性能,这样的数据库谁不爱呢?

为什么 Milvus 这么快?

Milvus 运行比较快的原因有以下几个:

  • 硬件感知优化:为了让 Milvus 适应各种硬件环境,我们专门针对多种硬件架构和平台优化了其性能,包括 AVX512、SIMD、GPU 和 NVMe SSD。
  • 高级搜索算法:Milvus 支持多种内存和磁盘索引/搜索算法,包括 IVF、HNSW、DiskANN 等,所有这些算法都经过了深度优化。与 FAISS 和 HNSWLib 等流行实现相比,Milvus 的性能提高了 30%-70%。
  • C++ 搜索引擎:向量数据库性能的 80% 以上取决于其搜索引擎。由于 C++ 语言的高性能、底层优化和高效资源管理,Milvus 将 C++ 用于这一关键组件。最重要的是,Milvus 集成了大量硬件感知代码优化,从汇编级向量到多线程并行化和调度,以充分利用硬件能力。
  • 面向列:Milvus 是面向列的向量数据库系统。其主要优势来自数据访问模式。在执行查询时,面向列的数据库只读取查询中涉及的特定字段,而不是整行,这大大减少了访问的数据量。此外,对基于列的数据的操作可以很容易地进行向量化,从而可以一次性在整个列中应用操作,进一步提高性能。

Milvus 支持的搜索类型

Milvus 支持各种类型的搜索功能,以满足不同用例的需求:

  • ANN 搜索:查找最接近查询向量的前 K 个向量。
  • 过滤搜索:在指定的过滤条件下执行 ANN 搜索。
  • 范围搜索:查找查询向量指定半径范围内的向量。
  • 混合搜索:基于多个向量场进行 ANN 搜索。
  • 全文搜索:基于 BM25 的全文搜索。
  • Rerankers:根据附加标准或辅助算法调整搜索结果顺序,完善初始 ANN 搜索结果。
  • 根据主键检索数据
  • 查询使用特定表达式检索数据

Milvus 安装

Milvus 有三种部署方式:

  • Milvus Lite:Milvus Lite 是一个 Python 库,可导入到您的应用程序中。作为 Milvus 的轻量级版本,它非常适合在 Jupyter 笔记本或资源有限的智能设备上运行快速原型。Milvus Lite 支持与 Milvus 其他部署相同的 API。与 Milvus Lite 交互的客户端代码也能与其他部署模式下的 Milvus 实例协同工作。
  • Milvus Standalone:Milvus Standalone 是单机服务器部署。Milvus Standalone 的所有组件都打包到一个 Docker 镜像中,部署起来非常方便。
  • Milvus Distributed:Milvus Distributed 可部署在 Kubernetes 集群上。这种部署采用云原生架构,摄取负载和搜索查询分别由独立节点处理,允许关键组件冗余。它具有最高的可扩展性和可用性,并能灵活定制每个组件中分配的资源。Milvus Distributed 是在生产中运行大规模向量搜索系统的企业用户的首选。

PS:当然中小型公司生产环境也可以直接购买 XXX 云的 Milvus 实例直接使用。

我们这里使用 Milvus Standalone 单机版部署方式。

硬件要求

前提条件

  • 安装 Docker Desktop:点击下载软件安装 https://www.docker.com/get-started/

  • 安装之后,需要重启电脑,并且电脑会进行 Linux 子系统更新才能正常启动,此过程可能会比较慢。
  • 安装 Windows Subsystem for Linux 2 (WSL 2):通常不需要单独安装,安装 Docker Desktop 时会自动安装。

正式安装

1.打开 PowerShell。

2.下载安装脚本,命令如下:

Invoke-WebRequest https://raw.githubusercontent.com/milvus-io/milvus/refs/heads/master/scripts/standalone_embed.bat -OutFile standalone.bat

3.运行下载的脚本

standalone.bat start

最终执行效果如下:

运行安装脚本后,包含以下内容:

  • 名为 Milvus-standalone 的 docker 容器已在19530 端口启动。
  • 嵌入式 etcd 与 Milvus 安装在同一个容器中,服务端口为 2379。其配置文件被映射到当前文件夹中的 embedEtcd.yaml。
  • Milvus 数据卷映射到当前文件夹中的 volumes/milvus。

在 Docker Desktop 也可以看到安装的 Milvus 相关组件:

参考官方文档:https://milvus.io/docs/zh/install_standalone-windows.md

安装 UI 客户端

Milvus 服务安装成功之后,可以按照一个 UI 客户端连接 Milvus 服务,使用官方提供的客户端 attu:https://github.com/zilliztech/attu

具体安装步骤如下:

1.访问下载安装包(attu-Setup-2.4.12.exe)地址:https://github.com/zilliztech/attu/releases/tag/v2.4.12

2.解压并安装 attu。

安装成功之后连接本地 Milvus 服务,如下图所示:

小结

Milvus 作为开源高性能向量数据库的代表,它的安装也不难,如果顺利的情况下,可能 5 分钟左右就搞定了。安装完成之后就用它加上 Spring AI 或 LangChain4j 来实现一下 RAG 功能吧。

本文地址:https://www.yitenyun.com/147.html

搜索文章

Tags

数据库 API FastAPI Calcite 电商系统 MySQL Web 应用 异步数据库 数据同步 ACK 双主架构 循环复制 TIME_WAIT 运维 负载均衡 服务器 管理口 HexHub Docker JumpServer SSL 堡垒机 跳板机 HTTPS 服务器性能 JumpServer安装 堡垒机安装 Linux安装JumpServer SQL 查询 生命周期 Deepseek 宝塔面板 Linux宝塔 锁机制 esxi esxi6 root密码不对 无法登录 web无法登录 行业 趋势 序列 核心机制 Windows Windows server net3.5 .NET 安装出错 HTTPS加密 开源 PostgreSQL 存储引擎 宝塔面板打不开 宝塔面板无法访问 Windows宝塔 Mysql重置密码 机器学习 Redis 查看硬件 Linux查看硬件 Linux查看CPU Linux查看内存 Undo Log 机制 Spring 动态查询 响应模型 Oracle 处理机制 InnoDB 数据库锁 优化 万能公式 group by 索引 连接控制 Serverless 无服务器 语言 监控 无法访问宝塔面板 异步化 ES 协同 工具 技术 Postgres OTel Iceberg openHalo scp Linux的scp怎么用 scp上传 scp下载 scp命令 缓存方案 缓存架构 缓存穿透 国产数据库 高可用 分页查询 数据 主库 SVM Embedding Linux 安全 GreatSQL 连接数 Netstat Linux 服务器 端口 存储 SQLite-Web SQLite 数据库管理工具 加密 场景 R edis 线程 云原生 Recursive R2DBC 防火墙 黑客 启动故障 向量数据库 大模型 共享锁 SQLark 日志文件 MIXED 3 OB 单机版 ​Redis 推荐模型 Canal AI 助手 RocketMQ 长轮询 配置 不宕机 信息化 智能运维 自定义序列化 PG DBA Python 业务 传统数据库 向量化 向量库 Milvus Web 接口 开发 同城 双活 聚簇 非聚簇 Ftp 线上 库存 预扣 修改DNS Centos7如何修改DNS IT运维 Hash 字段 Rsync 架构 电商 系统 分库 分表 filelock 磁盘架构 MySQL 9.3 数据类型 缓存 MongoDB MCP 开放协议 数据结构 redo log 重做日志 数据分类 语句 sftp 服务器 参数 mini-redis INCR指令 流量 PostGIS • 索引 • 数据库 ZODB Doris SeaTunnel Go 数据库迁移 分布式架构 分布式锁​ 窗口 函数 频繁 Codis 数据备份 MVCC 虚拟服务器 虚拟机 内存 失效 工具链 人工智能 推荐系统 EasyExcel MySQL8 主从复制 代理 Redisson 锁芯 prometheus Alert MGR 分布式集群 千万级 大表 分页 网络故障 聚簇索引 非聚簇索引 高效统计 今天这篇文章就跟大家 播客 StarRocks 数据仓库 网络架构 网络配置 引擎 性能 INSERT 事务 Java 数据集成工具 发件箱模式 崖山 新版本 COMPACT 核心架构 订阅机制 容器 QPS 高并发 Entity Redka Web Weaviate RDB AOF SSH 关系数据库 Caffeine CP 数据脱敏 加密算法 B+Tree ID 字段 数据页 速度 服务器中毒 Valkey Valkey8.0 DBMS 管理系统 分布式 集中式 Redis 8.0 自动重启 容器化 OAuth2 Token SpringAI 微软 SQL Server AI功能 读写 LRU 模型 原子性 排行榜 排序 数据字典 兼容性 池化技术 连接池 事务隔离 JOIN 意向锁 记录锁 UUID ID dbt 数据转换工具 业务场景 Testcloud 云端自动化 单点故障 分页方案 排版 部署 日志 1 ReadView 优化器 Pottery InfluxDB 悲观锁 乐观锁 网络 事务同步 AIOPS sqlmock 分布式锁 Zookeeper UUIDv7 主键 对象 仪表盘 双引擎 RAG HelixDB 产业链 编程 字典 Ansible Pump Order 单线程 拦截器 动态代理 恢复数据 Crash 代码 IT 线程安全 国产 用户 快照读 当前读 视图 LLM 订单 List 类型 慢SQL优化 count(*) count(主键) 行数 表空间 RR 互联网 神经系统 解锁 调优 Next-Key 矢量存储 数据库类型 AI代理 CAS 查询规划 多线程 GitHub Git 算法 技巧 并发控制 恢复机制 闪回