# VideoAgent — 视频理解分析(基于 AX650N)
基于 AX650N 芯片平台,构建多模态 VideoAgent,面向视频理解与检索,支持长视频智能分析与自然语言问答。
---
## 核心功能
- **芯片平台部署** — 基于 AX650N 芯片部署全部模型,端到端运行完整流程
- **视频智能索引** — 自动分段、特征提取、多模态信息融合(ASR + VLM)
- **向量检索** — 高效相似度检索与结果融合,支持跨模态查询
- **自然语言问答** — 用自然语言提问,基于视频内容生成回答
---
## 模型配置
基于 AX650N 芯片平台运行前,请下载以下模型并参照相关文档完成部署:
| 模型类型 | 模型名称 | 说明 |
|---------|---------|------|
| **ASR** | [SenseVoiceSmall-axmodel](https://huggingface.co/M5Stack/SenseVoiceSmall-axmodel) | 多语言语音理解模型 |
| **VLM** | [Qwen3-VL-2B-Instruct-GPTQ-Int4](https://huggingface.co/AXERA-TECH/Qwen3-VL-2B-Instruct-GPTQ-Int4) | 多模态视觉语言模型 |
| **LLM** | [Qwen3-1.7B](https://huggingface.co/AXERA-TECH/Qwen3-1.7B) | 大语言模型 |
| **Embedding** | [Qwen3-VL-Embedding-2B-AX650](https://huggingface.co/AXERA-TECH/Qwen3-VL-Embedding-2B-AX650-C128_P1280_CTX1407) | 多模态嵌入模型 |
---
## 快速开始
### 1. 安装依赖
```bash
pip install -r requirements.txt
```
### 2. 配置环境变量
Embedding、VLM、LLM、ASR、Tokenizer 均通过环境变量配置。其中 Embedding、VLM、LLM 兼容 OpenAI API 格式。
```bash
cp .env.example .env
# 编辑 .env 文件,填入实际模型路径和 API 地址
```
`.env` 配置示例:
```ini
# LLM API(OpenAI API 格式)
LLM_MODEL_PATH = "/data/huangjie/.cache/modelscope/hub/models/Qwen/Qwen3-VL-Embedding-2B"
LLM_API_BASE_URL = "http://0.0.0.0:8012/v1/"
LLM_API_KEY = "xxx"
LLM_MODEL_NAME = "AXERA-TECH/Qwen3-1.7B"
LLM_API_PORT = 8012
# ASR API
SHERPA_MODEL_DIR = "/root/huangjie/AXERA-TECH/SenseVoice"
SHERPA_ASR_URL = "http://0.0.0.0:8013"
SHERPA_ASR_API_PORT = 8013
SHERPA_MODEL_FILE = "/root/huangjie/AXERA-TECH/SenseVoice/ax650/model-10-seconds.axmodel"
# Tokenizer API
Tokenizer_MODEL_PATH = "/root/huangjie/project/VideoAgent_api507/VideoAgent/_llm/tokenizer_model/Qwen/Qwen3-1.7B"
Tokenizer_API_BASE_URL = "http://0.0.0.0:8014"
Tokenizer_API_PORT = 8014
```
### 3. 启动模型服务
基于 AX650N 芯片启动各模型服务:
```bash
# Embedding 服务 — 端口 8010
axllm serve /root/huangjie/AXERA-TECH/models--AXERA-TECH--Qwen3-VL-Embedding-2B-AX650-C128_P1280_CTX1407 --port 8010
# VLM 服务 — 端口 8011
axllm serve /root/huangjie/AXERA-TECH/Qwen3-VL-2B-Instruct-GPTQ-Int4 --port 8011
# LLM 服务 — 端口 8012
axllm serve /root/huangjie/AXERA-TECH/models--AXERA-TECH--Qwen3-1.7B --port 8012
# ASR 服务 — 端口 8013
python VideoAgent/_server/sherpa_asr_server.py
# Tokenizer 服务 — 端口 8014
python VideoAgent/_server/tokenizer_server.py
```
### 4. 使用方式
#### Web UI(推荐)
```bash
python webui.py
```
浏览器访问 **http://localhost:7869**
| 索引界面 | 检索界面 |
|---------|---------|
|  |  |
#### Python SDK
```python
from VideoAgent import VideoRAG, QueryParam
# 初始化 RAG 系统
rag = VideoRAG(working_dir="./working_dir")
# 索引视频文件
rag.insert_video(video_path_list=["video1.mp4", "video2.mp4"])
# 查询视频内容
result = rag.query(query="视频中什么时候出现张飞?", param=QueryParam())
print(result)
```
---
## 工作流程
### 视频索引流程

### 查询流程

---
## 项目结构
```
VideoAgent-AX650N/
├── VideoAgent/ # 核心包
│ ├── _llm/ # 模型定义层
│ ├── _server/ # 服务层(FastAPI)
│ ├── _storage/ # 存储层
│ ├── _videoutil/ # 视频处理工具
│ └── vidrag_pipeline.py # 核心管道
├── working_dir/ # 运行时数据目录
├── webui.py # Gradio Web 入口
├── videorag_longervideos.py # 测试脚本
└── README.md # 项目文档
```
---
## 参考项目
- 香港大学数据科学实验室(HKUDS)— [VideoRAG](https://github.com/HKUDS/VideoRAG):超长视频跨模态检索增强生成框架