使用 Milvus 构建图片搜索引擎

前戏 在当今数字化时代,图片数据呈爆炸式增长,如何从海量图片中快速准确地找到相似图片成为了一个重要问题。Milvus 作为一个高性能的向量数据库,为解决这一问题提供了强大的支持。本文将详细介绍如何使用 Milvus 构建一个图片搜索引擎,让你能够轻松地在图片海洋中找到“知音”。 Milvus 简介 Milvus 是专为处理海量向量数据而设计的数据库,它构建在 Faiss、HNSW、DiskANN、SCANN 等流行的向量搜索库之上,能够高效地在包含数百万、数十亿甚至数万亿向量的数据集上进行相似性搜索。Milvus 支持数据分片、流式数据摄取、动态 Schema、结合向量和标量数据的搜索等多种高级功能,采用共享存储架构,计算节点具有存储和计算分解及横向扩展能力,非常适合用于构建图片搜索引擎。 图片搜索引擎架构 https://github.com/milvus-io/bootcamp/blob/master/applications/image/reverse_image_search/README.md 上面的例子使用 towhee 通过 ResNet50 提取图像特征,并使用 Milvus 构建了一个可以执行反向图像搜索的系统。 Towhee 由四大模块构成:算子、流水线、数据处理 API 和执行引擎。 算子是基础组件,可为神经网络模型、数据处理方法或 Python 函数。流水线由多个算子组成,形成有向无环图,实现复杂功能如特征提取等。数据处理 API 提供多种数据转换接口,用于构建数据处理管道,处理非结构化数据。执行引擎负责流水线实例化、任务调度、资源管理及性能优化,有轻量级本地引擎和高性能的 Nvidia Triton 引擎。 系统架构如下: 数据源 https://drive.google.com/file/d/1n_370-5Stk4t0uDV1QqvYkcvyV8rbw0O/view?usp=sharing 环境准备 安装 Milvus 你可以选择在本地安装 Milvus Lite,也可以在 Docker 或 Kubernetes 上部署高性能的 Milvus 服务器。可以参考这篇文章。 服务部署 https://github.com/milvus-io/bootcamp/blob/master/applications/image/reverse_image_search/docker-compose.yaml 这个 docker-compose.yaml 文件是一个用于部署Milvus 和相关组件的配置文件。主要包括: etcd minio milvus-standalone mysql webserver webclient 我们可以把它缩减成这样: mysql webserver webclient 详见: https://github.com/zhu733756/cloud-database-tools/blob/master/milvus/img-search/docker/docker-compose.yaml 需要修改这几个参数: environment: MILVUS_HOST: '172.18.0.4' MILVUS_PORT: '30774' MYSQL_HOST: '172.16.238.11' 配置 Milvus 这个 CR 为 NodePort: ...

一月 13, 2025 · 2 分钟 · 394 字 · zhu733756