视频是最丰富的知识载体之一,也是最难搜索的。讲座、会议演讲、产品评测、播客,全都藏在播放按钮后面。
有人把一整个YouTube频道变成了可以查询的向量索引,每个答案都能链接回视频里精确到秒的位置。他拿Andrej Karpathy那期两小时的《Let's build GPT》做演示,提问"self-attention是怎么工作的",返回的三条结果分别指向视频的第4299秒、4490秒和4561秒,点开链接就直接跳到答案开始的那一刻。
整期两小时的讲座被切成了99个片段。一个频道也是同样的处理方式,传入频道URL、设置maxVideosPerPlaylist就行。
第一步:拿到字幕
有两条路。一条是开源的youtube-transcript-api,在自己机器上跑几个视频完全够用,但它有两个坑:云服务器的IP会被YouTube拒绝,笔记本上跑通的代码上了生产可能就挂;频道和播放列表展开成视频ID、选语言、按时间戳切块,这些都得自己写。
另一条是托管方案,作者自己做的Apify Actor,传入视频、播放列表或频道,直接返回带时间戳的重叠片段和元数据,代理和重试都处理好了,没有字幕的视频不收费。每个片段长这样:chunkId、文本、startSeconds、带t参数的url、videoId、标题、频道名。
第二步:把片段向量化
用Chroma,本地运行,自带默认嵌入模型,不需要API key也不用配置。把每个片段的chunkId当作文档ID写进去,重复运行就是幂等的——每周重新索引一个频道,只有新视频会被加进去。
第三步:提问,拿回带时间戳的来源
查询返回文档和元数据,元数据里的url就是那个精确到秒的链接。想要一段写好的答案,就把检索到的片段丢给任意LLM,让它引用每个片段的url,用户点一下就能跳到视频里的对应时刻。
作者还给了几条实操建议:片段大小200到400词对多数嵌入模型都合适,密集讲座用小片段加更多重叠,闲聊播客用大片段;自动生成的字幕没有标点,但嵌入模型不在乎,想优先用人工字幕可以检查isAutoGenerated;语言参数是偏好顺序,availableLanguages能告诉你每个视频有什么;每周定时跑一次频道URL、把maxVideosPerPlaylist设小一点,新上传的内容就会流进同一个索引。
成本方面,托管版本每1000份字幕5美元,没有字幕的视频免费,在Apify上按次付费,免费计划带月度额度。只有几个视频的话,开源方案不花钱。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.