Qmedia
支持文本/图片/视频多模态RAG的本地AI内容搜索引擎
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
支持文本/图片/视频多模态RAG的本地AI内容搜索引擎
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
作为一名视频博主,你有没有过这样的经历——辛辛苦苦剪了一条视频,想配一段合适的背景音乐或素材,翻遍网盘、硬盘、相册,找了整整两个小时?或者你想找一张和某条爆款笔记风格相似的参考图,在 Pinterest、Unsplash、小红书之间来回横跳,结果收藏夹塞了几十个链接,最后还是用的第一张?
这不是你的问题,是工具的局限。我们熟知的搜索引擎——Google、百度、小红书——本质上都是文本驱动的,它们擅长找"文字",但不擅长理解"画面"和"视频"的深层语义。一张图片的色彩风格、一个15秒短视频的叙事节奏,这些多模态信息,传统搜索根本吃不透。
QMedia 正是为了解决这个痛点而生。它是一个开源的多模态 AI 内容搜索引擎,专为内容创作者设计,能够同时理解文字、图片和短视频的深层语义,让创作者真正"搜得到、搜得准"。

QMedia 的作者(Twitter @Lafe8088、@LinkLin)在 Discord 社区透露,这个项目的起源是个人需求——他们都是内容创作者,在制作视频和图文内容时积累了大量的素材库,但始终找不到一款趁手的工具来管理这些多媒体资产。市场上的工具要么太贵(Adobe 的创意资产管理系统企业版年费动辄数万),要么太通用(普通网盘只能按文件名搜索),要么无法本地部署(云端工具意味着素材必须上云,数据隐私无从保障)。
于是,两个独立开发者决定自己动手,用开源技术栈从头构建一个满足以下条件的系统:支持本地部署、数据完全私有、支持图片/视频/文字的多模态理解。项目于 2024 年初在 GitHub 开源,迅速吸引了内容创作者群体和 AI 应用开发者的关注。
QMedia 采用典型的前后端分离 + 微服务架构,系统由三个核心服务组成,通过 Docker Compose 一键部署:
第一层:模型服务(mm_server)——负责多媒体内容理解。技术栈基于 PyTorch 2.2 + CUDA 12.1,集成了 CLIP 图像编码、Whisper 语音转录、大语言模型(默认使用 Ollama 本地部署的 llama3:8b)。输入一张图片或一段视频,它能输出的内容包括:图片风格标签、画面构图描述、视频字幕文本、视频内容摘要。这个服务是整个系统的"感知层",决定了系统能理解多少信息。
第二层:RAG 检索服务(mmrag_server)——负责语义索引和问答。基于 FastAPI + LlamaIndex 构建,利用 embedding 模型将图片、视频片段、向量化描述统一映射到高维向量空间。用户输入一个查询(比如"找一些赛博朋克风格的城市夜景视频素材"),系统通过向量相似度匹配,找到最相关的多媒体片段,再由 LLM 生成自然语言回答。
第三层:Web 前端(qmedia_web)——负责用户交互界面。基于 Next.js 14 + TypeScript + TailwindCSS + Shadcn/UI 构建,借鉴了小红书 Web 版的卡片式布局。用户搜索结果以"内容卡片"形式呈现,每张卡片包含:缩略图、内容来源、LLM 生成的内容标签和描述。Web 前端通过 HTTP API 与后端通信,支持 Google 内容搜索的接入。

QMedia 提供了完整的 docker-compose 配置,三个服务可以一键启动。但需要注意的是,这是一个 GPU 密集型应用,每个 Docker 服务都基于 pytorch/pytorch:2.2.2-cuda12.1-cudnn8-devel 镜像构建,默认假设你有 NVIDIA GPU 和 CUDA 环境。官方推荐的最低配置是 16GB VRAM + 32GB 系统内存 + 50GB 磁盘空间。如果只用 CPU 推理,速度会非常慢,基本不可用。
对于没有 GPU 的用户,项目也提供了"纯本地模型"的替代方案:使用 Ollama 在本地运行 LLM,省去云端 API 费用,但推理速度仍然取决于 CPU 性能。文档中明确标注了三个服务各自的端口(50110、50111、50112),没有 Nginx 反向代理,初次部署需要手动管理多个端口。
根据作者在 Twitter 和 Discord 上分享的 Demo,QMedia 最惊艳的能力是对视频帧级别的语义理解。例如,上传一段 30 秒的 vlog 视频,系统不仅能提取出字幕文本,还能识别视频中出现的场景(咖啡馆、城市街道)、人物状态(站立、行走)、画面色调(暖色调、冷色调),并将这些信息全部索引。当用户搜索"找一段室内自然光下有人喝咖啡的视频",系统能准确定位到相关片段,而不是返回一堆无关视频。
这一能力背后的技术原理是:视频 → 帧提取 → CLIP 图像编码 → 向量化 → 存入向量数据库;视频音频 → Whisper 转录 → 文本 embedding → 与图像向量融合检索。这个 pipeline 设计并不复杂,但工程实现上有不少细节需要处理(比如帧采样策略、向量化维度选择、多模态 embedding 的融合方式),QMedia 的代码值得想入门多模态 RAG 的开发者参考。
必须指出的是,QMedia 目前仍处于活跃开发阶段(README 标注 v0.1.0),存在一些明显的局限:
1. 依赖项不稳定:requirements.txt 中有 git+https://github.com/openai/CLIP.git 这种直接从 GitHub 安装未发布版本的做法,容易导致版本冲突和构建失败。
2. 缺乏测试覆盖:代码仓库中未发现测试文件,对于一个还在快速迭代的项目来说,这是较大的风险点。
3. 多语言支持不完整:虽然 README 提供了中英文版本,但 Web UI 本身目前只有英文界面,对中文用户不够友好。
4. 向量数据库缺失:LlamaIndex 默认使用内存向量存储,没有集成专业的向量数据库(如 Milvus、Qdrant),大规模素材库的性能会受限。
QMedia 的出现,折射出一个真实的细分市场需求:个人创作者的 AI 素材管理工具。目前市场上,Adobe Firefly(需要订阅 Adobe CC)、Runway(云端收费)、Pika(专注视频生成)这些产品虽然强大,但都是云端服务,数据必须上云。QMedia 作为完全开源本地化方案,首次将多模态 RAG 能力以零门槛的方式提供给独立创作者。
从技术趋势看,2024 年是"多模态 RAG"概念爆发的年份——OpenAI GPT-4V、Google Gemini、Anthropic Claude 3 都具备了原生多模态理解能力。将这些能力本地化、平民化,是开源社区的重要方向。QMedia 代表了一种探索路径:用开源模型(CLIP、Whisper、Llama)+ 开源框架(LlamaIndex、FastAPI)+ 开源前端(Next.js),构建一个完全私有化的多模态内容理解系统。
