GenAI 视频转录和聊天

概述

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

该项目展示了以下技术

致谢

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

先决条件

  • 您拥有 OpenAI API 密钥

    注意

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

  • 您拥有 Pinecone API 密钥

  • 您已安装最新版本的 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 文件中定义的服务构建并运行应用程序。当应用程序运行时,您将在终端中看到两个服务的日志。

    在日志中,您将看到服务在端口 85038504 上公开。这两个服务彼此互补。

    yt-whisper 服务在端口 8503 上运行。该服务使用您想要存档在知识库中的视频来为 Pinecone 数据库提供数据。下一节将探讨此服务。

使用 yt-whisper 服务

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

  1. 打开浏览器并访问 https://127.0.0.1:8503 上的 yt-whisper 服务。

  2. 应用程序出现后,在 **Youtube URL** 字段中指定一个 YouTube 视频 URL 并选择 **提交**。以下示例使用 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 数据库。

    处理完视频后,web 应用程序中会显示一个视频列表,告知您哪些视频已索引到 Pinecone 中。它还提供了一个按钮供您下载转录。

    A processed video in the yt-whisper service

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

使用 dockerbot 服务

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

注意

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

  1. 打开浏览器并访问 https://127.0.0.1:8504 上的服务。

  2. 在 **你想了解你的视频的什么?** 文本框中,向 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 的 Embeddings 文档。

Embedding diagram

聊天补全

聊天完成,如在此应用程序中通过 OpenAI API 使用,是指根据给定的上下文或提示生成对话响应。在应用程序中,它用于通过处理和集成来自视频转录和其他输入的信息来提供智能、上下文感知的答案以响应用户查询,从而增强聊天机器人的交互能力。有关更多详细信息,请参阅 OpenAI 的 Chat Completions API 文档。

Pinecone

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

检索增强生成

检索增强生成 (RAG) 是一种将信息检索与语言模型相结合的技术,以根据检索到的文档或数据生成响应。在 RAG 中,系统检索相关信息(在本例中,通过来自视频转录的嵌入),然后使用语言模型根据此检索到的数据生成响应。有关更多详细信息,请参阅 OpenAI 的 Retrieval Augmented Generative Question Answering with Pinecone.

下一步

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