生成式 AI 影片轉錄與聊天

概覽

本指南介紹了一個關於影片轉錄與分析的專案,使用了與 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 個服務的紀錄。

    在紀錄中,您會看到服務被曝露在 85038504 連接埠上。這兩個服務是互補的。

    yt-whisper 服務執行在 8503 連接埠上。此服務將您想要封存在知識庫中的影片傳送給 Pinecone 資料庫。以下章節將探討此服務。

使用 yt-whisper 服務

yt-whisper 服務是一個 YouTube 影片處理服務,使用 OpenAI Whisper 模型產生影片轉錄,並將其儲存在 Pinecone 資料庫中。以下步驟展示如何使用該服務。

  1. 開啟瀏覽器並造訪 https://:8503 的 yt-whisper 服務。

  2. 當應用程式出現時,在 **Youtube URL** 欄位中輸入 YouTube 影片連結並選擇 **Submit**。以下範例使用 https://#/watch?v=yaQZFhrW0fU

    Submitting 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. 開啟瀏覽器並存取 https://:8504 的服務。

  2. 在 **What do you want to know about your videos?** 文字框中,詢問 Dockerbot 關於已由 yt-whisper 服務處理的影片的問題。以下範例詢問:「什麼是糖霜餅乾 (sugar cookie)?」。該問題的答案存在於先前範例中處理的影片:https://#/watch?v=yaQZFhrW0fU

    Asking a question to the Dockerbot

    在此範例中,Dockerbot 會回答問題並提供帶有時間戳記的影片連結,其中可能包含有關該答案的更多資訊。

    dockerbot 服務會接收問題,使用 text-embedding-3-small 模型將其轉變為嵌入,查詢 Pinecone 資料庫以找到相似的嵌入,然後將該上下文傳遞給 gpt-4-turbo-preview 以產生答案。

  3. 選擇第一個連結以查看它提供的資訊。根據前面的範例,選擇 https://#/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 介紹

嵌入 (Embeddings)

嵌入 (Embeddings) 是文字或其他資料類型的數值表示,它們以機器學習演算法可處理的方式捕捉其含義。在此應用程式中,嵌入用於將影片轉錄轉換為向量格式,該格式可以被查詢並分析其與使用者輸入的相關性,從而促進應用程式中高效的搜尋與回應產生。欲了解更多詳細資訊,請參閱 OpenAI 的 嵌入 (Embeddings) 文件。

Embedding diagram

聊天完成 (Chat completions)

聊天完成 (Chat completion),正如本應用程式透過 OpenAI 的 API 所利用的那樣,指的是基於給定上下文或提示詞產生對話回應。在應用程式中,它透過處理並整合來自影片轉錄與其他輸入的資訊,為使用者查詢提供智慧的、具有上下文意識的答案,從而增強了聊天機器人的互動能力。欲了解更多詳細資訊,請參閱 OpenAI 的 聊天完成 API (Chat Completions API) 文件。

Pinecone

Pinecone 是一個針對相似性搜尋進行了優化的向量資料庫服務,用於建構與部署大規模向量搜尋應用程式。在此應用程式中,Pinecone 用於儲存與檢索影片轉錄的嵌入,使應用程式能夠基於使用者查詢實現高效且相關的搜尋功能。欲了解更多詳細資訊,請參閱 pinecone.io

檢索增強生成 (RAG)

檢索增強生成 (RAG) 是一種將資訊檢索與語言模型相結合的技術,旨在根據檢索到的文件或資料產生回應。在 RAG 中,系統會檢索相關資訊(在本例中,透過影片轉錄的嵌入),然後使用語言模型根據這些檢索到的資料產生回應。欲了解更多詳細資訊,請參閱 OpenAI 的 使用 Pinecone 進行檢索增強生成問答 指南。

下一步

探索如何使用生成式 AI 建立 PDF 機器人應用程式,或在 GenAI Stack 儲存庫中查看更多 GenAI 範例。

© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.