
Pencarian semantik bertenaga openai untuk playlist youtube apa pun-menampilkan podcast all-in
Saya suka podcast all-in. Tetapi pencarian dan penemuan dengan podcast bisa sangat menantang.
Saya membangun proyek ini untuk menyelesaikan masalah ini ... dan saya juga ingin bermain -main dengan hal -hal AI keren. ?
Proyek ini menggunakan model terbaru dari OpenAi untuk membangun indeks pencarian semantik di setiap episode pod. Ini memungkinkan Anda untuk menemukan momen favorit Anda dengan akurasi level Google dan menyusun ulang klip persis yang Anda minati.
Anda dapat menggunakannya untuk memberi daya pada pencarian lanjutan di seluruh saluran YouTube atau daftar putar . Demo ini menggunakan podcast all-in karena itu adalah favorit saya?, Tetapi dirancang untuk bekerja dengan daftar putar.
npm install untuk menginstal semua dependensi yang diperlukan.npx tsx src/bin/resolve-yt-playlist.ts untuk mengunduh transkrip bahasa Inggris untuk setiap episode daftar putar target (dalam hal ini, daftar putar episode all-in episode).npx tsx src/bin/process-yt-playlist.ts untuk pra-proses transkrip dan ambil embeddings dari OpenAi, kemudian masukkan ke dalam indeks pencarian Pinecone.npx tsx src/bin/query.ts untuk meminta indeks pencarian pinecone. (Opsional) Jalankan perintah npx tsx src/bin/generate-thumbnails.ts untuk menghasilkan thumbnail waktu dari setiap video di daftar putar. Langkah ini memakan waktu ~ 2 jam dan membutuhkan koneksi internet yang stabil.Perhatikan bahwa beberapa episode mungkin tidak memiliki transkripsi bahasa Inggris otomatis yang tersedia, dan bahwa proyek menggunakan solusi pengikis HTML hacky untuk ini, jadi solusi yang lebih baik adalah menggunakan Whisper untuk menuliskan audio episode. Juga, penyortiran dukungan proyek berdasarkan kebaruan vs relevansi.


Di bawah kap, ia menggunakan:
Kami menggunakan Node.js dan YouTube API V3 untuk mengambil video dari daftar putar target kami. Dalam hal ini, kami fokus pada playlist Episode Podcast All-in, yang berisi 108 video pada saat penulisan.
npx tsx src/bin/resolve-yt-playlist.tsKami mengunduh transkrip bahasa Inggris untuk setiap episode menggunakan solusi pengikis HTML hacky, karena API YouTube tidak mengizinkan akses non-Oauth ke teks. Perhatikan bahwa beberapa episode tidak memiliki transkripsi bahasa Inggris yang tersedia, jadi kami hanya melewatkannya saat ini. Solusi yang lebih baik adalah menggunakan Whisper untuk menuliskan audio setiap episode.
Setelah kami memiliki semua transkrip dan metadata yang diunduh secara lokal, kami melakukan pra-proses transkrip masing-masing video, memecahnya menjadi potongan-potongan berukuran ~ 100 token dan mengambil embedding teks-embedding-002 dari openai. Ini menghasilkan ~ 200 embeddings per episode.
Semua embeddings ini kemudian ditingkatkan menjadi indeks pencarian pinus dengan dimensi 1536. Ada ~ 17.575 embeddings secara total di ~ 108 episode podcast all-in.
npx tsx src/bin/process-yt-playlist.tsSetelah Indeks Pencarian Pinecone kami diatur, kami dapat mulai menanyakannya melalui Webapp atau melalui contoh CLI:
npx tsx src/bin/query.tsKami juga mendukung menghasilkan thumbnail berbasis waktu dari setiap video YouTube di daftar putar. Thumbnail dihasilkan menggunakan dalang tanpa kepala dan diunggah ke Google Cloud Storage. Kami juga pasca proses setiap thumbnail dengan LQIP-modern untuk menghasilkan gambar placeholder pratinjau yang bagus.
Jika Anda ingin menghasilkan thumbnail (opsional), jalankan:
npx tsx src/bin/generate-thumbnails.tsPerhatikan bahwa generasi minimal membutuhkan ~ 2 jam dan membutuhkan koneksi internet yang cukup stabil.
Frontend adalah WebApp berikutnya yang digunakan untuk Vercel yang menggunakan indeks Pinecone kami sebagai penyimpanan data primer.
Punya ide tentang bagaimana Webapp ini dapat ditingkatkan? Temukan pertanyaan pencarian yang sangat menyenangkan?
Jangan ragu untuk mengirimi saya umpan balik, baik di GitHub atau Twitter. ?
MIT © Travis Fischer
Jika Anda menemukan proyek ini menarik, silakan pertimbangkan untuk mensponsori saya atau mengikuti saya di Twitter
Biaya API dan server bertambah dari waktu ke waktu, jadi jika Anda bisa menyisihkannya, mensponsori GitHub sangat dihargai. ?