生成式 AI 视频转录和聊天

概览

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

该项目展示了以下技术

致谢

本指南是社区贡献。Docker 感谢 David Cardozo先决条件

关于应用程序

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

获取并运行应用程序

  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. 打开浏览器并访问位于 http://localhost:8503https://www.youtube.com/watch?v=yaQZFhrW0fUSubmitting 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. 打开浏览器并访问位于 http://localhost:8504https://www.youtube.com/watch?v=yaQZFhrW0fUAsking a question to the Dockerbot

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

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

  2. 选择第一个链接以查看它提供的信息。根据前面的示例,选择 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 提供了一种以其尖端人工智能和机器学习技术而闻名的 LLM 服务。在此应用程序中,OpenAI 的技术用于从音频(使用 Whisper 模型)生成转录,为文本数据创建嵌入,以及生成对用户查询的响应(使用 GPT 和聊天补全)。有关更多详细信息,请参阅openai.com

Whisper

Whisper 是 OpenAI 开发的自动语音识别系统,旨在将口语转录成文本。在此应用程序中,Whisper 用于将 YouTube 视频中的音频转录成文本,从而能够进一步处理和分析视频内容。有关更多详细信息,请参阅Whisper 介绍

嵌入

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

Embedding diagram

聊天补全

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

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

检索增强生成

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

后续步骤

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