GenAI 视频转录与聊天

概述

本指南介绍了一个使用与 GenAI Stack 相关的一系列技术进行视频转录和分析的项目。

该项目展示了以下技术

致谢

本指南是社区贡献。Docker 感谢 David Cardozo 对本指南的贡献。

前提条件

  • 您拥有一个 OpenAI API Key

    注意

    OpenAI 是第三方托管服务,可能会收取费用

  • 您拥有一个 Pinecone API Key

  • 您已安装最新版本的 Docker Desktop。Docker 定期添加新功能,本指南的某些部分可能仅适用于最新版本的 Docker Desktop。

  • 您有一个 Git 客户端。本节中的示例使用基于命令行的 Git 客户端,但您可以使用任何客户端。

关于此应用

此应用是一个聊天机器人,可以回答有关视频的问题。此外,它还提供视频中的时间戳,帮助您找到用于回答问题的信息来源。

获取并运行应用

  1. 克隆示例应用的仓库。在终端中运行以下命令。

    $ git clone https://github.com/Davidnet/docker-genai.git
    

    项目包含以下目录和文件

    ├── docker-genai/
    │ ├── docker-bot/
    │ ├── yt-whisper/
    │ ├── .env.example
    │ ├── .gitignore
    │ ├── LICENSE
    │ ├── README.md
    │ └── docker-compose.yaml
  2. 指定您的 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
  3. 构建并运行应用。在终端中,将目录更改为您的 docker-genai 目录并运行以下命令。

    $ docker compose up --build
    

    Docker Compose 根据 docker-compose.yaml 文件中定义的服务构建并运行应用。当应用运行时,您将在终端中看到 2 个服务的日志。

    在日志中,您将看到服务暴露在端口 85038504 上。这两个服务相互补充。

    yt-whisper 服务正在端口 8503 上运行。此服务将您想要存档到知识库中的视频数据馈送到 Pinecone 数据库。下一节将介绍此服务。

使用 yt-whisper 服务

yt-whisper 服务是一个 YouTube 视频处理服务,它使用 OpenAI Whisper 模型生成视频转录,并将其存储在 Pinecone 数据库中。以下步骤展示了如何使用此服务。

  1. 打开浏览器并访问 yt-whisper 服务:http://localhost:8503

  2. 应用出现后,在“Youtube URL”字段中指定一个 Youtube 视频 URL 并选择“Submit”。以下示例使用 https://www.youtube.com/watch?v=yaQZFhrW0fU

    Submitting a video in the yt-whisper service

    yt-whisper 服务下载视频音频,使用 Whisper 将其转录为 WebVTT (*.vtt) 格式(可以下载),然后使用 text-embedding-3-small 模型创建嵌入,最后将这些嵌入上传到 Pinecone 数据库。

    处理完视频后,网络应用中会显示一个视频列表,告知您哪些视频已在 Pinecone 中建立索引。它还提供一个下载转录本的按钮。

    A processed video in the yt-whisper service

    现在,您可以在端口 8504 访问 dockerbot 服务,并询问有关视频的问题。

使用 dockerbot 服务

dockerbot 服务是一个问答服务,它利用 Pinecone 数据库和 AI 模型来提供响应。以下步骤展示了如何使用此服务。

注意

使用 dockerbot 服务之前,您必须通过 yt-whisper 服务至少处理一个视频。

  1. 打开浏览器并访问服务:http://localhost:8504

  2. 在“What do you want to know about your videos?”文本框中,向 Dockerbot 询问关于已通过 yt-whisper 服务处理的视频的问题。以下示例询问“什么是糖曲奇?”。该问题的答案存在于上一个示例处理的视频中:https://www.youtube.com/watch?v=yaQZFhrW0fU

    Asking a question to the Dockerbot

    在此示例中,Dockerbot 回答了问题,并提供带有时间戳的视频链接,其中可能包含有关答案的更多信息。

    dockerbot 服务接收问题,使用 text-embedding-3-small 模型将其转换为嵌入,查询 Pinecone 数据库以查找相似嵌入,然后将该上下文传递给 gpt-4-turbo-preview 以生成答案。

  3. 选择第一个链接查看它提供的信息。根据上一个示例,选择 https://www.youtube.com/watch?v=yaQZFhrW0fU&t=553s

    在示例链接中,您可以看到视频的该部分完美地回答了问题:“什么是糖曲奇?”。

探索应用架构

下图显示了应用的高级服务架构,其中包括

  • yt-whisper:一个由 Docker Compose 运行的本地服务,与远程 OpenAI 和 Pinecone 服务交互。
  • dockerbot:一个由 Docker Compose 运行的本地服务,与远程 OpenAI 和 Pinecone 服务交互。
  • OpenAI:一个远程第三方服务。
  • Pinecone:一个远程第三方服务。
Application architecture diagram

探索所使用的技术及其作用

Docker 和 Docker Compose

此应用使用 Docker 在容器中运行,为运行应用提供了一致且隔离的环境。这意味着无论底层系统差异如何,应用都将在其 Docker 容器内按预期运行。要了解有关 Docker 的更多信息,请参阅 入门概览

Docker Compose 是一个用于定义和运行多容器应用的工具。Compose 使通过单个命令 docker compose up 运行此应用变得容易。要了解更多详情,请参阅 Compose 概览

OpenAI API

OpenAI API 提供了一种以其尖端 AI 和机器学习技术而闻名的 LLM 服务。在此应用中,OpenAI 的技术用于从音频生成转录(使用 Whisper 模型)以及为文本数据创建嵌入,还用于生成对用户查询的响应(使用 GPT 和聊天完成)。要了解更多详情,请参阅 openai.com

Whisper

Whisper 是一个由 OpenAI 开发的自动语音识别系统,旨在将口语转录为文本。在此应用中,Whisper 用于将 YouTube 视频中的音频转录为文本,从而实现对视频内容的进一步处理和分析。要了解更多详情,请参阅 Introducing Whisper

嵌入

嵌入是文本或其他数据类型的数值表示,它们以机器学习算法可以处理的方式捕获其含义。在此应用中,嵌入用于将视频转录本转换为矢量格式,该格式可以查询和分析其与用户输入的关联性,从而促进应用中高效的搜索和响应生成。要了解更多详情,请参阅 OpenAI 的 嵌入 文档。

Embedding diagram

聊天完成

聊天完成,在此应用中通过 OpenAI 的 API 使用,指根据给定的上下文或提示生成对话式响应。在该应用中,它通过处理和整合视频转录本及其他输入的信息,提供智能的、上下文感知的用户查询答案,从而增强聊天机器人的交互能力。要了解更多详情,请参阅 OpenAI 的 聊天完成 API 文档。

Pinecone

Pinecone 是一个针对相似性搜索优化的矢量数据库服务,用于构建和部署大规模矢量搜索应用。在此应用中,Pinecone 用于存储和检索视频转录本的嵌入,从而根据用户查询实现应用内高效且相关的搜索功能。要了解更多详情,请参阅 pincone.io

检索增强生成

检索增强生成 (RAG) 是一种将信息检索与语言模型相结合的技术,用于根据检索到的文档或数据生成响应。在 RAG 中,系统检索相关信息(在本例中是通过视频转录本的嵌入),然后使用语言模型根据检索到的数据生成响应。要了解更多详情,请参阅 OpenAI 关于 使用 Pinecone 进行检索增强生成问答 的指南。

下一步

探索如何使用生成式 AI 创建 PDF 机器人应用,或在 GenAI Stack 仓库中查看更多 GenAI 示例。

页面选项