
YouTubeプレイリストのOpenAIを搭載したセマンティック検索 - オールインポッドキャストをフィーチャー
オールインポッドキャストが大好きです。しかし、ポッドキャストでの検索と発見は本当に挑戦的です。
私はこのプロジェクトを構築してこの問題を解決しました...そして、私はまた、クールなAIのもので遊んだことを望んでいました。 ?
このプロジェクトでは、OpenAIの最新モデルを使用して、PODのすべてのエピソードにわたってセマンティック検索インデックスを構築します。これにより、Googleレベルの精度でお気に入りの瞬間を見つけ、興味のある正確なクリップを再視聴できます。
これを使用して、 YouTubeチャンネルまたはプレイリストで高度な検索を強化できます。デモは、私のお気に入りだからオールインポッドキャストを使用していますが、プレイリストで動作するように設計されています。
npm install実行して、必要なすべての依存関係をインストールします。npx tsx src/bin/resolve-yt-playlist.tsを実行して、ターゲットプレイリストの各エピソードの英語トランスクリプトをダウンロードします(この場合、オールインポッドキャストエピソードプレイリスト)。npx tsx src/bin/process-yt-playlist.tsを実行して、トランスクリプトを前処理し、OpenAIから埋め込みを取得し、それらをPinecone検索インデックスに挿入します。npx tsx src/bin/query.tsを実行できます。 (オプション)コマンドnpx tsx src/bin/generate-thumbnails.tsを実行して、各ビデオのタイムスタンプ付きサムネイルを生成します。このステップには約2時間かかり、安定したインターネット接続が必要です。いくつかのエピソードでは、自動化された英語の転写が利用できない可能性があり、プロジェクトではこれにハッキーなHTMLスクレイピングソリューションを使用しているため、より良いソリューションは、ささやきを使用してエピソードのオーディオを転写することです。また、プロジェクトはRemencyと関連性によるソートをサポートします。


ボンネットの下で、それは次のとおりです。
node.jsとYouTube API V3を使用して、ターゲットプレイリストのビデオを取得します。この場合、執筆時点で108個のビデオが含まれているオールインポッドキャストエピソードプレイリストに焦点を当てています。
npx tsx src/bin/resolve-yt-playlist.tsYouTube APIではキャプション以外のアクセスが許可されていないため、Hacky HTMLスクレイピングソリューションを使用して、各エピソードの英語の成績証明書をダウンロードします。いくつかのエピソードには自動化された英語の転写が利用できないため、現時点ではスキップしているだけであることに注意してください。より良い解決策は、ささやきを使用して各エピソードのオーディオを転写することです。
すべてのトランスクリプトとメタデータをローカルでダウンロードしたら、各ビデオのトランスクリプトを前処理し、それらを〜100トークンの合理的なサイズのチャンクに分割し、OpenAIからのテキスト巻き込みADA-002の埋め込みを取得します。これにより、エピソードごとに約200の埋め込みが行われます。
これらの埋め込みはすべて、1536の次元を持つPinecone検索インデックスに登録されます。オールインポッドキャストの108エピソードに合計で〜17,575の埋め込みがあります。
npx tsx src/bin/process-yt-playlist.tsPinecone検索インデックスが設定されたら、WebAppまたは例CLIを介してクエリを開始できます。
npx tsx src/bin/query.tsまた、プレイリスト内のすべてのYouTubeビデオのタイムスタンプベースのサムネイルの生成もサポートしています。サムネイルは、ヘッドレスパペイターを使用して生成され、Googleクラウドストレージにアップロードされます。また、各サムネイルをLQIP-Modernでポストプロセスして、素敵なプレビュープレースホルダー画像を生成します。
サムネイル(オプション)を生成したい場合は、実行してください。
npx tsx src/bin/generate-thumbnails.tsサムネイルの発電には約2時間かかり、かなり安定したインターネット接続が必要であることに注意してください。
Frontendは、Pineconeインデックスをプライマリデータストアとして使用するVercelに展開されたnext.js WebAppです。
このWebAppをどのように改善できるかについてのアイデアがありますか?特に楽しい検索クエリを見つけますか?
GithubまたはTwitterでフィードバックを送ってください。 ?
MIT©Travis Fischer
このプロジェクトが面白いと感じた場合は、私をスポンサーするか、Twitterで私をフォローしていることを検討してください
APIとサーバーのコストは時間の経過とともに追加されるため、GitHubでのスポンサーをsparingしていただければ高く評価されています。 ?