构建一个利用大型语言模型 (LLM) 和语义搜索的 YouTube 转录和摘要服务。
使用案例: Gen AI
行业: 媒体
产品: MongoDB Atlas,MongoDB Atlas Vector Search
合作伙伴: LangChain
解决方案概述
在当今追求即时满足的世界中,快速提炼大量信息至关重要。面对 YouTube 等平台上提供的海量参考内容,快速查找相关视频、进行转录以及最重要的是进行汇总,这些能力可以提高知识收集的速度。在本文中,您将学习一种生成式 AI 驱动的解决方案,该解决方案能够完成上述所有任务。
YouTube 作为免费且开放的领先视频平台,其内容涉及特定服务、产品或应用程序,范围涵盖从公司专有视频到网红制作的讲解和评测视频。无论如何,公司都可以通过生成式 AI 驱动的视频摘要应用,帮助其内部和外部受众更快找到相关内容并解读关键要点。
通过此解决方案,您将构建一个 GenAI 服务,将 LLM 和向量嵌入与 Atlas Vector Search 配对,以实现复杂的视频到文本生成以及在语义相似的视频中进行搜索。
其他适用行业和使用案例
软件开发和 IT:Stack Overflow 的开发者报告指出,60% 的开发者利用在线视频进行学习。因此,开发者、架构师和其他 IT 专业人员可以通过 GenAI 视频摘要解决方案来提高生产力并更快地学习新技术。
零售:随着全球越来越多的人通过移动互联设备开展生活与商业活动,电信已成为边缘技术和物联网的核心。
任何行业中开展 B2B 销售的公司:已证实医疗保健行业是受物联网影响最大的行业之一。可穿戴设备及互联设备对于医疗服务至关重要,不仅在医疗机构内部,也日益拓展至患者家庭及个人设备等其他场景。
参考架构
数据源:YouTube 链接,进行处理后可获得视频元数据和转录。
利用 OCR 和 AI 实时分析代码
为此,该应用程序集成了光学字符识别 (OCR) 与人工智能 (AI) 技术,可直接对视频帧进行实时代码分析。这一先进功能超越了传统元数据和转录文本的局限,可提供针对视频中所显示代码的切实可行的见解。无论代码来自教程、录制的会议内容还是任何形式的技术演示,该层级都将提供基于文本的可搜索版本以及 AI 驱动的解释,使您的视频资源比以往任何时候都更加全面和富有洞察力。
处理层:Python 脚本用于获取并汇总转录内容。
编排层:在任何软件系统中,通常都需要在各种服务、模块或组件之间进行协调,以完成更复杂的任务。编排层正是为此而设计,作为中间层,它负责处理管理多个操作所需的逻辑,这些操作共同构成一个更大的应用流程。这在微服务架构中特别有用,但在单体架构或模块化架构中也有具有一定价值。在我们的智能视频处理系统中,编排层起着至关重要的角色。在这里,我们构思了一个 VideoServiceFacade 类,该类充当中央协调器,在 VideoService、SearchService 和 MongoDbRepository 等不同服务之间进行调度。
输出:包含视频元数据、完整文本以及 AI 生成摘要的 JSON 文件。
没有 MongoDB
图 1. 非基于 MongoDB 的参考架构
借助 MongoDB
图 2. 基于 MongoDB 的参考架构
数据模型方法
{ "videoURL": "https://youtu.be/exampleID", "metadata":{ "Title": "How to use GO with MongoDB", "Author": "MongoDB", "PublishDate": "2023-01-24", "ViewCount": 1449, "Length": "1533s", "Thumbnail": "https://exmpl.com/thumb.jpg" }, "transcript": "Full transcript…", "summary": "Tutorial on using Go with MongoDB.", "code_analysis": [ "Main function in Go initializes the MongoDB client.", "Imports AWS Lambda package for serverless architecture." ] }
从每个 YouTube 视频中提取的数据包括以下内容:
视频 URL:指向 YouTube 视频的直接链接。
元数据:视频详细信息,如标题、上传者、日期等。
转录:视频中所述内容的文本表示。
摘要:使用 AI 提炼的简洁版转录内容。
代码分析列表:从视频中提取并通过 AI 进行分析的编程语言代码列表。
数据最终以 JSON 格式存储,以便在各种应用场景中灵活使用。
构建该解决方案
此解决方案的代码在此 GitHub 存储库中提供。
设置环境:首先,确保已安装所有必需的库。这包括 LangChain、Json、pymongo 和任何其他特定于领域或服务的库。
配置:使用 ApplicationConfiguration 加载服务提供商的配置和 MongoDB 连接详细信息。
加载 YouTube 视频:对于 MONGODB_YOUTUBE_VIDEO_LINKS 中的每个视频链接,YoutubeLoader 会获取元数据和转录。
总结转录内容:LLM 可实现海量视频转录内容的智能摘要。总结过程包括设置对话提示,帮助模型生成上下文丰富的摘要。
错误处理:如果在摘要生成过程中出现错误,该错误将被捕获并存储在该特定视频的摘要字段中。
本地存储数据:编译后的数据(包括视频摘要)将序列化为 JSON 格式,并保存为独立文件,命名为 video_transcript_<index>.json。
在 MongoDB Atlas 中使用向量搜索存储数据:
将汇总的转录内容转换为嵌入向量以进行向量搜索。您可以使用 Voyage AI 来构建您的嵌入模型。
将这些嵌入向量存储在 MongoDB Atlas 中。使用 MongoDB Atlas Vector Search,您可以索引这些嵌入向量,从而可通过高级近似最近邻 (ANN) 算法轻松搜索汇总的内容。
您需要创建一个向量搜索索引,让您的嵌入向量可以搜索得到。您可以从几个参数中进行选择,例如维数(Atlas Vector Search 中的最大值为 4096)、相似性搜索类型和最近邻数量 (K)。下方的屏幕截图展示了此示例的设置。您也可以参考我们的文档。
借助向量搜索的强大功能,用户现在可以通过查询短语或句子快速检索相关视频摘要,从而让内容更易于发现。
您可以通过访问 MongoDB Atlas Ve访问权限or Search 文档找到更多信息。访问 Atlas Vector Search 快速入门指南,几分钟内即可创建您的第一个索引。

图3.在 MongoDB Atlas 中使用 Vector Search 存储数据
在应用程序的中心创建编排层:其职责是协调服务、管理复杂的工作流,并提供无缝的用户体验。该层级中的 VideoServiceFacade 类充当协调器,可有效整合各松散部分。
VideoServiceFacade:作为 VideoService、SearchService 和 MongoDbRepository 的协调者。
VideoProcessResult:对处理后视频结果的封装,包括元数据、可能的操作和可选的搜索查询词。
当系统被触发时(通常从主函数或 API 终结点触发),将由 VideoServiceFacade 进行接管。它会根据用户提示和 AI 生成的建议触发各种流程。这些流程的范围可能包括从转录生成和汇总到在存储的视频摘要中进行基于文本的搜索。
以下是如何将所有内容整合在一起:
使用的技术和产品
MongoDB 开发者数据平台
合作伙伴技术
主要考虑因素(Key Considerations)
在 Atlas Vector Search 中创建和存储向量索引。
生成 LLM 的嵌入和输出,并将其存储在 MongoDB Atlas 中。
利用流行的 AI 框架 LangChain 来促进构建生成式 AI 驱动的应用程序。
执行语义搜索以检索可能未实现精确关键字匹配的相关数据。
在应用程序中编排各种 AI 驱动的服务。
作者
Fabio Falavinha, MongoDB
David Macias, MongoDB