项目介绍:YouTube 语义搜索
概述
YouTube 语义搜索项目是一项创新性的技术应用,它利用 OpenAI 的最新模型,为任何 YouTube 播放列表提供语义搜索功能。其中一个示例是对 All-In 播客的搜索功能,这个项目能够精准定位用户感兴趣的剪辑。
项目背景
搜索和发现播客中的内容一直是个难题,因此该项目应运而生。开发者希望通过这个项目,借助先进的 AI 技术,更加精准地搜索和发现 YouTube 频道或者播放列表中的内容。这个项目不仅适用于 All-In 播客的播放列表,而且可以用于任何 YouTube 播放列表的高级搜索。
如何开始
- 将项目克隆到本地。
- 在终端中导航至项目根目录。
- 使用
npm install
命令安装必要的依赖。 - 使用
npx tsx src/bin/resolve-yt-playlist.ts
命令下载目标播放列表的英文转录(例如,All-In 播客的播放列表)。 - 使用
npx tsx src/bin/process-yt-playlist.ts
命令预处理转录,并从 OpenAI 获取嵌入,然后将其插入到 Pinecone 搜索索引中。 - 使用
npx tsx src/bin/query.ts
命令查询 Pinecone 搜索索引。 - (可选)使用
npx tsx src/bin/generate-thumbnails.ts
生成播放列表中每个视频的时间戳缩略图。
项目的前端是一个基于 Next.js 的 Web 应用程序,部署在 Vercel 上,使用 Pinecone 作为主要数据存储。
项目功能示例
该项目提供了一系列搜索示例,帮助用户快速上手。例如,用户可以搜索播客中的特定话题或名字,如 "sweater karen" 或 "best advice for founders" 等等。
工作原理
项目的核心在于:
- OpenAI:采用全新的 text-embedding-ada-002 嵌入模型,在 1536 维的潜在空间中捕获文本的深层信息。这使得项目超越了关键词搜索,能够按高级主题进行搜索。
- Pinecone:托管的向量搜索,能够高效执行 k-NN 搜索。
- Next.js 和 Vercel:用于前端开发和应用程序的托管。
通过 Node.js 和 YouTube API v3 获取目标播放列表的视频,并下载英文转录来构建语义索引。可以通过 Web 应用或示例 CLI 查询这个索引,生成 YouTube 视频的时间戳缩略图以供查看。
待完成事项
- 使用 Whisper 改善转录质量。
- 支持按时间顺序和相关性排序。
项目反馈
如果您有改善此 Web 应用的想法或发现了有趣的搜索查询,可以通过 GitHub 或 Twitter 提交反馈。
贡献与许可
该项目灵感来自于 Riley Tomasek 的 Huberman YouTube 频道搜索项目,本身与 All-In 播客没有直接关联。该项目使用 MIT 许可证开放源代码。