GenAI 影片轉錄和聊天

概觀

本指南介紹一個使用與 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:8503 存取 yt-whisper 服務。

  2. 應用程式出現後,在**YouTube 網址**欄位中指定 YouTube 影片網址,然後選擇**提交**。以下範例使用 https://www.youtube.com/watch?v=yaQZFhrW0fUSubmitting 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:8504https://www.youtube.com/watch?v=yaQZFhrW0fU 中。

    Asking 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 提供一個以其尖端 AI 和機器學習技術聞名的 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 進行檢索增強生成式問答後續步驟

探索如何使用生成式 AI 創建 PDF 機器人應用程式,或在 GenAI 堆疊

編輯此頁面

要求變更