
OpenAI-betriebene semantische Suche nach einer YouTube-Wiedergabeliste mit dem All-In-Podcast
Ich liebe den All-In-Podcast. Aber Suche und Entdeckung mit Podcasts können wirklich eine Herausforderung sein.
Ich habe dieses Projekt gebaut, um dieses Problem zu lösen ... und ich wollte auch mit coolen KI -Sachen herumspielen. ?
Dieses Projekt verwendet die neuesten Modelle von OpenAI, um einen semantischen Suchindex in jeder Episode des Pod zu erstellen. Sie können Ihre Lieblingsmomente mit Genauigkeit auf Google-Ebene finden und die genauen Clips, an denen Sie interessiert sind, erneut ansehen.
Sie können es verwenden, um erweiterte Suche über einen YouTube -Kanal oder eine Wiedergabeliste zu führen. Die Demo verwendet den All-In-Podcast, weil es mein Favorit ist? Es wurde entwickelt, um mit einer Wiedergabeliste zu arbeiten.
npm install , um alle erforderlichen Abhängigkeiten zu installieren.npx tsx src/bin/resolve-yt-playlist.ts aus, um die englischen Transkripte für jede Episode der Target-Wiedergabeliste herunterzuladen (in diesem Fall die All-In-Podcast-Episoden-Playlist).npx tsx src/bin/process-yt-playlist.ts aus, um die Transkripte vorzubereiten und die Einbettung von OpenAI abzuholen, und fügen Sie sie dann in einen Pinecone-Suchindex ein.npx tsx src/bin/query.ts ausführen, um den Pinecone -Suchindex abzufragen. (Optional) Führen Sie den Befehl npx tsx src/bin/generate-thumbnails.ts aus, um Zeitstempel-Miniaturansichten jedes Videos in der Wiedergabeliste zu generieren. Dieser Schritt dauert ~ 2 Stunden und erfordert eine stabile Internetverbindung.Beachten Sie, dass einige Episoden möglicherweise keine automatisierten englischen Transkriptionen zur Verfügung haben und dass das Projekt dafür eine hackige HTML -Scraping -Lösung verwendet. Daher wäre eine bessere Lösung, das Audio der Episode zu verwenden. Auch die Projektunterstützung sortiert nach Aktualität gegen Relevanz.


Unter der Motorhaube verwendet es:
Wir verwenden node.js und die youtube api v3, um die Videos unserer Ziel -Wiedergabeliste zu holen. In diesem Fall konzentrieren wir uns auf die All-In-Podcast-Episoden-Wiedergabeliste, die zum Zeitpunkt des Schreibens 108 Videos enthält.
npx tsx src/bin/resolve-yt-playlist.tsWir laden die englischen Transkripte für jede Episode mit einer hacky HTML-Scraping-Lösung herunter, da die YouTube-API keinen Nicht-OAUTH-Zugriff auf Bildunterschriften zulässt. Beachten Sie, dass einige Folgen keine automatisierten englischen Transkriptionen zur Verfügung haben, daher überspringen wir sie im Moment nur. Eine bessere Lösung wäre, Whisper zu verwenden, um das Audio jeder Episode zu transkribieren.
Sobald wir alle Transkripte und Metadaten vor Ort heruntergeladen haben, verarbeiten wir die Transkripte jedes Videos. Dies führt zu ~ 200 Einbettungen pro Episode.
Alle diese Einbettungen werden dann mit einer Dimensionalität von 1536 in einen Tinecone-Suchindex aufgebraucht. Insgesamt gibt es ~ 17.575 Einbettungen über ~ 108 Episoden des All-In-Podcasts.
npx tsx src/bin/process-yt-playlist.tsSobald unser Pnecone -Suchindex eingerichtet ist, können wir ihn entweder über die WebApp oder über das Beispiel -CLI abfragen:
npx tsx src/bin/query.tsWir unterstützen auch die Erzeugung von Zeitstempel-Miniaturansichten jedes YouTube-Videos in der Wiedergabeliste. Miniaturansichten werden mit dem Kopflosenpuppenspieler generiert und in Google Cloud Storage hochgeladen. Wir verarbeiten auch jede Miniaturansicht mit LQIP-Modern, um schöne Vorschau-Platzhalterbilder zu generieren.
Wenn Sie Miniaturansichten (optional) generieren möchten, führen Sie aus:
npx tsx src/bin/generate-thumbnails.tsBeachten Sie, dass eine Miniaturansichterzeugung ~ 2 Stunden dauert und eine ziemlich stabile Internetverbindung erfordert.
Das Frontend ist ein Next.js -WebApp, der an Vercel bereitgestellt wird und der unseren Pinecone -Index als primäre Datenspeicher verwendet.
Haben Sie eine Idee, wie diese WebApp verbessert werden könnte? Finden Sie eine besonders lustige Suchanfrage?
Fühlen Sie sich frei, mir Feedback zu senden, entweder auf Github oder Twitter. ?
MIT © Travis Fischer
Wenn Sie dieses Projekt interessant fanden, sollten Sie mich sponsern oder mir auf Twitter folgen
Die API- und Serverkosten summieren sich im Laufe der Zeit. Wenn Sie sie also sparen können, wird das Sponsoring von GitHub sehr geschätzt. ?