
開放式語義搜索任何YouTube播放列表 - 包含Allin-In播客
我喜歡全面的播客。但是,使用播客的搜索和發現確實具有挑戰性。
我構建了這個項目來解決這個問題……而且我還想玩酷的AI東西。 ?
該項目使用OpenAI的最新模型在POD的每個情節中構建語義搜索索引。它使您可以使用Google級別的準確性找到自己喜歡的時刻,並重新觀看您感興趣的確切剪輯。
您可以在任何YouTube頻道或播放列表上使用它來為高級搜索供電。該演示是我的最愛,因為它是我的最愛?但是它旨在與任何播放列表一起使用。
npm install以安裝所有必要的依賴項。npx tsx src/bin/resolve-yt-playlist.ts下載目標播放列表的每個情節的英語成績單(在這種情況下,是全中的播客劇集播放列表)。npx tsx src/bin/process-yt-playlist.ts以預處理啟用的成績單和獲取嵌入,然後將它們插入Pinecone搜索索引中。npx tsx src/bin/query.ts來查詢Pinecone搜索索引。 (可選)運行命令npx tsx src/bin/generate-thumbnails.ts ,以生成播放列表中每個視頻的時間戳的縮略圖。此步驟需要大約2個小時,需要穩定的互聯網連接。請注意,幾集可能沒有可自動化的英語轉錄,並且該項目對此使用了駭人聽聞的HTML刮擦解決方案,因此更好的解決方案是使用Whisper來轉錄該情節的音頻。此外,通過新近與相關性進行分類的項目支持分類。


在引擎蓋下,它使用:
我們使用node.js和YouTube API V3來獲取目標播放列表的視頻。在這種情況下,我們專注於全中的播客劇集播放列表,該列表在寫作時包含108個視頻。
npx tsx src/bin/resolve-yt-playlist.ts我們使用黑客html刮擦解決方案下載每個情節的英文成績單,因為YouTube API不允許非oauth訪問標題。請注意,幾集沒有可自動的英語轉錄,因此我們目前只是跳過它們。一個更好的解決方案是使用耳語轉錄每個情節的音頻。
一旦我們在本地下載了所有的成績單和元數據,我們就會預處理每個視頻的成績單,將它們分解成約100個令牌的合理尺寸的塊,並從Openai中獲取它的Text-Embedding-Aada-002。這會導致每集約200個嵌入。
然後將所有這些嵌入式升級為1536的Pinecone搜索索引。在〜108集的全中播客中,總共有〜17,575個嵌入。
npx tsx src/bin/process-yt-playlist.ts一旦設置了Pinecone搜索索引,我們就可以通過WebApp或示例CLI開始查詢它:
npx tsx src/bin/query.ts我們還支持播放列表中每個YouTube視頻的基於時間戳的縮略圖。縮略圖是使用無頭木偶製成的,並將上傳到Google Cloud Storage。我們還使用LQIP-Modern的每個縮略圖後處理,以生成漂亮的預覽佔位符圖像。
如果要生成縮略圖(可選),請運行:
npx tsx src/bin/generate-thumbnails.ts請注意,縮略圖生成需要大約2個小時,並且需要非常穩定的互聯網連接。
前端是sext.js webApp部署到Vercel,它使用我們的Pinecone索引作為主要數據存儲。
對如何改善此WebApp有一個想法嗎?找到特別有趣的搜索查詢?
隨時在Github或Twitter上向我發送反饋。 ?
麻省理工學院©Travis Fischer
如果您發現這個項目很有趣,請考慮贊助我或在Twitter上關注我
隨著時間的推移,API和服務器的成本加起來,因此,如果您可以節省它,則非常感謝在GitHub上發起贊助。 ?