Milvus向量数据库介绍、安装与配置
有勇气的牛排
143
数据库
2025-07-10 22:39:37
Milvus 安装与配置
1 前言
1.1 介绍
Milvus 是一个开源的向量数据库,专门用于处理海量高维向量数据的相似度搜索。它适用于 AI、推荐系统、图像检索、自然语言处理(NLP)等需要处理嵌入向量的场景。
- 官网:https://milvus.io
- GitHub:https://github.com/milvus-io/milvus
- 开发者:Zilliz(中国的数据库初创企业)
1.2 Milvus 的核心功能
功能 |
说明 |
向量存储 |
存储数十亿条高维向量(如图像、文本、音频的嵌入) |
向量检索 |
支持 ANN(近似最近邻)算法,实现高效的相似度搜索 |
混合查询 |
支持将向量查询与结构化过滤条件结合(如性别、标签等) |
多索引类型 |
IVF, HNSW, ANNOY, DiskANN 等索引结构可选 |
分布式架构 |
支持水平扩展(scale out),适合大规模生产使用 |
多语言 SDK |
Python、Java、Go、Node.js、C++ 等 |
持久化存储 |
支持将数据持久化在磁盘或对象存储中 |
插件生态 |
支持与 Elasticsearch、MySQL、Prometheus、K8s 等集成 |
1.3 主要技术特点
特点 |
描述 |
高性能 |
每秒可搜索百万级向量,延迟低于毫秒级 |
支持 GPU |
可选用 GPU 加速训练和检索 |
插件式索引管理 |
可针对不同应用场景切换索引结构 |
自动分片 + 副本 |
提高并发能力和容错能力 |
向量类型支持 |
支持 float32、binary、float16、sparse 向量(计划中) |
1.4 典型使用场景
场景 |
示例 |
图像检索 |
上传图片找相似商品、图像搜索 |
文本语义搜索 |
通过用户输入的自然语言搜索相似文本、文档 |
推荐系统 |
利用用户行为嵌入向量实现相似用户或物品推荐 |
生物信息学 |
比对 DNA 或蛋白质序列的向量表示 |
知识图谱 |
实体向量存储和相似度搜索 |
1.5 环境要求
在安装 Milvus 之前,确保系统满足以下要求:
- 操作系统:Ubuntu 18.04+/CentOS 7+/MacOS/Docker
- CPU:支持 AVX2 指令集的 x86_64 处理器
- RAM:建议至少 8GB
- GPU(可选):NVIDIA GPU + CUDA 11.1 以上(仅用于 GPU 版本)
- Docker:建议安装 Docker 20.10+
2 安装
2.1 使用 Docker 安装 Milvus
https://milvus.io/docs/zh/install_standalone-docker.md
# Download the installation script
$ curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.sh
# 启动容器
bash standalone_embed.sh start
# 停止容器
bash standalone_embed.sh stop
# 删除容器
bash standalone_embed.sh delete
Milvus容器查看

3 连接工具
https://github.com/zilliztech/attu

3 配置Milvus
Milvus 主要通过 server_config.yaml
进行配置,该文件位于 /milvus/configs/
目录下(Docker 版本路径可能不同)。
vim /etc/milvus/config.yaml
server_config:
address: 0.0.0.0
port: 19530
service:
name: "milvus"
port: 19530
storage:
path: "/path/to/milvus/data"
log:
level: "info"
max_log_file_size: 1024
log_rotate: true
ingester:
compaction_level: 1
wal_enable: true
insert_buffer_size: 16777216
flush_interval: 1
cpu_cache_capacity: 1073741824
insert_channel_capacity: 100
search_buffer_size: 268435456
- 内存配置:根据系统内存大小调整 Milvus 的内存使用限制。
- 存储路径:指定 Milvus 数据文件的存储路径。
- 监听端口:配置 Milvus 服务监听的端口号。
- 日志级别:设置日志记录的详细程度,如 debug、info、warning、error。
- 资源限制:根据系统资源配置 CPU 和内存的使用限制。
参考文档:
https://milvus.io/docs/zh/prepare-source-data.md
<h1><a id="Milvus__0"></a>Milvus 安装与配置</h1>
<h2><a id="1__2"></a>1 前言</h2>
<h3><a id="11__4"></a>1.1 介绍</h3>
<p><strong>Milvus</strong> 是一个<strong>开源的向量数据库</strong>,专门用于处理<strong>海量高维向量数据的相似度搜索</strong>。它适用于 AI、推荐系统、图像检索、自然语言处理(NLP)等需要处理嵌入向量的场景。</p>
<ul>
<li><strong>官网</strong>:https://milvus.io</li>
<li><strong>GitHub</strong>:https://github.com/milvus-io/milvus</li>
<li><strong>开发者</strong>:Zilliz(中国的数据库初创企业)</li>
</ul>
<h3><a id="12_Milvus__12"></a>1.2 Milvus 的核心功能</h3>
<table>
<thead>
<tr>
<th>功能</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>向量存储</td>
<td>存储数十亿条高维向量(如图像、文本、音频的嵌入)</td>
</tr>
<tr>
<td>向量检索</td>
<td>支持 ANN(近似最近邻)算法,实现高效的相似度搜索</td>
</tr>
<tr>
<td>混合查询</td>
<td>支持将向量查询与结构化过滤条件结合(如性别、标签等)</td>
</tr>
<tr>
<td>多索引类型</td>
<td>IVF, HNSW, ANNOY, DiskANN 等索引结构可选</td>
</tr>
<tr>
<td>分布式架构</td>
<td>支持水平扩展(scale out),适合大规模生产使用</td>
</tr>
<tr>
<td>多语言 SDK</td>
<td>Python、Java、Go、Node.js、C++ 等</td>
</tr>
<tr>
<td>持久化存储</td>
<td>支持将数据持久化在磁盘或对象存储中</td>
</tr>
<tr>
<td>插件生态</td>
<td>支持与 Elasticsearch、MySQL、Prometheus、K8s 等集成</td>
</tr>
</tbody>
</table>
<h3><a id="13__25"></a>1.3 主要技术特点</h3>
<table>
<thead>
<tr>
<th>特点</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>高性能</td>
<td>每秒可搜索百万级向量,延迟低于毫秒级</td>
</tr>
<tr>
<td>支持 GPU</td>
<td>可选用 GPU 加速训练和检索</td>
</tr>
<tr>
<td>插件式索引管理</td>
<td>可针对不同应用场景切换索引结构</td>
</tr>
<tr>
<td>自动分片 + 副本</td>
<td>提高并发能力和容错能力</td>
</tr>
<tr>
<td>向量类型支持</td>
<td>支持 float32、binary、float16、sparse 向量(计划中)</td>
</tr>
</tbody>
</table>
<h3><a id="14__35"></a>1.4 典型使用场景</h3>
<table>
<thead>
<tr>
<th>场景</th>
<th>示例</th>
</tr>
</thead>
<tbody>
<tr>
<td>图像检索</td>
<td>上传图片找相似商品、图像搜索</td>
</tr>
<tr>
<td>文本语义搜索</td>
<td>通过用户输入的自然语言搜索相似文本、文档</td>
</tr>
<tr>
<td>推荐系统</td>
<td>利用用户行为嵌入向量实现相似用户或物品推荐</td>
</tr>
<tr>
<td>生物信息学</td>
<td>比对 DNA 或蛋白质序列的向量表示</td>
</tr>
<tr>
<td>知识图谱</td>
<td>实体向量存储和相似度搜索</td>
</tr>
</tbody>
</table>
<h3><a id="15__45"></a>1.5 环境要求</h3>
<p>在安装 Milvus 之前,确保系统满足以下要求:</p>
<ul>
<li><strong>操作系统</strong>:Ubuntu 18.04+/CentOS 7+/MacOS/Docker</li>
<li><strong>CPU</strong>:支持 AVX2 指令集的 x86_64 处理器</li>
<li><strong>RAM</strong>:建议至少 8GB</li>
<li><strong>GPU(可选)</strong>:NVIDIA GPU + CUDA 11.1 以上(仅用于 GPU 版本)</li>
<li><strong>Docker</strong>:建议安装 Docker 20.10+</li>
</ul>
<h2><a id="2__55"></a>2 安装</h2>
<h3><a id="21__Docker__Milvus_57"></a>2.1 使用 Docker 安装 Milvus</h3>
<p>https://milvus.io/docs/zh/install_standalone-docker.md</p>
<pre><div class="hljs"><code class="lang-shell"><span class="hljs-meta"># </span><span class="language-bash">Download the installation script</span>
<span class="hljs-meta">$ </span><span class="language-bash">curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.sh</span>
<span class="hljs-meta">
# </span><span class="language-bash">启动容器</span>
bash standalone_embed.sh start
<span class="hljs-meta">
# </span><span class="language-bash">停止容器</span>
bash standalone_embed.sh stop
<span class="hljs-meta">
# </span><span class="language-bash">删除容器</span>
bash standalone_embed.sh delete
</code></div></pre>
<p>Milvus容器查看</p>
<p><img src="https://static.couragesteak.com/article/4020adea26b42e51e32ca0e37600e939.png" alt="Milvus容器查看" /></p>
<h2><a id="3__80"></a>3 连接工具</h2>
<p>https://github.com/zilliztech/attu</p>
<p><img src="https://static.couragesteak.com/article/81c258152c3322491df4ed9e8d6abfca.png" alt="image.png" /></p>
<h2><a id="3_Milvus_88"></a>3 配置Milvus</h2>
<p>Milvus 主要通过 <code>server_config.yaml</code> 进行配置,该文件位于 <code>/milvus/configs/</code> 目录下(Docker 版本路径可能不同)。</p>
<pre><div class="hljs"><code class="lang-shell">vim /etc/milvus/config.yaml
</code></div></pre>
<pre><div class="hljs"><code class="lang-yaml"><span class="hljs-attr">server_config:</span>
<span class="hljs-attr">address:</span> <span class="hljs-number">0.0</span><span class="hljs-number">.0</span><span class="hljs-number">.0</span>
<span class="hljs-attr">port:</span> <span class="hljs-number">19530</span>
</code></div></pre>
<pre><div class="hljs"><code class="lang-yaml"><span class="hljs-attr">service:</span>
<span class="hljs-attr">name:</span> <span class="hljs-string">"milvus"</span>
<span class="hljs-attr">port:</span> <span class="hljs-number">19530</span>
<span class="hljs-attr">storage:</span>
<span class="hljs-attr">path:</span> <span class="hljs-string">"/path/to/milvus/data"</span>
<span class="hljs-attr">log:</span>
<span class="hljs-attr">level:</span> <span class="hljs-string">"info"</span>
<span class="hljs-attr">max_log_file_size:</span> <span class="hljs-number">1024</span>
<span class="hljs-attr">log_rotate:</span> <span class="hljs-literal">true</span>
<span class="hljs-attr">ingester:</span>
<span class="hljs-attr">compaction_level:</span> <span class="hljs-number">1</span>
<span class="hljs-attr">wal_enable:</span> <span class="hljs-literal">true</span>
<span class="hljs-attr">insert_buffer_size:</span> <span class="hljs-number">16777216</span>
<span class="hljs-attr">flush_interval:</span> <span class="hljs-number">1</span>
<span class="hljs-attr">cpu_cache_capacity:</span> <span class="hljs-number">1073741824</span>
<span class="hljs-attr">insert_channel_capacity:</span> <span class="hljs-number">100</span>
<span class="hljs-attr">search_buffer_size:</span> <span class="hljs-number">268435456</span>
</code></div></pre>
<ol>
<li><strong>内存配置</strong>:根据系统内存大小调整 Milvus 的内存使用限制。</li>
<li><strong>存储路径</strong>:指定 Milvus 数据文件的存储路径。</li>
<li><strong>监听端口</strong>:配置 Milvus 服务监听的端口号。</li>
<li><strong>日志级别</strong>:设置日志记录的详细程度,如 debug、info、warning、error。</li>
<li><strong>资源限制</strong>:根据系统资源配置 CPU 和内存的使用限制。</li>
</ol>
<p>参考文档:</p>
<p>https://milvus.io/docs/zh/prepare-source-data.md</p>
评论区