GenAI 影片轉錄和聊天
概述
本指南介紹了一個使用一系列與 GenAI Stack 相關的技術進行影片轉錄和分析的專案。
該專案展示了以下技術
致謝
本指南是社群貢獻。Docker 感謝 David Cardozo 對本指南的貢獻。
先決條件
您有一個 OpenAI API 金鑰。
注意OpenAI 是第三方託管服務,可能會產生費用。
您有一個 Pinecone API 金鑰。
您已安裝最新版本的 Docker Desktop。Docker 會定期新增新功能,本指南的某些部分可能僅適用於最新版本的 Docker Desktop。
您有一個 Git 客戶端。本節中的示例使用基於命令列的 Git 客戶端,但您可以使用任何客戶端。
關於應用程式
該應用程式是一個聊天機器人,可以回答影片中的問題。此外,它還提供影片中的時間戳,可以幫助您找到用於回答問題的來源。
獲取並執行應用程式
克隆示例應用程式的倉庫。在終端中,執行以下命令。
$ git clone https://github.com/Davidnet/docker-genai.git
該專案包含以下目錄和檔案
├── docker-genai/ │ ├── docker-bot/ │ ├── yt-whisper/ │ ├── .env.example │ ├── .gitignore │ ├── LICENSE │ ├── README.md │ └── docker-compose.yaml
指定您的 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
構建並執行應用程式。在終端中,將目錄更改為您的
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 資料庫中。以下步驟展示瞭如何使用該服務。
開啟瀏覽器並訪問 yt-whisper 服務,地址為 https://:8503。
應用程式出現後,在 Youtube URL 欄位中指定一個 Youtube 影片 URL,然後選擇 Submit。以下示例使用 https://#/watch?v=yaQZFhrW0fU。
yt-whisper 服務會下載影片的音訊,使用 Whisper 將其轉錄為 WebVTT (
*.vtt
) 格式(您可以下載),然後使用 text-embedding-3-small 模型建立嵌入,最後將這些嵌入上傳到 Pinecone 資料庫中。處理影片後,Web 應用程式中會顯示一個影片列表,告知您哪些影片已在 Pinecone 中被索引。它還提供了一個下載轉錄稿的按鈕。
您現在可以訪問埠
8504
上的 dockerbot 服務,並就影片提出問題。
使用 dockerbot 服務
dockerbot 服務是一個問答服務,它利用 Pinecone 資料庫和 AI 模型來提供響應。以下步驟展示瞭如何使用該服務。
注意在使用 dockerbot 服務之前,您必須透過 yt-whisper 服務處理至少一個影片。
開啟瀏覽器並訪問該服務,地址為 https://:8504。
在 What do you want to know about your videos? 文字框中,向 Dockerbot 詢問一個由 yt-whisper 服務處理過的影片的問題。以下示例提出了問題:“什麼是糖霜餅乾?”。該問題的答案存在於前一個示例中處理的影片中,https://#/watch?v=yaQZFhrW0fU。
在此示例中,Dockerbot 回答了問題,並提供了帶有時間戳的影片連結,其中可能包含有關答案的更多資訊。
dockerbot 服務接收問題,使用 text-embedding-3-small 模型將其轉換為嵌入,查詢 Pinecone 資料庫以查詢相似的嵌入,然後將該上下文傳遞給 gpt-4-turbo-preview 以生成答案。
選擇第一個連結以檢視它提供的資訊。根據前面的示例,選擇 https://#/watch?v=yaQZFhrW0fU&t=553s。
在示例連結中,您可以看到影片的這一部分完美地回答了問題:“什麼是糖霜餅乾?”。
探索應用程式架構
下圖顯示了應用程式的高階服務架構,其中包括
- yt-whisper:一個由 Docker Compose 執行的本地服務,與遠端的 OpenAI 和 Pinecone 服務互動。
- dockerbot:一個由 Docker Compose 執行的本地服務,與遠端的 OpenAI 和 Pinecone 服務互動。
- OpenAI:一個遠端第三方服務。
- Pinecone:一個遠端第三方服務。


探索使用的技術及其作用
Docker 和 Docker Compose
該應用程式使用 Docker 在容器中執行應用程式,為其執行提供了一致且隔離的環境。這意味著無論底層系統有何差異,應用程式都將在其 Docker 容器內按預期執行。要了解有關 Docker 的更多資訊,請參閱入門概述。
Docker Compose 是一個用於定義和執行多容器應用程式的工具。Compose 使用一個簡單的命令 docker compose up
就可以輕鬆執行此應用程式。有關更多詳細資訊,請參閱 Compose 概述。
OpenAI API
OpenAI API 提供了一個 LLM 服務,以其尖端的 AI 和機器學習技術而聞名。在此應用程式中,OpenAI 的技術用於從音訊生成轉錄(使用 Whisper 模型)併為文字資料建立嵌入,以及生成對使用者查詢的響應(使用 GPT 和聊天補全)。有關更多詳細資訊,請參閱 openai.com。
Whisper
Whisper 是由 OpenAI 開發的自動語音識別系統,旨在將口語轉錄為文字。在此應用程式中,Whisper 用於將 YouTube 影片的音訊轉錄為文字,從而實現對影片內容的進一步處理和分析。有關更多詳細資訊,請參閱介紹 Whisper。
嵌入
嵌入是文字或其他資料型別的數值表示,它們以機器學習演算法可以處理的方式捕捉其含義。在此應用程式中,嵌入用於將影片轉錄轉換為向量格式,可以查詢和分析與使用者輸入的相關性,從而促進應用程式中高效的搜尋和響應生成。有關更多詳細資訊,請參閱 OpenAI 的嵌入文件。


聊天補全
聊天補全,如本應用程式透過 OpenAI 的 API 所使用的,指的是根據給定的上下文或提示生成對話式響應。在應用程式中,它透過處理和整合來自影片轉錄和其他輸入的資訊,為使用者查詢提供智慧、上下文感知的答案,從而增強了聊天機器人的互動能力。有關更多詳細資訊,請參閱 OpenAI 的聊天補全 API 文件。
Pinecone
Pinecone 是一種為相似性搜尋最佳化的向量資料庫服務,用於構建和部署大規模向量搜尋應用程式。在此應用程式中,Pinecone 用於儲存和檢索影片轉錄的嵌入,從而根據使用者查詢在應用程式內實現高效且相關的搜尋功能。有關更多詳細資訊,請參閱 pincone.io。
檢索增強生成
檢索增強生成 (RAG) 是一種將資訊檢索與語言模型相結合的技術,以根據檢索到的文件或資料生成響應。在 RAG 中,系統檢索相關資訊(在本例中,透過影片轉錄的嵌入),然後使用語言模型根據這些檢索到的資料生成響應。有關更多詳細資訊,請參閱 OpenAI 的使用 Pinecone 進行檢索增強生成式問答的食譜。
後續步驟
探索如何使用生成式 AI 建立一個 PDF 機器人應用程式,或在 GenAI Stack 倉庫中檢視更多 GenAI 示例。