GenAI 视频转录和聊天

概述

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

该项目展示了以下技术:

致谢

本指南是社区贡献。 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文件中定义的服务构建并运行应用程序。当应用程序运行时,您将在终端中看到 2 个服务的日志。

    在日志中,您将看到服务在端口8503和上公开8504。这两项服务是互补的。

    yt-whisper服务正在端口 上运行8503。此服务向 Pinecone 数据库提供您想要存档在知识数据库中的视频。以下部分将探讨此服务。

使用 yt-whisper 服务

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

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

  2. 出现应用程序后,在Youtube URL字段中指定 Youtube 视频 URL,然后选择提交。以下示例使用 https://www.youtube.com/watch?v=yaQZFhrW0fU

    在 yt-whisper 服务中提交视频

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

    处理视频后,网络应用程序中会出现一个视频列表,通知您哪些视频已在 Pinecone 中建立索引。它还提供了一个下载文字记录的按钮。

    yt-whisper 服务中经过处理的视频

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

使用 dockerbot 服务

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

笔记

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

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

  2. 您想了解有关您的视频的哪些信息?文本框中,向 Dockerbot 询问有关 yt-whisper 服务处理的视频的问题。以下示例提出问题“什么是糖饼干?”。该问题的答案存在于上一个示例中处理的视频中, https://www.youtube.com/watch ?v=yaQZFhrW0fU 。

    向 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:远程第三方服务。
应用架构图

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

Docker 和 Docker 组合

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

Docker Compose 是一个用于定义和运行多容器应用程序的工具。 Compose 使您可以使用单个命令轻松运行该应用程序docker compose up。有关更多详细信息,请参阅 Compose 概述

开放人工智能API

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

耳语

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

嵌入

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

嵌入图

聊天完成情况

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

松果

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

检索增强生成

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

下一步

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