YT Navigator 是一个 AI 驱动的YouTube频道内容搜索工具,能帮助用户更高效地浏览和搜索 YouTube 频道内容。YT Navigator利用自然语言查询,用户无需手动观看大量视频,就能快速找到所需信息,能与频道内容进行对话,获得基于视频文本的答案,能精确定位视频中的相关片段。YT Navigator适合研究人员、学生、内容创作者和任何需要从 YouTube 频道快速提取信息的人使用。
自然语言搜索:通过自然语言查询搜索频道内的视频。
与频道内容对话:基于视频转录文本,与AI进行对话以获取答案。
精确时间戳:发现相关视频片段,并直接跳转到具体时间点。
1、身份验证:提供安全的登录和独立会话功能。 2、频道管理:扫描最多100个视频,并生成频道摘要。 3、搜索功能:使用语义搜索找到相关视频片段。 4、对话功能:与了解频道内容的AI进行对话。
用户输入YouTube频道URL后,系统会验证并提取频道用户名。系统获取频道详细信息,包括标题、描述和头像,将其存储在数据库中,连接频道后,用户选择要扫描的视频数量(最多100个)。系统通过两条路径并行处理这些视频:
视频元数据:提取并保存到关系型数据库(PostgreSQL)。
视频转录文本:提取转录文本,分割成片段,转换为向量嵌入,并存储在向量数据库(PGVector)中。
处理完成后,频道内容即可用于搜索和对话功能。
用户输入自然语言查询后,系统通过语义搜索(使用向量嵌入)和关键词搜索(使用BM25)处理查询。结果会结合视频元数据,并通过交叉编码器模型重新排序,最终返回最相关的视频及其具体转录片段。用户界面会显示视频缩略图、标题、相关转录片段以及直接跳转到视频中具体时间点的链接。
聊天界面支持用户与了解频道内容的AI进行互动,使用ReAct框架。用户发送消息后,系统通过决策机制确定适当的响应类型。消息可以通过以下三种方式处理:
1、对于一般性查询,直接回复且不调用工具。
2、对于不相关的问题,提供静态回复。
3、对于需要从视频转录中提取特定信息的消息,调用工具辅助回复,查询向量数据库以获取信息,然后撰写回答。
后端:
Django(Python)
PostgreSQL
Structlog 用于日志记录
Pydantic 用于数据验证
AI 与机器学习:
LangGraph 用于对话式 AI
Sentence Transformers 用于语义搜索
PGVector 作为向量数据库
BM25 用于关键词搜索
bge-small-en-v1.5 用于嵌入
qwen-qwq-32b 和 llama-3.1-8b-instant 来自 Groq
数据处理:
Scrapetube 用于抓取视频
youtube-transcript-api 用于获取转录
前端:
Django 模板搭配现代 CSS
响应式设计
不使用 Docker
1、克隆仓库
git clone https://github.com/wassim249/YT-Navigator
2、创建虚拟环境并安装依赖
python -m venv venv
source venv/bin/activate
pip install -e .
3、确保运行着 PostgreSQL 数据库
4、在根目录下根据 .env.example
文件创建 .env
文件
5、创建 Django 迁移并迁移数据库
6、运行开发或生产服务器
make dev # 开发环境
make prod # 生产环境
使用 Docker
1、根据根目录下的 .env.example
文件创建 .env
文件(确保设置 POSTGRES_HOST=db)
2、构建 Docker 镜像
3、运行 Docker 容器
注册与登录
创建账户以开始使用。
连接 YouTube 频道
在主页上输入 YouTube 频道 URL 以连接到该频道,系统将获取频道的信息。
扫描视频
连接频道后,可以选择要扫描的视频数量(更多视频意味着更全面的结果,但处理时间更长)。
搜索信息
使用搜索功能在所有扫描的视频中查找特定信息,系统将返回相关视频片段及其时间戳、匹配内容的转录以及指向视频中确切时间戳的链接。
与频道聊天
通过聊天界面与频道内容进行对话,AI 将根据扫描视频中的信息进行回答。