当前位置: 首页 > news >正文

为什么 QMedia 的多模态 RAG 问答更聪明?图文短视频内容检索与智能问答使用详解

为什么 QMedia 的多模态 RAG 问答更聪明?图文短视频内容检索与智能问答使用详解

【免费下载链接】QmediaAn open-source AI content search engine designed specifically for content creators. Supports extraction of text, images, and short videos. Allows full local deployment (web app, RAG server, LLM server). Supports multi-modal RAG content Q&A.项目地址: https://gitcode.com/gh_mirrors/qm/Qmedia

QMedia是一个专为内容创作者打造的开源 AI 内容搜索引擎,支持图文、短视频内容的信息提取与多模态 RAG 问答。它通过 OCR 识别图片文字、Whisper 转写视频语音、大模型生成视频摘要,把散落在图片与短视频里的信息变成可检索、可问答的向量知识库,还能全本地部署,让私有内容问答更智能、更安全。

为什么 QMedia 的多模态 RAG 问答更聪明?

传统 RAG 问答只能检索纯文本,而内容创作者的素材大多是图片、图文笔记和短视频——信息藏在图片文字里、藏在视频口播中,普通搜索引擎根本"看不见"。

QMedia 的做法是先把多模态内容"翻译"成结构化文本,再建立向量索引,让大模型基于这些上下文作答。它更聪明的三个关键点:

聪明点说明
🖼️ 图文双通道检索文本向量(BGE)+ 图像向量(CLIP)并行召回,搜内容也能搜画面
🎬 视频内容深度解析Faster Whisper 转写口播文案,再用 LLM 生成视频摘要
📇 答案可溯源问答结果以"内容卡片"展示来源,拆解每条图文/短视频的信息

下面按"内容解析 → 向量检索 → 本地上手"的顺序拆解它的实现逻辑。

内容理解先行:图文短视频的 4 条解析通道

QMedia 的核心思路是:问答质量取决于内容解析质量。启动服务时,mmrag_server会读取assets/medias中的图片/视频,调用mm_server的模型服务逐条解析,核心代码见 nodes.py。

它内置了 4 条 Reader 解析管道:

  • 图片基础信息ImageReader):读取图片元数据;
  • 图片 OCR 文字识别ImageOcrReader):调用本地 OCR 模型,把图片里的文字全部"读"出来,见 image_ocr.py;
  • 短视频转写与摘要AudioTranscriptionReader):先用 moviepy 从视频中提取音频,调mm_server/api/audio_transcription接口转写文案,再让 LLM 生成视频摘要,见 video.py;
  • 笔记文本信息NoteInfoReader):提取图文笔记的标题、正文等文本。

解析完成后,文档按句子切分(SentenceSplitter),构建为多模态向量索引MultiModalVectorStoreIndex,并持久化到本地db,下次启动无需重复解析。

💡 这套解析管道全部走本地模型 API,视频转写、OCR、编码互不干扰,模型服务单独部署在 mm_server/api/ 下,方便按需替换。

双通道向量检索:文本和图片一起找

检索环节是"聪明"的另一半。mm_retriver.py 中的 RAG 管道同时配置了两个召回参数:

  • similarity_top_k:文本向量召回条数(BGE 文本编码);
  • image_similarity_top_k:图像向量召回条数(CLIP 图像编码,将图片编码到与文本同空间)。

也就是说,你用"美食教程"这样的文字提问,系统既会匹配文本语义,也会通过 CLIP 匹配"看起来像美食"的图片内容,双路召回后按笔记 ID 去重,最终交给 LLM(如 llava-llama3 视觉模型)综合作答。

相关的模型能力都以 REST API 形式暴露,在mm_server的 API 文档页可以看到:

快速上手:3 步本地启动多模态 RAG 问答

QMedia 由三个独立服务组成,可按需组合部署:

服务职责端口
mm_server多模态模型服务(OCR、CLIP 编码、Whisper 转写、LLM)50110
mmrag_server内容卡片展示 + RAG 检索问答8001
qmedia_web网页前端(Next.js + TailwindCSS)

第一步:启动模型服务

cd mm_server source activate qllm python main.py

第二步:启动 RAG 问答服务

cd mmrag_server source activate qmedia python main.py

第三步:启动网页

cd qmedia_web pnpm dev

启动后mmrag_server会自动读取assets/mediasassets/mm_pseudo_data.json的示例数据,调用mm_server提取信息并写入db。打开网页输入问题(如 "How to Vlog"),即可获得答案和对应的内容卡片来源。

多模态问答相关的三个核心接口:/embedding-mm(构建检索管道)、/mm-rag-search(双通道召回内容卡片)、/mm-rag-query(LLM 合成答案),实现见 mm_rag_search.py:

换成自己的内容:3 步搭建私有内容搜索引擎

把示例数据换成你自己的图文/短视频,就能得到一个私有化多模态 RAG 问答库

  1. 把自有图片/视频放入assets/medias/
  2. 把对应的内容卡片数据写入assets/mm_pseudo_data.json(字段参考 json_data.py);
  3. 删除历史db文件后重启服务,模型会自动重新提取信息并入库。

配置项都在 mmrag_server/config.py.local 中,重点几个:

  • use_video_service:是否启用视频转写(默认关闭,开启后短视频也能被问答);
  • model_name/mm_model_name:LLM 与视觉模型名称;
  • clip_model_name/embedding_model_name:图像、文本编码模型。

常见问题速答

问:不想要网页,只想用 API 做问答?可以只部署mm_server+mmrag_server,直接调用/mm-rag-search/mm-rag-query接口,实现纯 Python 环境的多模态 RAG 检索问答。

问:视频解析为什么默认关闭?视频转写需要 Whisper 模型,CPU 上也能跑但耗时较长。配置use_video_service=True并确认mm_server已部署后即可开启。

问:模型资源不够怎么办?mm_server支持模型生命周期管理(keep_alive配置),空闲自动释放显存;8B 本地小模型即可体验完整流程,服务器充足时可换 70B 提升回答质量,详见 mm_server/README.zh-CN.md。

小结:QMedia 的"聪明"来自三层设计——多通道内容解析让图片文字和视频口播全部变成可检索文本,图文双向量召回让检索既懂语义又懂画面,内容卡片溯源让每个答案都有据可查。全链路可本地部署,是内容创作者搭建私有 AI 内容搜索引擎的完整方案。

【免费下载链接】QmediaAn open-source AI content search engine designed specifically for content creators. Supports extraction of text, images, and short videos. Allows full local deployment (web app, RAG server, LLM server). Supports multi-modal RAG content Q&A.项目地址: https://gitcode.com/gh_mirrors/qm/Qmedia

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4158488.html

相关文章:

  • 一行use解决:Hammox.Protect宏如何让Elixir测试模块自带契约检查
  • heroku_san安装教程:Rails 3+、Rails 2与Sinatra三种框架如何快速接入Heroku部署
  • PyMacroRecord:免费跨平台宏录制工具,重复操作一键回放
  • 深入 Duster 架构:基于 Laravel Zero 与适配器模式统一 4 大 Lint 工具的设计之道
  • CoopCycle餐厅配置实战:5步搞定菜单、商品与在线点餐的完整教程
  • HDR环境光照教程:用intensity_env和rotate_env在rayshader_portraits中打造电影级光影
  • 基于FMMosaicLayout打造互动图片墙:Cell长按缩放动画与复用机制实战
  • tlock进阶技巧:Duration、轮次编号与Armor,6个让时间锁加密更灵活的用法
  • 题解:洛谷 P3076 [USACO13FEB] Taxi G
  • NCM 转 MP3 完整攻略:用 ncmdump 免费转换,拖拽 4 步上手
  • FiD显存优化秘籍:Checkpointing与answer_maxlength如何驯服100段长文本
  • 毕业论文“难产”自救指南:AI写论文哪个软件最好?我站宏智树AI
  • UE5-MCP:如何用AI把3个月的UE5关卡开发压缩到3天
  • 星际争霸II Bot API库python-sc2入门:为什么它是Python打造SC2 AI机器人的终极选择
  • 为什么Remote PowerShell正在被淘汰:理解Exchange V3模块的REST API连接迁移(office-docs-powershell)
  • 053、VLA模型的训练数据与配比:互联网数据与机器人数据的融合
  • 3步备份QQ空间全部历史说说:GetQzonehistory 完整上手指南
  • QuickLook 插件选型指南:macOS 空格键预览只装这几组才真正用得上
  • PCSX2 Gamefixes与PNACH作弊码完全指南:解决闪退卡顿并解锁60帧
  • Engauge Digitizer 入门指南:从图表图像提取数据点的安装配置全流程
  • CSWin Transformer预训练权重怎么选:Tiny/Small/Base/Large六种模型参数与FLOPs全对比(附选型建议)
  • 如何快速给 Unity WebGL 加上原生输入框:WebGLInput 完整上手指南
  • Oracle APEX Blueprints实战:AI驱动的规范开发,从需求文档一键生成应用
  • EntityFrameworkCore.Triggered性能开销到底有多大?完整基准测试数据解读
  • 132、洞察驱动的实战标题——时域降噪的“鬼影博弈“——运动检测阈值高一点还是低一点?从运动矢量置信度到混合权重的工程调优
  • 使用vminpoly前必知的5个注意事项:常见坑与浏览器兼容清单
  • 扩展 D-Zone:接入 Slack 等新聊天平台的开发者进阶指南
  • 潍坊全家电维修服务指南-欧米到家常见故障、服务范围与预约报修
  • SillyTavern-Launcher:一条命令装好 AI 应用全家桶|从零跑通完整指南
  • 安卓7.0 开机动画和launcher之间的黑屏...如何解决?