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://: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://: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 示例。