GenAI 视频转录和聊天
概述
本指南介绍了一个使用一系列与 GenAI Stack 相关的技术进行视频转录和分析的项目。
该项目展示了以下技术
致谢
本指南是社区贡献。Docker 感谢 David Cardozo 对本指南的贡献。
先决条件
您有一个 OpenAI API 密钥。
注意OpenAI 是第三方托管服务,可能会产生费用。
您有一个 Pinecone API 密钥。
您已安装最新版本的 Docker Desktop。Docker 会定期添加新功能,本指南的某些部分可能仅适用于最新版本的 Docker Desktop。
您有一个 Git 客户端。本节中的示例使用基于命令行的 Git 客户端,但您可以使用任何客户端。
关于应用程序
该应用程序是一个聊天机器人,可以回答视频中的问题。此外,它还提供视频中的时间戳,可以帮助您找到用于回答问题的来源。
获取并运行应用程序
克隆示例应用程序的仓库。在终端中,运行以下命令。
$ git clone https://github.com/Davidnet/docker-genai.git该项目包含以下目录和文件
├── docker-genai/ │ ├── docker-bot/ │ ├── yt-whisper/ │ ├── .env.example │ ├── .gitignore │ ├── LICENSE │ ├── README.md │ └── docker-compose.yaml指定您的 API 密钥。在
docker-genai目录中,创建一个名为.env的文本文件,并在其中指定您的 API 密钥。以下是.env.example文件的内容,您可以作为示例参考。#---------------------------------------------------------------------------- # OpenAI #---------------------------------------------------------------------------- OPENAI_TOKEN=your-api-key # Replace your-api-key with your personal API key #---------------------------------------------------------------------------- # Pinecone #---------------------------------------------------------------------------- PINECONE_TOKEN=your-api-key # Replace your-api-key with your personal API key构建并运行应用程序。在终端中,将目录更改为您的
docker-genai目录,然后运行以下命令。$ docker compose up --buildDocker Compose 根据
docker-compose.yaml文件中定义的服务来构建和运行应用程序。当应用程序运行时,您将在终端中看到 2 个服务的日志。在日志中,您会看到服务暴露在端口
8503和8504上。这两个服务是相互补充的。yt-whisper服务正在端口8503上运行。此服务将您要存档到知识数据库中的视频提供给 Pinecone 数据库。下一节将探讨此服务。
使用 yt-whisper 服务
yt-whisper 服务是一个 YouTube 视频处理服务,它使用 OpenAI Whisper 模型生成视频的转录,并将其存储在 Pinecone 数据库中。以下步骤展示了如何使用该服务。
打开浏览器并访问 yt-whisper 服务,地址为 https://:8503。
应用程序出现后,在 Youtube URL 字段中指定一个 Youtube 视频 URL,然后选择 Submit。以下示例使用 https://#/watch?v=yaQZFhrW0fU。

yt-whisper 服务会下载视频的音频,使用 Whisper 将其转录为 WebVTT (
*.vtt) 格式(您可以下载),然后使用 text-embedding-3-small 模型创建嵌入,最后将这些嵌入上传到 Pinecone 数据库中。处理视频后,Web 应用程序中会显示一个视频列表,告知您哪些视频已在 Pinecone 中被索引。它还提供了一个下载转录稿的按钮。

您现在可以访问端口
8504上的 dockerbot 服务,并就视频提出问题。
使用 dockerbot 服务
dockerbot 服务是一个问答服务,它利用 Pinecone 数据库和 AI 模型来提供响应。以下步骤展示了如何使用该服务。
注意在使用 dockerbot 服务之前,您必须通过 yt-whisper 服务处理至少一个视频。
打开浏览器并访问该服务,地址为 https://:8504。
在 What do you want to know about your videos? 文本框中,向 Dockerbot 询问一个由 yt-whisper 服务处理过的视频的问题。以下示例提出了问题:“什么是糖霜饼干?”。该问题的答案存在于前一个示例中处理的视频中,https://#/watch?v=yaQZFhrW0fU。

在此示例中,Dockerbot 回答了问题,并提供了带有时间戳的视频链接,其中可能包含有关答案的更多信息。
dockerbot 服务接收问题,使用 text-embedding-3-small 模型将其转换为嵌入,查询 Pinecone 数据库以查找相似的嵌入,然后将该上下文传递给 gpt-4-turbo-preview 以生成答案。
选择第一个链接以查看它提供的信息。根据前面的示例,选择 https://#/watch?v=yaQZFhrW0fU&t=553s。
在示例链接中,您可以看到视频的这一部分完美地回答了问题:“什么是糖霜饼干?”。
探索应用程序架构
下图显示了应用程序的高级服务架构,其中包括
- yt-whisper:一个由 Docker Compose 运行的本地服务,与远程的 OpenAI 和 Pinecone 服务交互。
- dockerbot:一个由 Docker Compose 运行的本地服务,与远程的 OpenAI 和 Pinecone 服务交互。
- OpenAI:一个远程第三方服务。
- Pinecone:一个远程第三方服务。

探索使用的技术及其作用
Docker 和 Docker Compose
该应用程序使用 Docker 在容器中运行应用程序,为其运行提供了一致且隔离的环境。这意味着无论底层系统有何差异,应用程序都将在其 Docker 容器内按预期运行。要了解有关 Docker 的更多信息,请参阅入门概述。
Docker Compose 是一个用于定义和运行多容器应用程序的工具。Compose 使用一个简单的命令 docker compose up 就可以轻松运行此应用程序。有关更多详细信息,请参阅 Compose 概述。
OpenAI API
OpenAI API 提供了一个 LLM 服务,以其尖端的 AI 和机器学习技术而闻名。在此应用程序中,OpenAI 的技术用于从音频生成转录(使用 Whisper 模型)并为文本数据创建嵌入,以及生成对用户查询的响应(使用 GPT 和聊天补全)。有关更多详细信息,请参阅 openai.com。
Whisper
Whisper 是由 OpenAI 开发的自动语音识别系统,旨在将口语转录为文本。在此应用程序中,Whisper 用于将 YouTube 视频的音频转录为文本,从而实现对视频内容的进一步处理和分析。有关更多详细信息,请参阅介绍 Whisper。
嵌入
嵌入是文本或其他数据类型的数值表示,它们以机器学习算法可以处理的方式捕捉其含义。在此应用程序中,嵌入用于将视频转录转换为矢量格式,可以查询和分析与用户输入的相关性,从而促进应用程序中高效的搜索和响应生成。有关更多详细信息,请参阅 OpenAI 的嵌入文档。

聊天补全
聊天补全,如本应用程序通过 OpenAI 的 API 所使用的,指的是根据给定的上下文或提示生成对话式响应。在应用程序中,它通过处理和整合来自视频转录和其他输入的信息,为用户查询提供智能、上下文感知的答案,从而增强了聊天机器人的交互能力。有关更多详细信息,请参阅 OpenAI 的聊天补全 API 文档。
Pinecone
Pinecone 是一种为相似性搜索优化的向量数据库服务,用于构建和部署大规模向量搜索应用程序。在此应用程序中,Pinecone 用于存储和检索视频转录的嵌入,从而根据用户查询在应用程序内实现高效且相关的搜索功能。有关更多详细信息,请参阅 pincone.io。
检索增强生成
检索增强生成 (RAG) 是一种将信息检索与语言模型相结合的技术,以根据检索到的文档或数据生成响应。在 RAG 中,系统检索相关信息(在本例中,通过视频转录的嵌入),然后使用语言模型根据这些检索到的数据生成响应。有关更多详细信息,请参阅 OpenAI 的使用 Pinecone 进行检索增强生成式问答的食谱。
后续步骤
探索如何使用生成式 AI 创建一个 PDF 机器人应用程序,或在 GenAI Stack 仓库中查看更多 GenAI 示例。