MinIO

高性能开源对象存储系统,兼容 Amazon S3 API,是 RAG 知识库中存储文档的标准方案

简介

MinIO 是一个高性能、S3 兼容的开源对象存储系统,专为云原生应用和大规模数据存储设计。在 RAG 知识库架构中,MinIO 负责存储原始文档(PDF、Word、Excel 等),配合向量数据库(如 Milvus)实现”文档存储 + 向量检索”的分层架构。MinIO 支持 Docker 部署,提供完整的文件管理 API,是构建企业级知识库的标准基础设施。

关键信息

项目内容
类型开源对象存储系统
API 兼容性Amazon S3 API 完全兼容
部署方式Docker / Kubernetes / 单机二进制
性能特点高吞吐、低延迟、支持分布式
管理界面Web Console(端口 9001)
客户端支持mc 命令行工具 + 多语言 SDK
开源协议GNU AGPLv3

核心特性

S3 兼容 API

MinIO 完全兼容 Amazon S3 API,支持:

  • Bucket 管理:创建、删除、列出存储桶
  • 对象操作:上传、下载、删除、复制文件
  • 访问控制:IAM 策略、桶策略、访问密钥管理
  • 元数据管理:自定义对象元数据、标签
  • 版本控制:对象多版本存储和恢复
  • 生命周期管理:自动过期和归档策略

Docker 部署

快速启动单机版

docker run -d \
  -p 9000:9000 -p 9001:9001 \
  -e "MINIO_ROOT_USER=minioadmin" \
  -e "MINIO_ROOT_PASSWORD=minioadmin" \
  -v /data:/data \
  minio/minio server /data --console-address ":9001"

访问管理界面:http://localhost:9001

在 Docker Compose 中集成(典型 RAG 架构):

services:
  minio:
    image: minio/minio
    ports:
      - "9000:9000"
      - "9001:9001"
    environment:
      MINIO_ROOT_USER: minioadmin
      MINIO_ROOT_PASSWORD: minioadmin
    volumes:
      - minio_data:/data
    command: server /data --console-address ":9001"
  
  milvus:
    image: milvusdb/milvus:v2.5.x
    depends_on:
      - minio
    environment:
      MINIO_ADDRESS: minio:9000

在 RAG 知识库中的角色

在典型的 RAG 知识库架构中,MinIO 的职责:

用户上传文档 → MinIO 对象存储(原始文件)
                      ↓
                 文档解析器
                      ↓
                 文本切块 + Embedding
                      ↓
             Milvus 向量数据库(向量索引)

分层存储的优势

  • 原始文件保留:用户可下载原始文档,不丢失格式和完整信息
  • 向量检索加速:Milvus 只存储向量,检索速度快
  • 多格式支持:MinIO 可存储任意格式文件,不限于文本
  • 成本优化:向量数据库昂贵,MinIO 对象存储成本低

Python SDK 示例

from minio import Minio
 
# 初始化客户端
client = Minio(
    "localhost:9000",
    access_key="minioadmin",
    secret_key="minioadmin",
    secure=False
)
 
# 上传文件
client.fput_object(
    bucket_name="knowledge-base",
    object_name="documents/report.pdf",
    file_path="/path/to/report.pdf"
)
 
# 下载文件
client.fget_object(
    bucket_name="knowledge-base",
    object_name="documents/report.pdf",
    file_path="/tmp/downloaded_report.pdf"
)
 
# 获取下载链接(有效期 7 天)
url = client.presigned_get_object(
    bucket_name="knowledge-base",
    object_name="documents/report.pdf",
    expires=timedelta(days=7)
)

不同素材中的观点

来自 2026-06-17-woshipm-ai-knowledge-base-product-design

在 Yuxi + Milvus + MinIO 架构中的应用

  • MinIO 作为对象存储层,负责存储用户上传的原始文档(PDF、Word、Excel 等)
  • 后端(C#.NET MVC)通过 MinIO API 实现文件上传/下载功能
  • 产品支持”来源溯源”功能:用户在 AI 对话中看到答案来源,可以点击下载原始文档(从 MinIO 拉取)
  • Docker Compose 部署方案中,MinIO 与 Milvus、Yuxi 后端一起启动,构成完整的知识库基础设施

成本优势

  • 自建 MinIO 存储 50GB 文档,月成本接近零(仅云服务器磁盘成本)
  • 对比商业对象存储服务(如阿里云 OSS ¥0.12/GB/月),50GB 自建节省约 ¥6/月
  • 虽然金额不大,但在 MVP 阶段”每一分钱都要花在验证核心假设上”的原则下,自建 MinIO 是明智选择

技术选型理由

  • S3 兼容性:未来如需迁移到云端,可无缝切换到阿里云 OSS、腾讯云 COS(都兼容 S3 API)
  • Docker 部署简单:与 Milvus、Yuxi 一起 docker-compose up 一键启动
  • 开源无限制:无文件大小限制、无流量限制、无调用次数限制

分层架构设计的价值

“大模型对于知识库的分析,使用了 MinIO 对象存储和 Milvus 向量数据库,因此我们可以使用 MinIO 相关接口来读取存储在里面的文档。”

这种分层设计让产品功能更灵活:

  • 用户可以直接下载原始文档(不只是看 AI 回答)
  • 支持多格式文档管理(不只是纯文本)
  • 未来可扩展文档预览、批注等功能

实用信息

安装方式

方式一:Docker(推荐)

docker run -d \
  -p 9000:9000 -p 9001:9001 \
  -e "MINIO_ROOT_USER=admin" \
  -e "MINIO_ROOT_PASSWORD=your_password" \
  -v /data/minio:/data \
  minio/minio server /data --console-address ":9001"

方式二:二进制安装(Linux)

wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
./minio server /data --console-address ":9001"

适用场景

适合使用 MinIO 的场景

  • RAG 知识库:存储原始文档,配合向量数据库实现分层检索
  • 云原生应用:微服务架构中的文件存储层
  • 数据湖:大规模非结构化数据存储
  • 备份归档:替代传统文件系统,支持自动生命周期管理
  • AI 训练数据集:存储训练数据、模型文件

不适合使用 MinIO 的场景

  • 小规模个人项目(本地文件系统更简单)
  • 需要复杂文件系统语义(如 POSIX、文件锁)
  • 频繁小文件随机读写(对象存储不适合此类场景)

运维注意事项

  • 持久化存储:生产环境必须挂载外部卷,避免容器重启数据丢失
  • 访问控制:修改默认密码,配置 IAM 策略限制访问权限
  • 网络隔离:MinIO 端口 9000 不应暴露到公网,仅后端服务访问
  • 监控指标:关注磁盘使用率、API 请求延迟、网络吞吐量

与其他对象存储方案对比

方案成本S3 兼容部署难度适用场景
MinIO免费开源✅ 完全兼容⭐⭐(Docker)自建私有云、MVP 验证
阿里云 OSS¥0.12/GB/月✅ 兼容⭐(托管)生产环境、大规模应用
Amazon S3$0.023/GB/月✅ 原生⭐(托管)海外业务、AWS 生态
本地文件系统免费❌ 不兼容⭐(无需部署)小规模个人项目

相关页面