MaterialSearch
用自然语言搜索本地图片和视频的 AI 工具,无需标签、以图搜图、视频帧搜索
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用自然语言搜索本地图片和视频的 AI 工具,无需标签、以图搜图、视频帧搜索
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你是否曾经翻遍整个硬盘,只为找一张"去年夏天在海边拍的那张照片"?文件名乱七八糟,日期模糊不清,传统关键词搜索根本无能为力。MaterialSearch 正是为解决这个痛点而生的——它用 AI 代替文件名,让你能用自然语言描述来搜索本地图片和视频。
随着手机和相机拍照越来越方便,大多数人的硬盘里都积累了几万甚至几十万张照片。想在其中找一张特定内容?传统方案只能靠文件名、拍摄日期或手动打标签,效率极低。而 MaterialSearch 的思路很简单:既然 AI 能理解图片内容,为什么不让它来当你的私人素材管家?
这个项目由独立开发者 chn-lee-yumi 开发,核心团队位于华中科技大学。项目采用前后端分离架构:前端代码开源在 MaterialSearch 仓库,核心 Python API 封装在独立的 materialsearch-core 仓库中(为防止恶意删除版权信息,API 部分经过代码混淆处理,遵循 GPLv3 协议)。
项目于 2024 年底发布,迅速获得社区关注,目前 GitHub Stars 超过 1800,在同类本地 AI 搜索工具中处于头部位置。
MaterialSearch 提供了完整的本地素材语义搜索能力,每一种都针对真实使用场景设计:
文字搜图是最基础的功能——输入"猫"就能找出所有包含猫的图片,无需标签和分类。背后依赖 Chinese-CLIP 多语言图文模型,能够理解中文语义。
以图搜图则反向行之:上传一张参考图,找出风格相似或内容相关的本地图片。对于设计师整理素材库尤其有用。
文字搜视频是该工具的亮点功能。视频被拆解为一系列帧进行特征提取,输入"宝宝第一次走路"这样的描述,系统会返回所有包含相关画面的视频片段,并标注具体时间点。
以图搜视频将图片作为查询条件,找出包含相似画面的视频片段。比如看到一张电影截图,想在本地片库里找到原片,这个功能就能派上用场。
图文相似度计算是一个辅助功能,给出两张图片的相似度评分,虽然用途相对有限,但可用于基础的数据筛选场景。

图1:MaterialSearch Web 界面,中文支持友好,搜索结果直接预览。
从代码结构来看,前端仓库(MaterialSearch)采用 Vue.js 3 作为主要框架,通过 Flask 提供 Web 服务,整体部署依赖 Docker Compose。前端代码完全开源,但核心搜索逻辑封装在独立的 Python 包 materialsearch-core 中,后者通过 pip 分发,方便开发者集成到自己的应用中。
底层搜索能力依赖 Chinese-CLIP(OFA-Sys/chinese-clip-vit-base-patch16),这是阿里达摩院开源的多语言图文预训练模型,支持中文语义理解。项目还集成了 FAISS 向量检索库来处理大规模特征向量的相似度搜索,确保在数万张图片的本地库中也能保持毫秒级检索速度。
视频处理部分使用了 FFmpeg 进行帧提取,将视频切分为离散帧后再进行特征向量计算。由于视频帧数量庞大,搜索速度会明显慢于纯图片搜索——实测在 Intel J3455 CPU 上,图片匹配速度约为每秒 31000 次,而视频帧匹配约为每秒 25000 次。
MaterialSearch 提供了两条清晰的部署路径,适合不同技术背景的用户。
**Docker 部署(推荐开发者)**只需四步:下载 docker-compose.yml、配置环境变量(ASSETS_PATH 指定素材目录)、执行 docker-compose up -d 启动。官方提供两个镜像源——DockerHub(yumilee/materialsearch)和阿里云(国内速度更快),均包含基础模型,开箱即用。GPU 用户需要取消注释 compose 文件中的 NVIDIA device 配置,并设置 DEVICE=cuda 环境变量。
**Windows 整合包(适合普通用户)**提供了完整的绿色版,无需安装任何依赖。下载 7z 压缩包后解压运行,自动检测显卡并选择 GPU/CPU 加速。作者还贴心地提供了百度网盘和夸克网盘的国内镜像下载链接,对国内用户非常友好。详细视频教程在 B站 有配套讲解。
有一点值得注意:Docker 部署中默认设置了 TRANSFORMERS_OFFLINE=1,不会连接 HuggingFace 检查模型版本。如果需要更换默认模型,需要手动设置环境变量覆盖。
该工具对硬件的要求相对友好。CPU 模式下,最低 2GB 内存即可运行(推荐 4GB+),amd64 架构的 x86 处理器均支持。如果启用 GPU 加速,需要 NVIDIA 显卡 + CUDA 环境,显存 4GB 以上效果最佳。磁盘空间主要被模型文件占用(~3GB),加上素材库本身的大小。
在 CPU 模式下,J3455 这颗低功耗处理器(Jasper Lake 架构,4 核 1.5GHz)实测可达每秒 31000 次图片匹配。这个速度意味着,即便本地有 10 万张图片,首次全量扫描可能需要数小时,但后续增量更新会快得多。
MaterialSearch 也有它需要注意的地方。首先,视频搜索不适合大批量结果:官方建议视频搜索结果不超过 12 个,否则大体积视频会导致浏览器卡顿。其次,部分冷门编码的视频(如 svq3 编码)无法在网页直接播放,图片格式如 TIFF 大图也可能无法在浏览器内显示。代码混淆虽然不影响 GPLv3 合规性,但第三方开发者无法深入修改 API 核心逻辑,限制了深度定制的空间。
此外,项目目前仅支持 amd64 架构,不支持 ARM(树莓派等设备无法直接运行)。网络存储(SMB/NFS)挂载虽技术上可行,但作者明确不推荐,扫描速度会显著下降。
MaterialSearch 代表了本地 AI 应用的一个重要方向:用开源工具保护隐私,不用上传照片到云端,在本地完成语义理解。随着 CLIP 系列模型的能力提升,本地图文语义搜索的精度和速度都在持续改善,未来有望成为每个人的数字资产管理(Digital Asset Management)标配工具。
对于普通用户,Windows 整合包是最低门槛的入门方式。对于开发者,Docker + materialsearch-core 的组合提供了灵活集成的能力,可以将搜索能力嵌入自己的图片管理或内容审核工作流中。