🎬 马赛克
用于综合、分析和智能理解的多模态编排
       ](https://www.docker.com/)      
基于人工智能的视频分析平台,用于多模态内容理解和智能搜索
______________________________________________________________________
📋 目录
______________________________________________________________________
🎯 概述
马赛克 是一个尖端的视频理解平台,允许您使用自然语言与视频内容进行交互。上传视频,询问有关其内容的问题,在视觉和口语元素中搜索,并自动提取相关片段——所有这些都由最先进的人工智能模型提供支持。
MOSAIC的独特之处是什么?
- 🧠 多模式理解:结合视觉、音频和文本分析,实现全面的视频理解
- 🔍 智能搜索:在文字记录、视觉效果和人工智能生成的字幕中使用自然语言查询查找特定时刻
- ✂️ 智能剪辑生成:根据搜索结果自动提取视频片段
- 💬 会话界面:使用理解上下文的AI代理与您的视频聊天
- ⚡ 高性能:使用FastAPI和优化的矢量数据库(FAISS+ChromaDB)构建
- 🐳 生产就绪:使用Docker完全容器化,实现无缝部署
______________________________________________________________________
🎥 演示和截图
应用程序接口
MOSAIC's intuitive chat interface for video analysis
视频示例
观看MOSAIC的行动:
示例1:视觉搜索和帧分析
Your browser does not support the video tag.
_演示视觉相似性搜索和逐帧分析功能_
示例2:转录搜索和剪辑生成
Your browser does not support the video tag.
_显示智能转录搜索和从搜索结果中自动提取剪辑_
示例3:多模态查询处理
Your browser does not support the video tag.
_突出显示跨视频内容的视觉和文本搜索相结合的自然语言查询_
______________________________________________________________________
✨ 特性
核心能力
| 特性 | 描述 |
|---|---|
| 📹 视频处理 | 自动帧提取、音频转录和元数据分析 |
| 🔎 成绩单搜索 | 使用自然语言文本查询查找口语内容 |
| 🖼️ 视觉搜索 | 使用CLIP驱动的视觉语义相似性定位帧 |
| 📝 标题搜索 | 搜索AI生成的帧描述 |
| ✂️ 剪辑提取 | 从带有精确时间戳的搜索结果中生成视频片段 |
| 📊 内容概述 | 获取AI生成的视频内容摘要 |
| 💬 自然语言查询 | 用简明英语询问有关视频内容的问题 |
| 🎯 多视频管理 | 处理和搜索多个视频文件 |
人工智能模型与技术
- 视觉:
llama-4-maverick-17b-128e-instruct(Groq)用于图像理解 - 音频:
whisper-large-v3-turbo(Groq)用于语音转文本 - 嵌入:
clip-ViT-B-32为了视觉相似性,all-MiniLM-L6-v2对于文本 - LLM:
mistral-large-latest用于智能代理推理 - 框架:用于编排的LangChain ReAct代理
🚀 GPU加速
MOSAIC支持 NVIDIA GPU加速 为了显著加快处理速度:
- 速度快10-50倍 视频处理与嵌入生成
- 自动GPU检测 -刚刚设置
DEVICE=auto在.env - CUDA加速 FAISS矢量搜索
- 兼容 配备RTX、GTX、特斯拉GPU(CUDA 11.8+)
📖 安装指南:参见 docs/GPU_SETUP.md 用于详细的安装和优化
快速入门:
# Install PyTorch with CUDA
pip install torch --index-url https://download.pytorch.org/whl/cu118
# Optional: Install FAISS GPU for faster search
pip uninstall faiss-cpu && pip install faiss-gpu
# Set environment variable
DEVICE=auto # auto-detect and use GPU if available______________________________________________________________________
🏗️ 建筑
MOSAIC由三个协同工作的微服务组成:
┌─────────────────────────────────────────────────────────────────────┐
│ MOSAIC Architecture │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌─────────────────┐ │
│ │ mosaic-ui │ │ mosaic-api │ │ mosaic-mcp │ │
│ │ (Next.js) │ ───► │ (FastAPI) │ ───► │ (FastMCP) │ │
│ │ Port 3000 │ │ Port 8000 │ │ Port 9090 │ │
│ └──────────────┘ └──────────────┘ └─────────────────┘ │
│ │
│ • User Interface • REST API • Video Processing │
│ • Video Upload • LangChain Agent • Frame Extraction │
│ • Chat Interface • MCP Client • FAISS + ChromaDB │
│ • Search UI • Task Management • Search Engine │
│ │
└─────────────────────────────────────────────────────────────────────┘数据流
User Query → Frontend → API (Agent) → MCP Server (Tools) → Vector DBs
↓
Search Results
↓
Clip Generation
↓
Response to User______________________________________________________________________
🚀 快速开始
使用Docker让MOSAIC在5分钟内运行:
先决条件
一个命令部署
# Clone the repository
git clone
cd mosaic
# Set up environment variables
cp .env.example .env
# Edit .env with your API keys
# Start all services
docker-compose up -d
# Access the application
# Frontend: http://localhost:3000
# API: http://localhost:8000
# API Docs: http://localhost:8000/docs就是这样! 🎉
______________________________________________________________________
📦 安装
选项1:Docker(推荐)
# Development mode with hot reload
docker-compose -f docker-compose.dev.yml up
# Production mode
docker-compose up -d方案2:地方发展
1.后端(马赛克api)
cd mosaic-api
# Create virtual environment
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Run the API server
uvicorn app.api:app --reload --host 0.0.0.0 --port 80002.MCP服务器(马赛克MCP)
cd mosaic-mcp
# Create virtual environment
python -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Run the MCP server
python src/server.py3.前端(马赛克ui)
cd mosaic-ui
# Install dependencies
npm install
# Run development server
npm run dev
# Production build
npm run build
npm start______________________________________________________________________
💡 用法
1.上传视频
# Via API
curl -X POST "http://localhost:8000/api/videos/upload" \
-F "file=@your-video.mp4"
# Returns: { "video_id": "unique_id", "status": "processing" }或者使用以下web界面 http://localhost:3000
2.处理视频
curl -X POST "http://localhost:8000/api/videos/{video_id}/process"这将:
- 提取帧(每秒1帧)
- 使用Whisper转录音频
- 生成图像标题
- 创建向量嵌入(CLIP+文本)
- FAISS和ChromaDB索引
3.搜索与查询
# Chat with your video
curl -X POST "http://localhost:8000/api/chat" \
-H "Content-Type: application/json" \
-d '{
"message": "What does the speaker say about AI?",
"video_id": "unique_id"
}'
# Visual search
curl -X POST "http://localhost:8000/api/search/visual" \
-H "Content-Type: application/json" \
-d '{
"query": "person wearing red shirt",
"video_id": "unique_id",
"top_k": 5
}'4.生成剪辑
curl -X POST "http://localhost:8000/api/videos/{video_id}/clips" \
-H "Content-Type: application/json" \
-d '{
"start_time": 120.5,
"end_time": 145.0,
"output_name": "highlight.mp4"
}'Web界面示例
- 上传视频:拖放或单击以选择
- 提出问题:“演讲者什么时候提到气候变化?”
- 视觉搜索:“查找所有有狗的帧”
- 获取剪辑:自动提取相关片段
______________________________________________________________________
📚 API 参考
核心终点
视频
POST /api/videos/upload-上传新视频GET /api/videos-列出所有视频GET /api/videos/{video_id}-获取视频详细信息POST /api/videos/{video_id}/process-处理视频以进行搜索DELETE /api/videos/{video_id}-删除视频和相关数据
搜索
POST /api/search/transcript-在成绩单中搜索POST /api/search/visual-视觉相似性搜索POST /api/search/caption-在AI生成的字幕中搜索POST /api/search/combined-多模态搜索
聊天和代理
POST /api/chat-向视频代理发送消息GET /api/chat/history-获取聊天记录POST /api/chat/clear-清除聊天记录
片段
POST /api/videos/{video_id}/clips-生成视频剪辑GET /api/clips-列出生成的剪辑GET /api/clips/{clip_id}-下载剪辑
MCP服务器工具
MCP服务器公开了9个工具 http://localhost:9090/mcp/v1/tools/:
process_video-处理和索引视频search_transcript-搜索转录音频search_visual-基于CLIP的视觉搜索search_caption-搜索图像标题get_transcript-检索完整成绩单get_video_metadata-获取视频信息list_videos-列出所有索引视频generate_clip-提取视频片段summarize_video-生成内容摘要
API完整文档: http://localhost:8000/docs (Swagger用户界面)
______________________________________________________________________
⚙️ 配置
环境变量
创建一个 .env 根目录中的文件:
# API Keys (Required)
MISTRAL_API_KEY=your_mistral_key_here
GROQ_API_KEY=your_groq_key_here
# Server Configuration
MCP_SERVER_URL=http://localhost:9090
API_HOST=0.0.0.0
API_PORT=8000
FRONTEND_PORT=3000
# Paths
STORAGE_PATH=./storage
UPLOAD_PATH=./storage/uploads
FRAMES_PATH=./storage/frames
CLIPS_PATH=./storage/clips
# Processing Settings
FRAME_RATE=1 # frames per second
MAX_FILE_SIZE=1000000000 # 1GB
BATCH_SIZE=32
# Model Settings
EMBEDDING_MODEL=clip-ViT-B-32
TEXT_EMBEDDING_MODEL=all-MiniLM-L6-v2
LLM_MODEL=mistral-large-latest
WHISPER_MODEL=whisper-large-v3-turbo
# Database
FAISS_INDEX_TYPE=Flat # or 'IVF' for large datasets
CHROMA_PERSIST_DIRECTORY=./storage/chroma_db
# Logging
LOG_LEVEL=INFOFFmpeg配置
确保FFmpeg已安装且可访问:
# Ubuntu/Debian
sudo apt-get install ffmpeg
# macOS
brew install ffmpeg
# Windows
# Download from https://ffmpeg.org/download.html______________________________________________________________________
🛠️ 发展
项目结构
mosaic/
├── mosaic-api/ # FastAPI backend
│ ├── app/
│ │ ├── api.py # REST endpoints
│ │ ├── agent.py # LangChain agent
│ │ ├── mcp_client.py # MCP client
│ │ └── schemas.py # Pydantic models
│ └── tests/
│
├── mosaic-mcp/ # MCP server
│ ├── src/
│ │ ├── server.py # FastMCP server
│ │ ├── video_processor.py
│ │ └── search_engine.py
│ └── tests/
│
├── mosaic-ui/ # Next.js frontend
│ ├── app/
│ ├── components/
│ └── lib/
│
└── docs/ # Documentation
├── api-reference.md
├── architecture.md
├── deployment.md
└── user-guide.md运行测试
# Backend tests
cd mosaic-api
pytest tests/ -v
# MCP server tests
cd mosaic-mcp
pytest tests/ -v
# Frontend tests
cd mosaic-ui
npm test代码质量
# Python linting
ruff check .
black .
# TypeScript linting
cd mosaic-ui
npm run lint开发流程
- 创建要素分支:
git checkout -b feature/your-feature - 进行更改 并添加测试
- 运行测试:
pytest或npm test - 格式代码:
black .和npm run lint:fix - 提交:
git commit -m "feat: add your feature" - 推:
git push origin feature/your-feature - 创建拉取请求
______________________________________________________________________
🏗️ 技术
后端堆栈
- 快速API -现代Python web框架
- LangChain -LLM编排和代理框架
- FastMCP -模型上下文协议服务器
- Uvicorn -ASGI服务器
- 派丹蒂克 -数据验证
前端堆栈
- Next.js 15 -React框架
- 反应19 -UI库
- TypeScript -类型安全
- 尾风CSS -造型
- Shadcn/ui -组件库
AI/ML
- 米斯特拉尔AI -大型语言模型
- Groq -快速LLM推理(Whisper,Llama Vision)
- CLIP -视觉语义嵌入
- 句子转换 -文本嵌入
数据和存储
- FAISS -矢量相似性搜索(Facebook AI)
- ChromaDB -用于嵌入的矢量数据库
- SQLite -元数据存储
- 本地文件系统 -媒体存储
开发运维
- 码头工人 -集装箱化
- Docker Compose -多容器编排
- FFmpeg -视频/音频处理
______________________________________________________________________
🤝 贡献
我们欢迎捐款!以下是您可以提供帮助的方式:
贡献方式
- 🐛 报告错误:打开一个包含详细信息的问题
- 💡 建议功能:分享你的想法
- 📖 改进文档:修正拼写错误,添加示例
- 🔧 提交代码:创建pull请求
开发设置
- 克隆该仓库
- 克隆你的叉子:
git clone - 创建分支:
git checkout -b feature/amazing-feature - 进行更改并彻底测试
- 承诺:
git commit -m "feat: add amazing feature" - 推:
git push origin feature/amazing-feature - 打开拉取请求
代码风格
- Python:遵循PEP 8,使用
black用于格式化 - TypeScript:遵循Airbnb风格指南
- 承诺:使用 常规承诺
拉取请求指南
- ✅ 包括新功能的测试
- ✅ 更新文档
- ✅ 确保所有测试通过
- ✅ 添加有意义的提交消息
- ✅ 链接相关问题
______________________________________________________________________
📄 许可证
该项目根据 MIT许可证 -看看 许可证 文件以获取详细信息。
______________________________________________________________________
🙏 致谢
- Groq -用于快速LLM推理
- 米斯特拉尔AI -用于强大的语言模型
- 开放人工智能 -用于CLIP嵌入
- 脸书人工智能 -用于FAISS矢量搜索
- LangChain -用于代理编排
- FastMCP -用于MCP协议的实施
______________________________________________________________________
📞 支持与联系
- 文档: docs/
- 问题:
- 讨论:
______________________________________________________________________
🗺️ 路线图
- \[\]实时视频流支持
- \[\]多语言转录
- \[\]自定义模型微调
- \[\]协作视频注释
- \[\]REST API速率限制
- \[\]基于Web的视频编辑器
- \[\]移动应用程序(React Native)
- \[\]云部署模板(AWS、GCP、Azure)
______________________________________________________________________
由...制作❤️ MOSAIC团队
⭐ 如果你觉得这个项目有用,请在GitHub上给我们加星!
