パートナーシップ

ビデオからベクトルへ:TwelveLabsとLangflowで構築するスマートビデオエージェント

ジェームズ・リー

開発者は、Twelve LabsとLangflowを使用し、ビデオインデックス作成および質問回答用のPegasusとマルチモーダル埋め込み用のMarengoを組み合わせることで、ビデオ対応のAIエージェントを構築できます。これにより、セマンティックビデオ検索からAstraDBベクトルストレージを使用した完全なRAGシステムに至るまでのワークフローがカバーされます。

開発者は、Twelve LabsとLangflowを使用し、ビデオインデックス作成および質問回答用のPegasusとマルチモーダル埋め込み用のMarengoを組み合わせることで、ビデオ対応のAIエージェントを構築できます。これにより、セマンティックビデオ検索からAstraDBベクトルストレージを使用した完全なRAGシステムに至るまでのワークフローがカバーされます。

この記事の内容

No headings found on page

ニュースレターに登録する

ニュースレターに登録する

ビデオ理解に関する最新の技術進歩、チュートリアル、業界の動向をお届けします

ビデオ理解に関する最新の技術進歩、チュートリアル、業界の動向をお届けします

AIを活用してビデオを検索、分析、探索します。

2025/06/04

12分

記事へのリンクをコピー

Langflow/DataStaxチーム(Melissa HerreraEric HareGokul KrishnaaAlejandro Cantarero)のコラボレーションに深く感謝いたします!

ワークフロー全体を紹介しているMelissaによる以下のチュートリアルもぜひご覧ください 👇


1 - はじめにと概要

ビデオAIのワイルドな世界へようこそ!ここでは、あなた自身と同じように、アプリが動画で何が起こっているかを「見る」ことができます! 🎬

このチュートリアルは、TwelveLabsLangflowを使って次世代のビデオパワードエージェントを構築するためのゴールインチケットです。コンピュータビジョンの博士号は必要ありません。好奇心といくつかのビデオクリップさえあれば準備完了です。


なぜ重要なのか?

TwelveLabsは「頭脳」を提供します。当社のPegasus(ペガサス)およびMarengo(マレンゴ)モデルにより、コードがビデオコンテンツを理解、インデックス化、チャットできるようになり、質問への回答、重要な瞬間の特定、スマートな要約生成などが可能になります。Langflowはあなたの遊び場です。アイデアをAIワークフローに変換し、即座にAPIとして提供できるビジュアルビルダーです。これらを組み合わせることで、ビデオ検索エンジン、コンテンツモデレーションボット、あるいはテキスト、画像、動画を処理できるマルチモーダルアシスタントなど、ビデオAIソリューションの作成、テスト、デプロイが簡単になります。


内容は?

このチュートリアルでは、初心者からビデオのプロへと成長できます。環境をセットアップし、LangflowにおけるTwelveLabsコンポーネントをマスターし、ビデオとのチャット、ビデオ埋め込み(Embeddings)の生成と保存、さらにはビデオライブラリから質問を取得して回答する本格的なRAGシステムの構築といった実践的なフローを構築します。その過程で、ベストプラクティスを学び、画期的なユースケースを発見し、独自のビデオ対応アプリを構築するインスピレーションを得ることができます。

それでは、ポップコーンを用意し、コードエディタを立ち上げて、AIワークフローを真のビデオススマートにしていきましょう! 🚀🍿



2 - 開発環境のセットアップ

TwelveLabsとLangflowで開発を開始するために環境を準備しましょう。



Langflowのインストール

  1. pipを使用してLangflowをインストールします:pip install langflow

  2. Langflowサーバーを起動します:langflow run

  3. ブラウザで http://127.0.0.1:7860 にアクセスし、LangflowのUIを開きます。


TwelveLabs API認証情報の取得

  1. まだアカウントをお持ちでない場合は、 TwelveLabsプラットフォーム でアカウントを作成します。

  2. プロファイル設定に移動し、新しいAPIキーを作成します。

  3. TwelveLabsサービスへのリクエストの認証に必要となるため、APIキーを書き留めておきます。



TwelveLabsコンポーネントの確認

  1. Langflowのインターフェースで、「+」ボタンをクリックして新しいフローを作成します。

  2. コンポーネントサイドバーを開き、「TwelveLabs」を検索します。以下のコンポーネントが表示されるはずです:

    • Video File(ビデオファイル)

    • Split Video(ビデオ分割)

    • Twelve Labs Pegasus Index Video(Twelve Labs Pegasus ビデオインデックス作成)

    • Twelve Labs Pegasus(Twelve Labs Pegasus)

    • Twelve Labs Text Embeddings(Twelve Labs テキスト埋め込み)

    • Twelve Labs Video Embeddings(Twelve Labs ビデオ埋め込み)

    • Convert AstraDB to Pegasus Input(AstraDBからPegasus入力への変換)

  3. これらのコンポーネントが表示されない場合は、Langflowが最新バージョンにアップデートされているか確認してください。


サンプル動画の準備

  1. このチュートリアルでのテスト用に、2〜3個の短いビデオクリップ(それぞれ1〜3分)を用意します。MP4、MOV、AVIなどの一般的なフォーマットがサポートされています。

  2. 学習時のパフォーマンスを最適化するために、視覚的コンテンツが明確で、シーンがはっきり分かれている動画を使用してください。これにより、ビデオ理解機能の効果をより実感できます。

  3. チュートリアル中に見つけやすいよう、サンプル動画専用のフォルダを作成します。



トラブルシューティングのヒント

TwelveLabsコンポーネントで問題が発生した場合:

  1. API認証: APIキーが正しく入力されており、有効期限が切れていないことを確認してください。

  2. ビデオ処理: ビデオがサポートされているフォーマットであり、サイズが大きすぎないことを確認してください。処理を高速化するため、まずは100MB未満のクリップから始めてください。

  3. コンポーネントの読み込み: コンポーネントが表示されない場合は、Langflowを再起動するか、コンソールでエラーメッセージを確認してください。

  4. 依存関係: 統合にはビデオ処理のためにFFmpegが必要です。まだインストールされていない場合は、システムのパッケージマネージャーを使用してインストールしてください。

環境がセットアップできたら、TwelveLabsとLangflowを使って強力なビデオ対応AIワークフローの構築を始める準備は完了です。



3 - LangflowにおけるTwelveLabsコンポーネントの理解

Langflowに、AIワークフローで高度なビデオ理解機能を可能にする7つの強力なTwelveLabsコンポーネントが加わりました。これらのコンポーネントは、動画の処理、埋め込みの生成、ビデオコンテンツのインデックス作成、そして視覚コンテンツとの自然言語によるインタラクションを実現するために相互に連携します。



3.1 - Video File(ビデオファイル)コンポーネント

Video Fileコンポーネントは、Langflowにおけるビデオ処理ワークフローのエントリポイントとして機能します。MP4、AVI、MOV、MKVなど、幅広い一般的なビデオフォーマットに対応しているため、様々なビデオソースに対して汎用性があります。実装は簡単で、ビデオファイルへのパスを指定するだけで、コンポーネントはファイルパスと重要なメタデータの両方を含むDataオブジェクトを返します。開発中のパフォーマンスを最適化するため、まずは100MB未満のビデオから始めることをお勧めします。



3.2 - Split Video(ビデオ分割)コンポーネント

この強力なコンポーネントは、長尺のビデオをインテリジェントに小さく扱いやすいクリップに分割(セグメント化)します。いくつかのパラメータを通じて分割プロセスを微調整できます。希望するクリップの長さを秒単位で設定し、最後のクリップの処理方法(切り捨て、前のコンテンツとのオーバーラップ、またはそのまま保持)を選択し、元のビデオをクリップと並行して保持するかどうかを決定します。このコンポーネントは、詳細なメタデータを含むDataオブジェクトのコレクションとしてクリップを出力します。検索および理解タスクで最良の結果を得るには、6秒から30秒の長さのクリップを作成することをお勧めします。



3.3 - Twelve Labs Pegasus Index Video(Twelve Labs Pegasus ビデオインデックス作成)コンポーネント

ビデオインデックス作成の中核を担うのが、Pegasus Index Videoコンポーネントです。TwelveLabsのPegasus APIと連携し、ビデオコンテンツの検索可能なインデックスを作成します。APIキーとビデオデータ(通常はSplit Videoコンポーネントから取得)を提供すると、固有のvideo_idindex_id識別子を含むインデックス付きビデオデータを生成します。このインデックス作成ステップは、Pegasusコンポーネントでクエリを実行する前に不可欠です。



3.4 - Twelve Labs Pegasus コンポーネント

Pegasusコンポーネントは、インデックス作成されたビデオコンテンツとの高度な自然言語インタラクションを可能にします。構成には、APIキー、クエリテキスト、および関連するビデオ識別子とインデックス識別子が必要です。インテリジェントな推論レイヤーとして機能し、クエリのコンテキストとビデオコンテンツの両方を処理して、対話的な応答を生成します。このコンポーネントは、自然言語の理解とビデオコンテンツ分析のギャップを真に埋めるものです。



3.5 - Twelve Labs Text Embeddings(Twelve Labs テキスト埋め込み)コンポーネント

TwelveLabsのMarengoモデルを活用して、このコンポーネントはテキスト入力からベクトル埋め込みを生成します。APIキーが必要で、現在はMarengo-retrieval-2.7モデルをサポートしています。出力はベクトルデータベースと完全に互換性があるため、洗練された検索システムに最適です。アプリケーションにおける一貫性を保つため、テキストコンポーネントとビデオコンポーネントの両方で同じ埋め込みモデルを使用することをお勧めします。



3.6 - Twelve Labs Video Embeddings(Twelve Labs ビデオ埋め込み)コンポーネント

テキスト版と同様に、Video Embeddingsコンポーネントはビデオコンテンツの密なベクトル表現を作成します。テキスト埋め込みコンポーネントと同じ構成パターンを共有しますが、ビデオファイルの処理に特化しています。得られる埋め込みにより、動画間またはテキストと動画コンテンツ間の強力なセマンティック類似性検索が可能になり、マルチモーダルアプリケーションの刺激的な可能性が広がります。



3.7 - Convert AstraDB to Pegasus Input(AstraDBからPegasus入力への変換)コンポーネント

この重要なコネクタコンポーネントは、ベクトルデータベースの操作とTwelveLabsコンポーネント間の架け橋となります。AstraDBからの検索結果を処理し、重要なvideo_idindex_idの情報を抽出して、Pegasusコンポーネントに適した形式に適切に変換します。このコンポーネントは、ビデオコンテンツを使用したRAG(検索拡張生成)パターンを実装する際に特に価値があり、ベクトルデータベースとビデオ処理パイプライン間のスムーズなデータフローを保証します。

これらのコンポーネントは、シームレスに連携するように設計されています。たとえば、以下のようにしてビデオ検索エンジンを作成できます:

  1. Video Fileでビデオを読み込む

  2. Split Videoで扱いやすいチャンクに分割する

  3. Pegasus Index Videoでインデックスを作成する

  4. Video Embeddingsで埋め込みを生成する

  5. AstraDBなどのベクトルデータベースに保存する

  6. Convert AstraDB to Pegasus Inputで関連するクリップを取得する

  7. Twelve Labs Pegasusで質問に答える

ワークフローを構築する際は、これらのコンポーネントを、読み込みや処理からインデックス作成、埋め込み、検索に至るまで、ビデオ理解の様々な側面を処理するビルディングブロックとして考えてください。



4 - Pegasusでのビデオチャット:最初の対話型ビデオワークフロー

このセクションでは、Twelve Labs Pegasusモデルを使用してビデオと「チャット」できる基本的なLangflowワークフローの作成手順を説明します。このフローは、ビデオ処理、インデックス作成、および自然言語クエリの直接的な統合を示しています。

参照画像に示されている「Pegasus Chat with Video」フローにより、ビデオをアップロードし、Twelve Labsによって自動的にインデックス化され、その後チャットインターフェースを通じてその内容について質問することができます。

以下の手順に従ってこのフローを構築してください:

  1. ビデオのアップロード

    • Video File コンポーネントをLangflowキャンバスにドラッグします。

    • Video File コンポーネントのプロパティで、サンプルビデオファイル(例:画像に示されている big_buck_bunny_720.mp4)をアップロードするためにクリックします。このコンポーネントがビデオを読み込み、他のコンポーネントで利用できるようにします。

  2. ビデオデータをPegasusに接続

    • Twelve Labs Pegasus コンポーネントをキャンバスに追加します。

    • Video File コンポーネントの Data 出力(赤丸)を、Twelve Labs Pegasus コンポーネントの Video Data 入力(赤丸)に接続します。これにより、Pegasusコンポーネントに処理対象のビデオを伝えます。

  3. Pegasusコンポーネントの構成

    • Twelve Labs Pegasus コンポーネントにおいて:

      • 指定されたフィールドに Twelve Labs APIキー を入力します。

      • Index Name (インデックス名)を指定します。これは、作成されるビデオインデックスに対して任意に選択した分かりやすい名前で構いません(例:「bunny-test-index」)。

      • Model はデフォルトで pegasus1.2 のようなPegasusモデルになります。特定のモデル要件がない限り、通常はそのままにしておいて構いません。

    • 開発者向け注意Index ID を指定せずに Video Data と Index Name を提供すると、Pegasusコンポーネントは新規ビデオに対してTwelve Labsでのビデオインデックス自動作成プロセスを開始します。このプロセス中にTwelve Labsによって video_id および index_id が作成されます。

  4. ユーザー入力の有効化

    • Chat Input コンポーネントをキャンバスに追加します。

    • Chat Input コンポーネントの出力を、Twelve Labs Pegasus コンポーネントの Prompt 入力(画像で「Receiving input」とラベル付けされた、青丸)に接続します。これにより、Pegasusモデルに送信される質問を入力できるようになります。

  5. チャット応答の表示

    • Chat Output コンポーネントを追加します。

    • Twelve Labs Pegasus コンポーネントの Message 出力(青丸)を、この Chat Output コンポーネントの入力に接続します。これにより、Pegasusモデルからの回答が表示されます。

  6. 任意:再チャット用のビデオIDの出力

    • その後のチャットセッションで同じビデオの再インデックス作成を避けるために、Twelve Labsによって生成された Video ID と Index ID をキャプチャできます。

    • もう一つの Chat Output コンポーネントを追加します。

    • Twelve Labs Pegasus コンポーネントからの Video ID 出力(青丸)を、この新しい Chat Output コンポーネントに接続します。

    • 開発者のヒント同じビデオを使用した将来のセッションでは、以前に生成された Video ID と Index ID を、それぞれ Twelve Labs Pegasus コンポーネントの Pegasus Video ID および Index ID フィールドに直接入力できます。これにより、再インデックス作成ステップをバイパスし、インタラクションを高速化できます。Video Data と Index Name のみを提供した場合は、再インデックス作成されます。

  7. プレイグラウンドでのテスト

    • Langflowプレイグラウンドを開きます(通常は右側のサイドバーにあるチャットバブルアイコンをクリックします)。

    • ビデオに関する質問をチャットインターフェースに入力します(例:「ビデオに写っている動物は何ですか?」、「主役を説明してください。」)。

    • Pegasusコンポーネントがビデオを処理し(初回の場合)、インデックスを作成し、ビデオの内容に基づいて質問に答えます。応答は接続された Chat Output に表示されます。

このシンプルながら強力なフローは、TwelveLabsのビデオ理解をインタラクティブなLangflowエージェントに直接統合する方法の基本例として役立ちます。これで、ほぼリアルタイムでビデオの内容について質問を投げ、回答を得ることができます。



5 - MarengoとAstraDBによるビデオ埋め込み:セマンティック・ビデオ・インデックスの構築

このセクションでは、TwelveLabsのMarengoモデルを使用してビデオ埋め込みを生成し、その後これらの埋め込みをDataStax AstraDBに保存するためのLangflowワークフローの構築方法を詳しく説明します。これは、ビデオライブラリに対するセマンティック検索を有効にしたり、ビデオコンテンツを使用した高度な検索拡張生成(RAG)システムを構築したりするために不可欠なステップです。

提供されている参照画像に示されているように、このワークフローは、ビデオを取り込んで埋め込みを生成し、これらの埋め込みをビデオのメタデータとともにAstraDBコレクションに保存します。


5.1 - 事前準備:AstraDBのセットアップ

Langflowのフローを構築する前に、AstraDB環境が準備できていることを確認してください:

  1. AstraDBデータベースの作成

    • まだお持ちでない場合は、サインアップして DataStax AstraDB 上に新しいサーバーレスデータベースを作成します。

    • データベースの初期作成については、AstraDBのセットアップガイドに従ってください。

  2. アプリケーション・トークンの生成

    • AstraDBコンソールの「Database Details(データベースの詳細)」セクションに移動します。

    • 適切な権限(例:Database Administrator、またはコレクションへの接続・読み書きを許可するロール)を持つアプリケーション・トークン(Application Token)を生成します。Langflowコンポーネントで必要になるため、このトークンを安全に保存してください。

  3. video_embeddings コレクションの作成

    • AstraDBデータベース内に新しいコレクションを作成します。名前は video_embeddings などにすると良いでしょう。

    • 極めて重要:このコレクションをベクトル検索(Vector Search)に対応するように構成します。これには通常、以下が含まれます:

      • コレクションがベクトルを保存するように指定すること。

      • ベクトルの次元数(Dimension)を 1024 に設定すること。これは、TwelveLabsのMarengoモデル(画像に示されている Marengo-retrieval-2.7 など)によって生成される埋め込みの次元数です。

    • ベクトル検索の有効化および次元数の設定に関する詳細な手順については、コレクション管理に関するAstraDBのドキュメントを参照してください。



5.2 - Langflowワークフローの構築

AstraDBがセットアップされたら、Langflowで以下のフローを構築します:

  1. 動画のアップロード

    • Video File コンポーネントをキャンバスにドラッグします。

    • 希望のビデオファイル(例:画像で使われている big_buck_bunny_720.mp4)をアップロードして構成します。このコンポーネントにより、ビデオデータがワークフローからアクセス可能になります。

  2. ビデオ埋め込み生成の構成

    • Twelve Labs Video Embeddings コンポーネントをキャンバスに追加します。

    • API Key フィールドに Twelve Labs APIキー を入力します。

    • Model が Marengo-retrieval-2.7 (または別の互換性のあるMarengoモデル)に設定されていることを確認します。このコンポーネントがビデオを処理し、密なベクトル埋め込みを生成します。

  3. 取り込み用AstraDBの構成

    • DS Astra DB コンポーネント(または画像に示されている Astra DB コンポーネント)をキャンバスに追加します。

    • 対応するフィールドに Astra DB アプリケーション・トークン を入力します。

    • ベクトル対応コレクションを作成した Database 名を指定します。

    • 作成した Collection 名(例: video_embeddings)を入力します。

  4. 埋め込みをAstraDBに接続

    • Twelve Labs Video Embeddings コンポーネントからの Embeddings 出力(緑丸)を、DS Astra DB コンポーネントの Embedding Model 入力(緑丸)に接続します。

    • 開発者向け注意:この接続は、AstraDBに対して受信データを埋め込みとして解釈する 方法 を伝えるものですが、埋め込み自体を提供するわけではありません。実際の埋め込みは、取り込まれるデータとともに渡されます。

  5. 取り込み用ビデオデータの接続

    • Video File コンポーネントからの Data 出力(赤丸)を、DS Astra DB コンポーネントの Ingest Data 入力(赤丸)に接続します。

    • 開発者向け注意:データが Ingest Data 入力に渡されると、このフローのように埋め込みモデルが構成されているか埋め込みコンポーネントに接続されている場合、Astra DB コンポーネントは入力データの埋め込みを期待または生成します。このセットアップでは、Twelve Labs Video Embeddings コンポーネントが埋め込み生成を処理し、その出力(元のデータと埋め込みを含む)が DS Astra DB に渡されます。

  6. フローを実行して埋め込みと取り込みを行う

    • プロセスを開始するには、通常、このチェーンの最後のコンポーネントである DS Astra DB コンポーネントを「実行」または有効化します。Langflowでは、コンポーネント上の再生/実行アイコンをクリックするか、より大きな実行可能グラフの一部としてフロー全体を構築して開始します。

    • 実行されると、Video File コンポーネントがビデオを読み込みます。次に、Twelve Labs Video Embeddings コンポーネントがこのビデオデータを受け取り(フローを通じて暗黙的に、または Video Data 入力が接続されている場合は明示的に受け取り。スクリーンショットのコンポーネントでは示されていませんが)、埋め込みを生成します。最後に、DS Astra DB コンポーネントがビデオデータ(上流コンポーネントあるいは自身の内部ロジックによって埋め込みが豊富化されたもの)を受け取り、指定されたAstraDBコレクションに取り込みます。

このフローを実行すると、ビデオの内容はAstraDBコレクション内のベクトル埋め込みとして表現され、セマンティック検索や類似性比較、RAGアプリケーションのナレッジベースとして活用できる状態になります。AstraDBコレクションに直接クエリを実行して、データが保存されているか確認することができます。



6 - ビデオコンテンツを使用した高度なRAG実装

ビデオのための堅牢な検索拡張生成(RAG)システムを構築するには、ビデオコンテンツの処理やインデックス作成から、セマンティック検索や文脈に応じた理解の有効化にいたるまで、いくつかの段階があります。このセクションは2つのパートに分かれています。まず、ビデオを分割し、そのクリップに対してTwelve Labs Pegasusでインデックスを作成し、Marengoで埋め込みを生成し、それらすべてをAstraDBに保存することで、ビデオデータを準備することに焦点を当てます。


パート1:ビデオを分割し、Pegasusでクリップのインデックスを作成し、埋め込みをAstra DBに保存する

この最初のフローは、画像に示されているように、ビデオRAGシステムの基礎となります。ソースビデオを管理可能なクリップに分割処理し、Pegasusからのインデックス情報でこれらのクリップを充実させ、Marengoを使用して対応するベクトル埋め込みを生成し、最後にこの包括的なデータセットを効率的な検索のためにAstraDBに保存します。

このデータ取り込み用パイプラインの構築手順は以下の通りです:

  1. ソースビデオのアップロード

    • まず、Video File コンポーネントをLangflowキャンバスにドラッグします。

    • 動画をアップロードして構成します(例:画像に示されている big_buck_bunny_720...)。このコンポーネントは生のビデオデータを出力します。

  2. 動画をクリップに分割

    • Split Video コンポーネントを追加します。

    • Video File コンポーネントからの Data 出力を、Split Video コンポーネントの Video Data 入力に接続します。

    • Split Video コンポーネントを構成します:

      • Clip Duration (seconds): 各ビデオセグメントの長さを定義するためにこれを設定します。画像では 6 秒になっており、きめ細かな分析に適した開始値です。コンテンツに合わせてこれを調整できます(たとえば、大まかなシーンセグメンテーションには30秒が適している場合があります)。

      • Last Clip Handling: クリップの長さを一定にするために、画像にある Overlap Previous(前のクリップと重ねる)のようなオプションを選択するか、お好みに応じて Truncate(切り捨て)や Keep Short(短いまま保持)を選択します。

      • Include Original Video: セグメントを扱うことになるRAG処理用クリップを作成する場合、通常はこれをオフ(画像のとおり)にします。

  3. Pegasusでクリップのインデックス作成

    • Twelve Labs Pegasus Index Video コンポーネントを導入します。

    • Split Video コンポーネントからの Video Clips 出力を、Twelve Labs Pegasus Index Video コンポーネントの Video Data 入力に接続します。このコンポーネントは各クリップを処理します。

    • コンポーネントの設定において:

      • Twelve Labs APIキーを入力します。

      • Index Name (例:画像の test index)を指定します。これにより、Twelve Labs内でインデックス作成されたコンテンツを整理しやすくなります。コンポーネントは Indexed Data を出力します。これには元のクリップデータと、Pegasusによって割り当てられた video_id および index_id が含まれます。

      • Model はデフォルトでPegasusモデル(例: pegasus1.2 )になります。

  4. Marengoによるビデオ埋め込みの生成

    • Twelve Labs Video Embeddings コンポーネントを追加します。

    • ここでも Twelve Labs APIキー を入力します。

    • Model に Marengo-retrieval-2.7 (画像に示されているモデル)か、お好みのMarengo埋め込みモデルを設定します。

    • 極めて重要:Twelve Labs Pegasus Index Video コンポーネントからの Indexed Data 出力を、Twelve Labs Video Embeddings コンポーネントの(暗黙的または明示的な)ビデオデータ入力に接続します。開発者向け注意:画像ではこのコンポーネントに直接「Video Data」という名前の入力が表示されていませんが、埋め込みコンポーネントは処理対象のビデオクリップを受け取る必要があります。Indexed Data がこれらのクリップを運びます。

  5. 保存先AstraDBの構成

    • DS Astra DB コンポーネントをキャンバスに配置します。

    • Astra DB アプリケーション・トークン を入力します。

    • ビデオデータと埋め込みが保存される、ターゲットとなる Database (例: video_embeddings)および Collection (例: video_embeddings)を選択します。このコレクションが、使用するMarengoモデル(Marengo-retrieval-2.7 の場合は1024)に一致する次元数で、ベクトル検索向けに構成されていることを確認してください。

  6. 埋め込みとデータをAstraDBに接続

    • Twelve Labs Video Embeddings コンポーネントからの Embeddings 出力を、DS Astra DB コンポーネントの Embedding Model 入力に接続します。これにより、AstraDBに埋め込みベクトルの解釈方法を伝えます。

    • Twelve Labs Pegasus Index Video コンポーネントからの Indexed Data 出力を、DS Astra DB コンポーネントの Ingest Data 入力に接続します。これにより、ビデオクリップ(Pegasusの video_id と index_id で充実化されたデータ)と、生成されたそれらの埋め込みが、保存先へと送信されます。

  7. 取り込みフローの実行

    • フローを実行します。Video File が読み込まれ、Split Video によって分割されます。各クリップは、インデックス作成のために Twelve Labs Pegasus Index Video に送信されます。得られた Indexed Data (クリップ + Pegasus ID)は Twelve Labs Video Embeddings に渡され、Marengo埋め込みが生成されます。最後に、DS Astra DB コンポーネントがこの包括的なデータ(クリップ、Pegasusインデックス情報、Marengoベクトル埋め込み)を、指定されたコレクションに取り込みます。

このフローが完了すると、AstraDBコレクションに、個々のベクトル埋め込みおよびPegasusの識別子が紐付けられた、インデックス作成済みビデオクリップが含まれ、RAGシステムの取得パートへの準備が整います。



パート2:ビデオ埋め込みへのクエリ実行と、Pegasusを使用したビデオチャット

ビデオクリップが処理され、Pegasusによってインデックスが作成され、それらのMarengo埋め込みがAstraDBに保存され終わったら(パート1で詳述)、この2つ目のフローはRAGの「取得(ミリバール)」と「生成」の側面を示します。参照画像にあるように、まずユーザーのテキスト質問(クエリ)を埋め込みに変換し、それを使用して関連するビデオクリップをAstraDBから検索します。これらのクリップからの情報は、コンテキストに基づいた回答を生成するためにTwelve Labs Pegasusモデルに渡されます。

以下はこの取得および質問応答パイプラインの構築手順です:

  1. ユーザーのクエリ入力と埋め込み

    • Chat Input コンポーネントをキャンバスに追加します。これは、ユーザーが質問を入力する場所になります。

    • Twelve Labs Text Embeddings コンポーネントを追加します。

      • Twelve Labs APIキーを入力します。

      • Model に Marengo-retrieval-2.7 (またはパート1でビデオクリップの埋め込みに使用したのと同じMarengoモデル)を設定します。

    • Chat Input コンポーネントの出力を、Twelve Labs Text Embeddings コンポーネントのテキスト入力に接続します。これにより、ユーザーのクエリがベクトル埋め込みに確実に変換されます。

  2. AstraDBでのセマンティック検索

    • DS Astra DB コンポーネントを追加します。

      • Astra DB アプリケーション・トークン を入力します。

      • ビデオクリップの埋め込みが保存されている Database (例: video_embeddings)および Collection (例: video_embeddings)を選択します。

      • Twelve Labs Text Embeddings コンポーネントからの Embeddings 出力を、DS Astra DB コンポーネントの Embedding Model 入力に接続します。これにより、AstraDBにクエリ埋め込みが提供されます。

      • Chat Input コンポーネントの出力(生のテキストクエリ)を、DS Astra DB コンポーネントの Search Query 入力に接続します。開発者向け注意:クエリの埋め込みは Embedding Model に渡されますが、Search Query 入力自体は、構成によってはキーワードフィルタリングやその他のハイブリッド検索戦略、あるいは単に提供されたクエリ埋め込みを使用して何に対してベクトル検索を行うかを知るために、AstraDBによって利用される場合があります。

    • DS Astra DB コンポーネントは、コレクション内で類似性検索を実行し、最も関連性の高いビデオクリップ(またはパート1から保存されている場合は、video_id や index_id を含むメタデータ)である Search Results を返します。

  3. AstraDBの結果をPegasus入力用に変換

    • Convert AstraDB to Pegasus Input コンポーネントを追加します。

    • DS Astra DB コンポーネントからの Search Results 出力(多くの場合ドキュメントのメタデータを含む赤丸)を、このコンバータコンポーネントの AstraDB Results 入力に接続します。

    • このユーティリティコンポーネントは非常に重要です。AstraDBの検索結果から Index ID と Video ID を抽出します。これは、Pegasusコンポーネントが「チャット」対象となる特定のインデックス作成済みビデオセグメントを識別するために必須となります。

  4. 文脈に応じたQ&Aに向けてPegasusを準備

    • Twelve Labs Pegasus コンポーネントを追加します。

      • Twelve Labs APIキーを入力します。

      • 希望のPegasusの Model を選択します(デフォルトは pegasus1.2 です)。

    • Convert AstraDB to Pegasus Input コンポーネントからの Index ID 出力を、Twelve Labs Pegasus コンポーネントの Index ID 入力(「Receiving input」とラベルされた端子)に接続します。

    • Convert AstraDB to Pegasus Input コンポーネントからの Video ID 出力を、Twelve Labs Pegasus コンポーネントの Pegasus Video ID 入力(「Receiving input」とラベルされた端子)に接続します。

    • 開発者向け注意:ビデオデータがその場で直接インデックス作成のために提供される「Pegasus Chat with Video」フローとは異なり、ここではAstraDBから取得した すでにインデックス作成されている コンテンツの特定の Pegasus Video ID と Index ID を提供しています。Pegasusコンポーネントの Video Data 入力はこのRAG検索フローでは未接続のままになります。

  5. 元のクエリをPegasusに渡す

    • 元の Chat Input コンポーネント(ユーザーの質問を保持しているもの)の出力を、Twelve Labs Pegasus コンポーネントの Prompt 入力(「Receiving input」とラベルされた端子)に直接接続します。これにより、Pegasusは取得したビデオセグメントの文脈を使用して、どの質問に答えるべきかを認識できます。

  6. Pegasusの応答を表示する

    • Chat Output コンポーネントを追加します。

    • Twelve Labs Pegasus コンポーネントからの Message 出力を、この Chat Output コンポーネントの入力に接続します。これにより、AIが生成した回答が表示されます。

  7. ビデオRAGシステムのテスト

    • Langflowのプレイグラウンド(チャットインターフェース)を開きます。

    • パート1で処理したビデオコンテンツに関連する質問を入力します(例:「冒頭でウサギに何が起こりますか?」、「蝶が出てくるシーンを見せてください。」)。

    • フローは以下のように実行されます

      1. あなたの質問が Chat Input によってキャプチャされます。

      2. Twelve Labs Text Embeddings が質問をベクトルに変換します。

      3. DS Astra DB がそのベクトルを使用して、データベースから最もセマンティックに類似したビデオクリップを見つけます。

      4. Convert AstraDB to Pegasus Input が、上位に取得されたクリップの video_id および index_id を抽出します。

      5. Twelve Labs Pegasus がこれらのID(どのビデオセグメントに焦点を当てるかを指示)と元の質問(そのセグメントに関して何を回答すべきかを指示)を受け取ります。

      6. Pegasusが、あなたの質問に関連する指定のビデオセグメントを分析し、回答を生成します。

      7. 回答が Chat Output を介して表示されます。

この2パートからなるRAGアーキテクチャにより、大規模なビデオライブラリから関連する重要な瞬間を対話形式で取得し、それを基にやり取りできる、洗練されたスケーラブルなビデオ理解アプリケーションを構築できます。



7 - 特別なユースケースとパフォーマンスのベストプラクティス

TwelveLabsとLangflowの連携によるビデオ機能は、価値の高いビジネスアプリケーションを数多く展開させます。不適切な動画セグメントを自動的にフラグ付け、または要約するコンテンツモデレーションシステム、大規模なアーカイブから関連のある瞬間を表面化させるビデオ検索エンジン、さらには動画、テキスト、画像の理解をブレンドしたマルチモーダルアシスタントを構築し、より豊かなユーザーエクスペリエンスを提供できます。これらのユースケースは、動画に対する迅速な洞察や自動分析が、生産性、コンプライアンス、ユーザー維持を直接左右する、メディア、教育、カスタマーサポートなどの業界に最適です。

ビデオ対応ワークフローで信頼性の高いビジネス結果を提供するには、パフォーマンスとコストの最適化に注力してください。動画セグメントをバッチ処理する、あるいは不要な再処理を防ぐためにキャッシュを使用することで、APIのフットプリントを抑え、また詳細度と計算効率のバランスが取れるクリップの長さを選びましょう。ビデオライブラリの増加に伴い高速なクエリ応答を維持するため、AstraDBと埋め込みパイプラインを監視し、より精密な結果を得るために、ベクトル類似性にメタデータフィルタリングを組み合わせたハイブリッド検索戦略を検討してください。

これらのベストプラクティスに従うことで、ビデオAIソリューションにおけるスケーラビリティ、正確性、費用対効果を最大化できます。これにより、組織は大規模なビデオから実行可能な洞察を抽出し、市場における競争優位性を維持することができます。



8 - まとめと次のステップ

おめでとうございます。これであなたもビデオマスターです! 🎬✨

TwelveLabsとLangflowの強力なコンビを使用して、本当にビデオを見て理解するAIエージェントを構築する力をアンロックできました。次世代のスマートなビデオ検索エンジンを作成する、大規模なコンテンツモデレーション、あるいはマルチモーダルアシスタントの開発など、生のフッテージを実用的な洞察(そしてちょっとした魔法のような体験)に変えるツールが手に入りました。

それでは、次に何をしましょう?

独自の創造的なフローを実験したり、さまざまな種類のビデオで限界に挑戦したり、最もクールなプロジェクトをコミュニティで共有してみましょう。TwelveLabsとLangflowのロードマップで発表される刺激的な新機能に注目し、ディスカッションへの参加もお忘れなく。あなたのアイデアとフィードバックが、ビデオAIの未来を形作ります!

さあ、素晴らしいものを構築しに出発しましょう。ビデオの宇宙があなたの探索を待っています! 🚀🎥


追加リソース

Langflow/DataStaxチーム(Melissa HerreraEric HareGokul KrishnaaAlejandro Cantarero)のコラボレーションに深く感謝いたします!

ワークフロー全体を紹介しているMelissaによる以下のチュートリアルもぜひご覧ください 👇


1 - はじめにと概要

ビデオAIのワイルドな世界へようこそ!ここでは、あなた自身と同じように、アプリが動画で何が起こっているかを「見る」ことができます! 🎬

このチュートリアルは、TwelveLabsLangflowを使って次世代のビデオパワードエージェントを構築するためのゴールインチケットです。コンピュータビジョンの博士号は必要ありません。好奇心といくつかのビデオクリップさえあれば準備完了です。


なぜ重要なのか?

TwelveLabsは「頭脳」を提供します。当社のPegasus(ペガサス)およびMarengo(マレンゴ)モデルにより、コードがビデオコンテンツを理解、インデックス化、チャットできるようになり、質問への回答、重要な瞬間の特定、スマートな要約生成などが可能になります。Langflowはあなたの遊び場です。アイデアをAIワークフローに変換し、即座にAPIとして提供できるビジュアルビルダーです。これらを組み合わせることで、ビデオ検索エンジン、コンテンツモデレーションボット、あるいはテキスト、画像、動画を処理できるマルチモーダルアシスタントなど、ビデオAIソリューションの作成、テスト、デプロイが簡単になります。


内容は?

このチュートリアルでは、初心者からビデオのプロへと成長できます。環境をセットアップし、LangflowにおけるTwelveLabsコンポーネントをマスターし、ビデオとのチャット、ビデオ埋め込み(Embeddings)の生成と保存、さらにはビデオライブラリから質問を取得して回答する本格的なRAGシステムの構築といった実践的なフローを構築します。その過程で、ベストプラクティスを学び、画期的なユースケースを発見し、独自のビデオ対応アプリを構築するインスピレーションを得ることができます。

それでは、ポップコーンを用意し、コードエディタを立ち上げて、AIワークフローを真のビデオススマートにしていきましょう! 🚀🍿



2 - 開発環境のセットアップ

TwelveLabsとLangflowで開発を開始するために環境を準備しましょう。



Langflowのインストール

  1. pipを使用してLangflowをインストールします:pip install langflow

  2. Langflowサーバーを起動します:langflow run

  3. ブラウザで http://127.0.0.1:7860 にアクセスし、LangflowのUIを開きます。


TwelveLabs API認証情報の取得

  1. まだアカウントをお持ちでない場合は、 TwelveLabsプラットフォーム でアカウントを作成します。

  2. プロファイル設定に移動し、新しいAPIキーを作成します。

  3. TwelveLabsサービスへのリクエストの認証に必要となるため、APIキーを書き留めておきます。



TwelveLabsコンポーネントの確認

  1. Langflowのインターフェースで、「+」ボタンをクリックして新しいフローを作成します。

  2. コンポーネントサイドバーを開き、「TwelveLabs」を検索します。以下のコンポーネントが表示されるはずです:

    • Video File(ビデオファイル)

    • Split Video(ビデオ分割)

    • Twelve Labs Pegasus Index Video(Twelve Labs Pegasus ビデオインデックス作成)

    • Twelve Labs Pegasus(Twelve Labs Pegasus)

    • Twelve Labs Text Embeddings(Twelve Labs テキスト埋め込み)

    • Twelve Labs Video Embeddings(Twelve Labs ビデオ埋め込み)

    • Convert AstraDB to Pegasus Input(AstraDBからPegasus入力への変換)

  3. これらのコンポーネントが表示されない場合は、Langflowが最新バージョンにアップデートされているか確認してください。


サンプル動画の準備

  1. このチュートリアルでのテスト用に、2〜3個の短いビデオクリップ(それぞれ1〜3分)を用意します。MP4、MOV、AVIなどの一般的なフォーマットがサポートされています。

  2. 学習時のパフォーマンスを最適化するために、視覚的コンテンツが明確で、シーンがはっきり分かれている動画を使用してください。これにより、ビデオ理解機能の効果をより実感できます。

  3. チュートリアル中に見つけやすいよう、サンプル動画専用のフォルダを作成します。



トラブルシューティングのヒント

TwelveLabsコンポーネントで問題が発生した場合:

  1. API認証: APIキーが正しく入力されており、有効期限が切れていないことを確認してください。

  2. ビデオ処理: ビデオがサポートされているフォーマットであり、サイズが大きすぎないことを確認してください。処理を高速化するため、まずは100MB未満のクリップから始めてください。

  3. コンポーネントの読み込み: コンポーネントが表示されない場合は、Langflowを再起動するか、コンソールでエラーメッセージを確認してください。

  4. 依存関係: 統合にはビデオ処理のためにFFmpegが必要です。まだインストールされていない場合は、システムのパッケージマネージャーを使用してインストールしてください。

環境がセットアップできたら、TwelveLabsとLangflowを使って強力なビデオ対応AIワークフローの構築を始める準備は完了です。



3 - LangflowにおけるTwelveLabsコンポーネントの理解

Langflowに、AIワークフローで高度なビデオ理解機能を可能にする7つの強力なTwelveLabsコンポーネントが加わりました。これらのコンポーネントは、動画の処理、埋め込みの生成、ビデオコンテンツのインデックス作成、そして視覚コンテンツとの自然言語によるインタラクションを実現するために相互に連携します。



3.1 - Video File(ビデオファイル)コンポーネント

Video Fileコンポーネントは、Langflowにおけるビデオ処理ワークフローのエントリポイントとして機能します。MP4、AVI、MOV、MKVなど、幅広い一般的なビデオフォーマットに対応しているため、様々なビデオソースに対して汎用性があります。実装は簡単で、ビデオファイルへのパスを指定するだけで、コンポーネントはファイルパスと重要なメタデータの両方を含むDataオブジェクトを返します。開発中のパフォーマンスを最適化するため、まずは100MB未満のビデオから始めることをお勧めします。



3.2 - Split Video(ビデオ分割)コンポーネント

この強力なコンポーネントは、長尺のビデオをインテリジェントに小さく扱いやすいクリップに分割(セグメント化)します。いくつかのパラメータを通じて分割プロセスを微調整できます。希望するクリップの長さを秒単位で設定し、最後のクリップの処理方法(切り捨て、前のコンテンツとのオーバーラップ、またはそのまま保持)を選択し、元のビデオをクリップと並行して保持するかどうかを決定します。このコンポーネントは、詳細なメタデータを含むDataオブジェクトのコレクションとしてクリップを出力します。検索および理解タスクで最良の結果を得るには、6秒から30秒の長さのクリップを作成することをお勧めします。



3.3 - Twelve Labs Pegasus Index Video(Twelve Labs Pegasus ビデオインデックス作成)コンポーネント

ビデオインデックス作成の中核を担うのが、Pegasus Index Videoコンポーネントです。TwelveLabsのPegasus APIと連携し、ビデオコンテンツの検索可能なインデックスを作成します。APIキーとビデオデータ(通常はSplit Videoコンポーネントから取得)を提供すると、固有のvideo_idindex_id識別子を含むインデックス付きビデオデータを生成します。このインデックス作成ステップは、Pegasusコンポーネントでクエリを実行する前に不可欠です。



3.4 - Twelve Labs Pegasus コンポーネント

Pegasusコンポーネントは、インデックス作成されたビデオコンテンツとの高度な自然言語インタラクションを可能にします。構成には、APIキー、クエリテキスト、および関連するビデオ識別子とインデックス識別子が必要です。インテリジェントな推論レイヤーとして機能し、クエリのコンテキストとビデオコンテンツの両方を処理して、対話的な応答を生成します。このコンポーネントは、自然言語の理解とビデオコンテンツ分析のギャップを真に埋めるものです。



3.5 - Twelve Labs Text Embeddings(Twelve Labs テキスト埋め込み)コンポーネント

TwelveLabsのMarengoモデルを活用して、このコンポーネントはテキスト入力からベクトル埋め込みを生成します。APIキーが必要で、現在はMarengo-retrieval-2.7モデルをサポートしています。出力はベクトルデータベースと完全に互換性があるため、洗練された検索システムに最適です。アプリケーションにおける一貫性を保つため、テキストコンポーネントとビデオコンポーネントの両方で同じ埋め込みモデルを使用することをお勧めします。



3.6 - Twelve Labs Video Embeddings(Twelve Labs ビデオ埋め込み)コンポーネント

テキスト版と同様に、Video Embeddingsコンポーネントはビデオコンテンツの密なベクトル表現を作成します。テキスト埋め込みコンポーネントと同じ構成パターンを共有しますが、ビデオファイルの処理に特化しています。得られる埋め込みにより、動画間またはテキストと動画コンテンツ間の強力なセマンティック類似性検索が可能になり、マルチモーダルアプリケーションの刺激的な可能性が広がります。



3.7 - Convert AstraDB to Pegasus Input(AstraDBからPegasus入力への変換)コンポーネント

この重要なコネクタコンポーネントは、ベクトルデータベースの操作とTwelveLabsコンポーネント間の架け橋となります。AstraDBからの検索結果を処理し、重要なvideo_idindex_idの情報を抽出して、Pegasusコンポーネントに適した形式に適切に変換します。このコンポーネントは、ビデオコンテンツを使用したRAG(検索拡張生成)パターンを実装する際に特に価値があり、ベクトルデータベースとビデオ処理パイプライン間のスムーズなデータフローを保証します。

これらのコンポーネントは、シームレスに連携するように設計されています。たとえば、以下のようにしてビデオ検索エンジンを作成できます:

  1. Video Fileでビデオを読み込む

  2. Split Videoで扱いやすいチャンクに分割する

  3. Pegasus Index Videoでインデックスを作成する

  4. Video Embeddingsで埋め込みを生成する

  5. AstraDBなどのベクトルデータベースに保存する

  6. Convert AstraDB to Pegasus Inputで関連するクリップを取得する

  7. Twelve Labs Pegasusで質問に答える

ワークフローを構築する際は、これらのコンポーネントを、読み込みや処理からインデックス作成、埋め込み、検索に至るまで、ビデオ理解の様々な側面を処理するビルディングブロックとして考えてください。



4 - Pegasusでのビデオチャット:最初の対話型ビデオワークフロー

このセクションでは、Twelve Labs Pegasusモデルを使用してビデオと「チャット」できる基本的なLangflowワークフローの作成手順を説明します。このフローは、ビデオ処理、インデックス作成、および自然言語クエリの直接的な統合を示しています。

参照画像に示されている「Pegasus Chat with Video」フローにより、ビデオをアップロードし、Twelve Labsによって自動的にインデックス化され、その後チャットインターフェースを通じてその内容について質問することができます。

以下の手順に従ってこのフローを構築してください:

  1. ビデオのアップロード

    • Video File コンポーネントをLangflowキャンバスにドラッグします。

    • Video File コンポーネントのプロパティで、サンプルビデオファイル(例:画像に示されている big_buck_bunny_720.mp4)をアップロードするためにクリックします。このコンポーネントがビデオを読み込み、他のコンポーネントで利用できるようにします。

  2. ビデオデータをPegasusに接続

    • Twelve Labs Pegasus コンポーネントをキャンバスに追加します。

    • Video File コンポーネントの Data 出力(赤丸)を、Twelve Labs Pegasus コンポーネントの Video Data 入力(赤丸)に接続します。これにより、Pegasusコンポーネントに処理対象のビデオを伝えます。

  3. Pegasusコンポーネントの構成

    • Twelve Labs Pegasus コンポーネントにおいて:

      • 指定されたフィールドに Twelve Labs APIキー を入力します。

      • Index Name (インデックス名)を指定します。これは、作成されるビデオインデックスに対して任意に選択した分かりやすい名前で構いません(例:「bunny-test-index」)。

      • Model はデフォルトで pegasus1.2 のようなPegasusモデルになります。特定のモデル要件がない限り、通常はそのままにしておいて構いません。

    • 開発者向け注意Index ID を指定せずに Video Data と Index Name を提供すると、Pegasusコンポーネントは新規ビデオに対してTwelve Labsでのビデオインデックス自動作成プロセスを開始します。このプロセス中にTwelve Labsによって video_id および index_id が作成されます。

  4. ユーザー入力の有効化

    • Chat Input コンポーネントをキャンバスに追加します。

    • Chat Input コンポーネントの出力を、Twelve Labs Pegasus コンポーネントの Prompt 入力(画像で「Receiving input」とラベル付けされた、青丸)に接続します。これにより、Pegasusモデルに送信される質問を入力できるようになります。

  5. チャット応答の表示

    • Chat Output コンポーネントを追加します。

    • Twelve Labs Pegasus コンポーネントの Message 出力(青丸)を、この Chat Output コンポーネントの入力に接続します。これにより、Pegasusモデルからの回答が表示されます。

  6. 任意:再チャット用のビデオIDの出力

    • その後のチャットセッションで同じビデオの再インデックス作成を避けるために、Twelve Labsによって生成された Video ID と Index ID をキャプチャできます。

    • もう一つの Chat Output コンポーネントを追加します。

    • Twelve Labs Pegasus コンポーネントからの Video ID 出力(青丸)を、この新しい Chat Output コンポーネントに接続します。

    • 開発者のヒント同じビデオを使用した将来のセッションでは、以前に生成された Video ID と Index ID を、それぞれ Twelve Labs Pegasus コンポーネントの Pegasus Video ID および Index ID フィールドに直接入力できます。これにより、再インデックス作成ステップをバイパスし、インタラクションを高速化できます。Video Data と Index Name のみを提供した場合は、再インデックス作成されます。

  7. プレイグラウンドでのテスト

    • Langflowプレイグラウンドを開きます(通常は右側のサイドバーにあるチャットバブルアイコンをクリックします)。

    • ビデオに関する質問をチャットインターフェースに入力します(例:「ビデオに写っている動物は何ですか?」、「主役を説明してください。」)。

    • Pegasusコンポーネントがビデオを処理し(初回の場合)、インデックスを作成し、ビデオの内容に基づいて質問に答えます。応答は接続された Chat Output に表示されます。

このシンプルながら強力なフローは、TwelveLabsのビデオ理解をインタラクティブなLangflowエージェントに直接統合する方法の基本例として役立ちます。これで、ほぼリアルタイムでビデオの内容について質問を投げ、回答を得ることができます。



5 - MarengoとAstraDBによるビデオ埋め込み:セマンティック・ビデオ・インデックスの構築

このセクションでは、TwelveLabsのMarengoモデルを使用してビデオ埋め込みを生成し、その後これらの埋め込みをDataStax AstraDBに保存するためのLangflowワークフローの構築方法を詳しく説明します。これは、ビデオライブラリに対するセマンティック検索を有効にしたり、ビデオコンテンツを使用した高度な検索拡張生成(RAG)システムを構築したりするために不可欠なステップです。

提供されている参照画像に示されているように、このワークフローは、ビデオを取り込んで埋め込みを生成し、これらの埋め込みをビデオのメタデータとともにAstraDBコレクションに保存します。


5.1 - 事前準備:AstraDBのセットアップ

Langflowのフローを構築する前に、AstraDB環境が準備できていることを確認してください:

  1. AstraDBデータベースの作成

    • まだお持ちでない場合は、サインアップして DataStax AstraDB 上に新しいサーバーレスデータベースを作成します。

    • データベースの初期作成については、AstraDBのセットアップガイドに従ってください。

  2. アプリケーション・トークンの生成

    • AstraDBコンソールの「Database Details(データベースの詳細)」セクションに移動します。

    • 適切な権限(例:Database Administrator、またはコレクションへの接続・読み書きを許可するロール)を持つアプリケーション・トークン(Application Token)を生成します。Langflowコンポーネントで必要になるため、このトークンを安全に保存してください。

  3. video_embeddings コレクションの作成

    • AstraDBデータベース内に新しいコレクションを作成します。名前は video_embeddings などにすると良いでしょう。

    • 極めて重要:このコレクションをベクトル検索(Vector Search)に対応するように構成します。これには通常、以下が含まれます:

      • コレクションがベクトルを保存するように指定すること。

      • ベクトルの次元数(Dimension)を 1024 に設定すること。これは、TwelveLabsのMarengoモデル(画像に示されている Marengo-retrieval-2.7 など)によって生成される埋め込みの次元数です。

    • ベクトル検索の有効化および次元数の設定に関する詳細な手順については、コレクション管理に関するAstraDBのドキュメントを参照してください。



5.2 - Langflowワークフローの構築

AstraDBがセットアップされたら、Langflowで以下のフローを構築します:

  1. 動画のアップロード

    • Video File コンポーネントをキャンバスにドラッグします。

    • 希望のビデオファイル(例:画像で使われている big_buck_bunny_720.mp4)をアップロードして構成します。このコンポーネントにより、ビデオデータがワークフローからアクセス可能になります。

  2. ビデオ埋め込み生成の構成

    • Twelve Labs Video Embeddings コンポーネントをキャンバスに追加します。

    • API Key フィールドに Twelve Labs APIキー を入力します。

    • Model が Marengo-retrieval-2.7 (または別の互換性のあるMarengoモデル)に設定されていることを確認します。このコンポーネントがビデオを処理し、密なベクトル埋め込みを生成します。

  3. 取り込み用AstraDBの構成

    • DS Astra DB コンポーネント(または画像に示されている Astra DB コンポーネント)をキャンバスに追加します。

    • 対応するフィールドに Astra DB アプリケーション・トークン を入力します。

    • ベクトル対応コレクションを作成した Database 名を指定します。

    • 作成した Collection 名(例: video_embeddings)を入力します。

  4. 埋め込みをAstraDBに接続

    • Twelve Labs Video Embeddings コンポーネントからの Embeddings 出力(緑丸)を、DS Astra DB コンポーネントの Embedding Model 入力(緑丸)に接続します。

    • 開発者向け注意:この接続は、AstraDBに対して受信データを埋め込みとして解釈する 方法 を伝えるものですが、埋め込み自体を提供するわけではありません。実際の埋め込みは、取り込まれるデータとともに渡されます。

  5. 取り込み用ビデオデータの接続

    • Video File コンポーネントからの Data 出力(赤丸)を、DS Astra DB コンポーネントの Ingest Data 入力(赤丸)に接続します。

    • 開発者向け注意:データが Ingest Data 入力に渡されると、このフローのように埋め込みモデルが構成されているか埋め込みコンポーネントに接続されている場合、Astra DB コンポーネントは入力データの埋め込みを期待または生成します。このセットアップでは、Twelve Labs Video Embeddings コンポーネントが埋め込み生成を処理し、その出力(元のデータと埋め込みを含む)が DS Astra DB に渡されます。

  6. フローを実行して埋め込みと取り込みを行う

    • プロセスを開始するには、通常、このチェーンの最後のコンポーネントである DS Astra DB コンポーネントを「実行」または有効化します。Langflowでは、コンポーネント上の再生/実行アイコンをクリックするか、より大きな実行可能グラフの一部としてフロー全体を構築して開始します。

    • 実行されると、Video File コンポーネントがビデオを読み込みます。次に、Twelve Labs Video Embeddings コンポーネントがこのビデオデータを受け取り(フローを通じて暗黙的に、または Video Data 入力が接続されている場合は明示的に受け取り。スクリーンショットのコンポーネントでは示されていませんが)、埋め込みを生成します。最後に、DS Astra DB コンポーネントがビデオデータ(上流コンポーネントあるいは自身の内部ロジックによって埋め込みが豊富化されたもの)を受け取り、指定されたAstraDBコレクションに取り込みます。

このフローを実行すると、ビデオの内容はAstraDBコレクション内のベクトル埋め込みとして表現され、セマンティック検索や類似性比較、RAGアプリケーションのナレッジベースとして活用できる状態になります。AstraDBコレクションに直接クエリを実行して、データが保存されているか確認することができます。



6 - ビデオコンテンツを使用した高度なRAG実装

ビデオのための堅牢な検索拡張生成(RAG)システムを構築するには、ビデオコンテンツの処理やインデックス作成から、セマンティック検索や文脈に応じた理解の有効化にいたるまで、いくつかの段階があります。このセクションは2つのパートに分かれています。まず、ビデオを分割し、そのクリップに対してTwelve Labs Pegasusでインデックスを作成し、Marengoで埋め込みを生成し、それらすべてをAstraDBに保存することで、ビデオデータを準備することに焦点を当てます。


パート1:ビデオを分割し、Pegasusでクリップのインデックスを作成し、埋め込みをAstra DBに保存する

この最初のフローは、画像に示されているように、ビデオRAGシステムの基礎となります。ソースビデオを管理可能なクリップに分割処理し、Pegasusからのインデックス情報でこれらのクリップを充実させ、Marengoを使用して対応するベクトル埋め込みを生成し、最後にこの包括的なデータセットを効率的な検索のためにAstraDBに保存します。

このデータ取り込み用パイプラインの構築手順は以下の通りです:

  1. ソースビデオのアップロード

    • まず、Video File コンポーネントをLangflowキャンバスにドラッグします。

    • 動画をアップロードして構成します(例:画像に示されている big_buck_bunny_720...)。このコンポーネントは生のビデオデータを出力します。

  2. 動画をクリップに分割

    • Split Video コンポーネントを追加します。

    • Video File コンポーネントからの Data 出力を、Split Video コンポーネントの Video Data 入力に接続します。

    • Split Video コンポーネントを構成します:

      • Clip Duration (seconds): 各ビデオセグメントの長さを定義するためにこれを設定します。画像では 6 秒になっており、きめ細かな分析に適した開始値です。コンテンツに合わせてこれを調整できます(たとえば、大まかなシーンセグメンテーションには30秒が適している場合があります)。

      • Last Clip Handling: クリップの長さを一定にするために、画像にある Overlap Previous(前のクリップと重ねる)のようなオプションを選択するか、お好みに応じて Truncate(切り捨て)や Keep Short(短いまま保持)を選択します。

      • Include Original Video: セグメントを扱うことになるRAG処理用クリップを作成する場合、通常はこれをオフ(画像のとおり)にします。

  3. Pegasusでクリップのインデックス作成

    • Twelve Labs Pegasus Index Video コンポーネントを導入します。

    • Split Video コンポーネントからの Video Clips 出力を、Twelve Labs Pegasus Index Video コンポーネントの Video Data 入力に接続します。このコンポーネントは各クリップを処理します。

    • コンポーネントの設定において:

      • Twelve Labs APIキーを入力します。

      • Index Name (例:画像の test index)を指定します。これにより、Twelve Labs内でインデックス作成されたコンテンツを整理しやすくなります。コンポーネントは Indexed Data を出力します。これには元のクリップデータと、Pegasusによって割り当てられた video_id および index_id が含まれます。

      • Model はデフォルトでPegasusモデル(例: pegasus1.2 )になります。

  4. Marengoによるビデオ埋め込みの生成

    • Twelve Labs Video Embeddings コンポーネントを追加します。

    • ここでも Twelve Labs APIキー を入力します。

    • Model に Marengo-retrieval-2.7 (画像に示されているモデル)か、お好みのMarengo埋め込みモデルを設定します。

    • 極めて重要:Twelve Labs Pegasus Index Video コンポーネントからの Indexed Data 出力を、Twelve Labs Video Embeddings コンポーネントの(暗黙的または明示的な)ビデオデータ入力に接続します。開発者向け注意:画像ではこのコンポーネントに直接「Video Data」という名前の入力が表示されていませんが、埋め込みコンポーネントは処理対象のビデオクリップを受け取る必要があります。Indexed Data がこれらのクリップを運びます。

  5. 保存先AstraDBの構成

    • DS Astra DB コンポーネントをキャンバスに配置します。

    • Astra DB アプリケーション・トークン を入力します。

    • ビデオデータと埋め込みが保存される、ターゲットとなる Database (例: video_embeddings)および Collection (例: video_embeddings)を選択します。このコレクションが、使用するMarengoモデル(Marengo-retrieval-2.7 の場合は1024)に一致する次元数で、ベクトル検索向けに構成されていることを確認してください。

  6. 埋め込みとデータをAstraDBに接続

    • Twelve Labs Video Embeddings コンポーネントからの Embeddings 出力を、DS Astra DB コンポーネントの Embedding Model 入力に接続します。これにより、AstraDBに埋め込みベクトルの解釈方法を伝えます。

    • Twelve Labs Pegasus Index Video コンポーネントからの Indexed Data 出力を、DS Astra DB コンポーネントの Ingest Data 入力に接続します。これにより、ビデオクリップ(Pegasusの video_id と index_id で充実化されたデータ)と、生成されたそれらの埋め込みが、保存先へと送信されます。

  7. 取り込みフローの実行

    • フローを実行します。Video File が読み込まれ、Split Video によって分割されます。各クリップは、インデックス作成のために Twelve Labs Pegasus Index Video に送信されます。得られた Indexed Data (クリップ + Pegasus ID)は Twelve Labs Video Embeddings に渡され、Marengo埋め込みが生成されます。最後に、DS Astra DB コンポーネントがこの包括的なデータ(クリップ、Pegasusインデックス情報、Marengoベクトル埋め込み)を、指定されたコレクションに取り込みます。

このフローが完了すると、AstraDBコレクションに、個々のベクトル埋め込みおよびPegasusの識別子が紐付けられた、インデックス作成済みビデオクリップが含まれ、RAGシステムの取得パートへの準備が整います。



パート2:ビデオ埋め込みへのクエリ実行と、Pegasusを使用したビデオチャット

ビデオクリップが処理され、Pegasusによってインデックスが作成され、それらのMarengo埋め込みがAstraDBに保存され終わったら(パート1で詳述)、この2つ目のフローはRAGの「取得(ミリバール)」と「生成」の側面を示します。参照画像にあるように、まずユーザーのテキスト質問(クエリ)を埋め込みに変換し、それを使用して関連するビデオクリップをAstraDBから検索します。これらのクリップからの情報は、コンテキストに基づいた回答を生成するためにTwelve Labs Pegasusモデルに渡されます。

以下はこの取得および質問応答パイプラインの構築手順です:

  1. ユーザーのクエリ入力と埋め込み

    • Chat Input コンポーネントをキャンバスに追加します。これは、ユーザーが質問を入力する場所になります。

    • Twelve Labs Text Embeddings コンポーネントを追加します。

      • Twelve Labs APIキーを入力します。

      • Model に Marengo-retrieval-2.7 (またはパート1でビデオクリップの埋め込みに使用したのと同じMarengoモデル)を設定します。

    • Chat Input コンポーネントの出力を、Twelve Labs Text Embeddings コンポーネントのテキスト入力に接続します。これにより、ユーザーのクエリがベクトル埋め込みに確実に変換されます。

  2. AstraDBでのセマンティック検索

    • DS Astra DB コンポーネントを追加します。

      • Astra DB アプリケーション・トークン を入力します。

      • ビデオクリップの埋め込みが保存されている Database (例: video_embeddings)および Collection (例: video_embeddings)を選択します。

      • Twelve Labs Text Embeddings コンポーネントからの Embeddings 出力を、DS Astra DB コンポーネントの Embedding Model 入力に接続します。これにより、AstraDBにクエリ埋め込みが提供されます。

      • Chat Input コンポーネントの出力(生のテキストクエリ)を、DS Astra DB コンポーネントの Search Query 入力に接続します。開発者向け注意:クエリの埋め込みは Embedding Model に渡されますが、Search Query 入力自体は、構成によってはキーワードフィルタリングやその他のハイブリッド検索戦略、あるいは単に提供されたクエリ埋め込みを使用して何に対してベクトル検索を行うかを知るために、AstraDBによって利用される場合があります。

    • DS Astra DB コンポーネントは、コレクション内で類似性検索を実行し、最も関連性の高いビデオクリップ(またはパート1から保存されている場合は、video_id や index_id を含むメタデータ)である Search Results を返します。

  3. AstraDBの結果をPegasus入力用に変換

    • Convert AstraDB to Pegasus Input コンポーネントを追加します。

    • DS Astra DB コンポーネントからの Search Results 出力(多くの場合ドキュメントのメタデータを含む赤丸)を、このコンバータコンポーネントの AstraDB Results 入力に接続します。

    • このユーティリティコンポーネントは非常に重要です。AstraDBの検索結果から Index ID と Video ID を抽出します。これは、Pegasusコンポーネントが「チャット」対象となる特定のインデックス作成済みビデオセグメントを識別するために必須となります。

  4. 文脈に応じたQ&Aに向けてPegasusを準備

    • Twelve Labs Pegasus コンポーネントを追加します。

      • Twelve Labs APIキーを入力します。

      • 希望のPegasusの Model を選択します(デフォルトは pegasus1.2 です)。

    • Convert AstraDB to Pegasus Input コンポーネントからの Index ID 出力を、Twelve Labs Pegasus コンポーネントの Index ID 入力(「Receiving input」とラベルされた端子)に接続します。

    • Convert AstraDB to Pegasus Input コンポーネントからの Video ID 出力を、Twelve Labs Pegasus コンポーネントの Pegasus Video ID 入力(「Receiving input」とラベルされた端子)に接続します。

    • 開発者向け注意:ビデオデータがその場で直接インデックス作成のために提供される「Pegasus Chat with Video」フローとは異なり、ここではAstraDBから取得した すでにインデックス作成されている コンテンツの特定の Pegasus Video ID と Index ID を提供しています。Pegasusコンポーネントの Video Data 入力はこのRAG検索フローでは未接続のままになります。

  5. 元のクエリをPegasusに渡す

    • 元の Chat Input コンポーネント(ユーザーの質問を保持しているもの)の出力を、Twelve Labs Pegasus コンポーネントの Prompt 入力(「Receiving input」とラベルされた端子)に直接接続します。これにより、Pegasusは取得したビデオセグメントの文脈を使用して、どの質問に答えるべきかを認識できます。

  6. Pegasusの応答を表示する

    • Chat Output コンポーネントを追加します。

    • Twelve Labs Pegasus コンポーネントからの Message 出力を、この Chat Output コンポーネントの入力に接続します。これにより、AIが生成した回答が表示されます。

  7. ビデオRAGシステムのテスト

    • Langflowのプレイグラウンド(チャットインターフェース)を開きます。

    • パート1で処理したビデオコンテンツに関連する質問を入力します(例:「冒頭でウサギに何が起こりますか?」、「蝶が出てくるシーンを見せてください。」)。

    • フローは以下のように実行されます

      1. あなたの質問が Chat Input によってキャプチャされます。

      2. Twelve Labs Text Embeddings が質問をベクトルに変換します。

      3. DS Astra DB がそのベクトルを使用して、データベースから最もセマンティックに類似したビデオクリップを見つけます。

      4. Convert AstraDB to Pegasus Input が、上位に取得されたクリップの video_id および index_id を抽出します。

      5. Twelve Labs Pegasus がこれらのID(どのビデオセグメントに焦点を当てるかを指示)と元の質問(そのセグメントに関して何を回答すべきかを指示)を受け取ります。

      6. Pegasusが、あなたの質問に関連する指定のビデオセグメントを分析し、回答を生成します。

      7. 回答が Chat Output を介して表示されます。

この2パートからなるRAGアーキテクチャにより、大規模なビデオライブラリから関連する重要な瞬間を対話形式で取得し、それを基にやり取りできる、洗練されたスケーラブルなビデオ理解アプリケーションを構築できます。



7 - 特別なユースケースとパフォーマンスのベストプラクティス

TwelveLabsとLangflowの連携によるビデオ機能は、価値の高いビジネスアプリケーションを数多く展開させます。不適切な動画セグメントを自動的にフラグ付け、または要約するコンテンツモデレーションシステム、大規模なアーカイブから関連のある瞬間を表面化させるビデオ検索エンジン、さらには動画、テキスト、画像の理解をブレンドしたマルチモーダルアシスタントを構築し、より豊かなユーザーエクスペリエンスを提供できます。これらのユースケースは、動画に対する迅速な洞察や自動分析が、生産性、コンプライアンス、ユーザー維持を直接左右する、メディア、教育、カスタマーサポートなどの業界に最適です。

ビデオ対応ワークフローで信頼性の高いビジネス結果を提供するには、パフォーマンスとコストの最適化に注力してください。動画セグメントをバッチ処理する、あるいは不要な再処理を防ぐためにキャッシュを使用することで、APIのフットプリントを抑え、また詳細度と計算効率のバランスが取れるクリップの長さを選びましょう。ビデオライブラリの増加に伴い高速なクエリ応答を維持するため、AstraDBと埋め込みパイプラインを監視し、より精密な結果を得るために、ベクトル類似性にメタデータフィルタリングを組み合わせたハイブリッド検索戦略を検討してください。

これらのベストプラクティスに従うことで、ビデオAIソリューションにおけるスケーラビリティ、正確性、費用対効果を最大化できます。これにより、組織は大規模なビデオから実行可能な洞察を抽出し、市場における競争優位性を維持することができます。



8 - まとめと次のステップ

おめでとうございます。これであなたもビデオマスターです! 🎬✨

TwelveLabsとLangflowの強力なコンビを使用して、本当にビデオを見て理解するAIエージェントを構築する力をアンロックできました。次世代のスマートなビデオ検索エンジンを作成する、大規模なコンテンツモデレーション、あるいはマルチモーダルアシスタントの開発など、生のフッテージを実用的な洞察(そしてちょっとした魔法のような体験)に変えるツールが手に入りました。

それでは、次に何をしましょう?

独自の創造的なフローを実験したり、さまざまな種類のビデオで限界に挑戦したり、最もクールなプロジェクトをコミュニティで共有してみましょう。TwelveLabsとLangflowのロードマップで発表される刺激的な新機能に注目し、ディスカッションへの参加もお忘れなく。あなたのアイデアとフィードバックが、ビデオAIの未来を形作ります!

さあ、素晴らしいものを構築しに出発しましょう。ビデオの宇宙があなたの探索を待っています! 🚀🎥


追加リソース

Langflow/DataStaxチーム(Melissa HerreraEric HareGokul KrishnaaAlejandro Cantarero)のコラボレーションに深く感謝いたします!

ワークフロー全体を紹介しているMelissaによる以下のチュートリアルもぜひご覧ください 👇


1 - はじめにと概要

ビデオAIのワイルドな世界へようこそ!ここでは、あなた自身と同じように、アプリが動画で何が起こっているかを「見る」ことができます! 🎬

このチュートリアルは、TwelveLabsLangflowを使って次世代のビデオパワードエージェントを構築するためのゴールインチケットです。コンピュータビジョンの博士号は必要ありません。好奇心といくつかのビデオクリップさえあれば準備完了です。


なぜ重要なのか?

TwelveLabsは「頭脳」を提供します。当社のPegasus(ペガサス)およびMarengo(マレンゴ)モデルにより、コードがビデオコンテンツを理解、インデックス化、チャットできるようになり、質問への回答、重要な瞬間の特定、スマートな要約生成などが可能になります。Langflowはあなたの遊び場です。アイデアをAIワークフローに変換し、即座にAPIとして提供できるビジュアルビルダーです。これらを組み合わせることで、ビデオ検索エンジン、コンテンツモデレーションボット、あるいはテキスト、画像、動画を処理できるマルチモーダルアシスタントなど、ビデオAIソリューションの作成、テスト、デプロイが簡単になります。


内容は?

このチュートリアルでは、初心者からビデオのプロへと成長できます。環境をセットアップし、LangflowにおけるTwelveLabsコンポーネントをマスターし、ビデオとのチャット、ビデオ埋め込み(Embeddings)の生成と保存、さらにはビデオライブラリから質問を取得して回答する本格的なRAGシステムの構築といった実践的なフローを構築します。その過程で、ベストプラクティスを学び、画期的なユースケースを発見し、独自のビデオ対応アプリを構築するインスピレーションを得ることができます。

それでは、ポップコーンを用意し、コードエディタを立ち上げて、AIワークフローを真のビデオススマートにしていきましょう! 🚀🍿



2 - 開発環境のセットアップ

TwelveLabsとLangflowで開発を開始するために環境を準備しましょう。



Langflowのインストール

  1. pipを使用してLangflowをインストールします:pip install langflow

  2. Langflowサーバーを起動します:langflow run

  3. ブラウザで http://127.0.0.1:7860 にアクセスし、LangflowのUIを開きます。


TwelveLabs API認証情報の取得

  1. まだアカウントをお持ちでない場合は、 TwelveLabsプラットフォーム でアカウントを作成します。

  2. プロファイル設定に移動し、新しいAPIキーを作成します。

  3. TwelveLabsサービスへのリクエストの認証に必要となるため、APIキーを書き留めておきます。



TwelveLabsコンポーネントの確認

  1. Langflowのインターフェースで、「+」ボタンをクリックして新しいフローを作成します。

  2. コンポーネントサイドバーを開き、「TwelveLabs」を検索します。以下のコンポーネントが表示されるはずです:

    • Video File(ビデオファイル)

    • Split Video(ビデオ分割)

    • Twelve Labs Pegasus Index Video(Twelve Labs Pegasus ビデオインデックス作成)

    • Twelve Labs Pegasus(Twelve Labs Pegasus)

    • Twelve Labs Text Embeddings(Twelve Labs テキスト埋め込み)

    • Twelve Labs Video Embeddings(Twelve Labs ビデオ埋め込み)

    • Convert AstraDB to Pegasus Input(AstraDBからPegasus入力への変換)

  3. これらのコンポーネントが表示されない場合は、Langflowが最新バージョンにアップデートされているか確認してください。


サンプル動画の準備

  1. このチュートリアルでのテスト用に、2〜3個の短いビデオクリップ(それぞれ1〜3分)を用意します。MP4、MOV、AVIなどの一般的なフォーマットがサポートされています。

  2. 学習時のパフォーマンスを最適化するために、視覚的コンテンツが明確で、シーンがはっきり分かれている動画を使用してください。これにより、ビデオ理解機能の効果をより実感できます。

  3. チュートリアル中に見つけやすいよう、サンプル動画専用のフォルダを作成します。



トラブルシューティングのヒント

TwelveLabsコンポーネントで問題が発生した場合:

  1. API認証: APIキーが正しく入力されており、有効期限が切れていないことを確認してください。

  2. ビデオ処理: ビデオがサポートされているフォーマットであり、サイズが大きすぎないことを確認してください。処理を高速化するため、まずは100MB未満のクリップから始めてください。

  3. コンポーネントの読み込み: コンポーネントが表示されない場合は、Langflowを再起動するか、コンソールでエラーメッセージを確認してください。

  4. 依存関係: 統合にはビデオ処理のためにFFmpegが必要です。まだインストールされていない場合は、システムのパッケージマネージャーを使用してインストールしてください。

環境がセットアップできたら、TwelveLabsとLangflowを使って強力なビデオ対応AIワークフローの構築を始める準備は完了です。



3 - LangflowにおけるTwelveLabsコンポーネントの理解

Langflowに、AIワークフローで高度なビデオ理解機能を可能にする7つの強力なTwelveLabsコンポーネントが加わりました。これらのコンポーネントは、動画の処理、埋め込みの生成、ビデオコンテンツのインデックス作成、そして視覚コンテンツとの自然言語によるインタラクションを実現するために相互に連携します。



3.1 - Video File(ビデオファイル)コンポーネント

Video Fileコンポーネントは、Langflowにおけるビデオ処理ワークフローのエントリポイントとして機能します。MP4、AVI、MOV、MKVなど、幅広い一般的なビデオフォーマットに対応しているため、様々なビデオソースに対して汎用性があります。実装は簡単で、ビデオファイルへのパスを指定するだけで、コンポーネントはファイルパスと重要なメタデータの両方を含むDataオブジェクトを返します。開発中のパフォーマンスを最適化するため、まずは100MB未満のビデオから始めることをお勧めします。



3.2 - Split Video(ビデオ分割)コンポーネント

この強力なコンポーネントは、長尺のビデオをインテリジェントに小さく扱いやすいクリップに分割(セグメント化)します。いくつかのパラメータを通じて分割プロセスを微調整できます。希望するクリップの長さを秒単位で設定し、最後のクリップの処理方法(切り捨て、前のコンテンツとのオーバーラップ、またはそのまま保持)を選択し、元のビデオをクリップと並行して保持するかどうかを決定します。このコンポーネントは、詳細なメタデータを含むDataオブジェクトのコレクションとしてクリップを出力します。検索および理解タスクで最良の結果を得るには、6秒から30秒の長さのクリップを作成することをお勧めします。



3.3 - Twelve Labs Pegasus Index Video(Twelve Labs Pegasus ビデオインデックス作成)コンポーネント

ビデオインデックス作成の中核を担うのが、Pegasus Index Videoコンポーネントです。TwelveLabsのPegasus APIと連携し、ビデオコンテンツの検索可能なインデックスを作成します。APIキーとビデオデータ(通常はSplit Videoコンポーネントから取得)を提供すると、固有のvideo_idindex_id識別子を含むインデックス付きビデオデータを生成します。このインデックス作成ステップは、Pegasusコンポーネントでクエリを実行する前に不可欠です。



3.4 - Twelve Labs Pegasus コンポーネント

Pegasusコンポーネントは、インデックス作成されたビデオコンテンツとの高度な自然言語インタラクションを可能にします。構成には、APIキー、クエリテキスト、および関連するビデオ識別子とインデックス識別子が必要です。インテリジェントな推論レイヤーとして機能し、クエリのコンテキストとビデオコンテンツの両方を処理して、対話的な応答を生成します。このコンポーネントは、自然言語の理解とビデオコンテンツ分析のギャップを真に埋めるものです。



3.5 - Twelve Labs Text Embeddings(Twelve Labs テキスト埋め込み)コンポーネント

TwelveLabsのMarengoモデルを活用して、このコンポーネントはテキスト入力からベクトル埋め込みを生成します。APIキーが必要で、現在はMarengo-retrieval-2.7モデルをサポートしています。出力はベクトルデータベースと完全に互換性があるため、洗練された検索システムに最適です。アプリケーションにおける一貫性を保つため、テキストコンポーネントとビデオコンポーネントの両方で同じ埋め込みモデルを使用することをお勧めします。



3.6 - Twelve Labs Video Embeddings(Twelve Labs ビデオ埋め込み)コンポーネント

テキスト版と同様に、Video Embeddingsコンポーネントはビデオコンテンツの密なベクトル表現を作成します。テキスト埋め込みコンポーネントと同じ構成パターンを共有しますが、ビデオファイルの処理に特化しています。得られる埋め込みにより、動画間またはテキストと動画コンテンツ間の強力なセマンティック類似性検索が可能になり、マルチモーダルアプリケーションの刺激的な可能性が広がります。



3.7 - Convert AstraDB to Pegasus Input(AstraDBからPegasus入力への変換)コンポーネント

この重要なコネクタコンポーネントは、ベクトルデータベースの操作とTwelveLabsコンポーネント間の架け橋となります。AstraDBからの検索結果を処理し、重要なvideo_idindex_idの情報を抽出して、Pegasusコンポーネントに適した形式に適切に変換します。このコンポーネントは、ビデオコンテンツを使用したRAG(検索拡張生成)パターンを実装する際に特に価値があり、ベクトルデータベースとビデオ処理パイプライン間のスムーズなデータフローを保証します。

これらのコンポーネントは、シームレスに連携するように設計されています。たとえば、以下のようにしてビデオ検索エンジンを作成できます:

  1. Video Fileでビデオを読み込む

  2. Split Videoで扱いやすいチャンクに分割する

  3. Pegasus Index Videoでインデックスを作成する

  4. Video Embeddingsで埋め込みを生成する

  5. AstraDBなどのベクトルデータベースに保存する

  6. Convert AstraDB to Pegasus Inputで関連するクリップを取得する

  7. Twelve Labs Pegasusで質問に答える

ワークフローを構築する際は、これらのコンポーネントを、読み込みや処理からインデックス作成、埋め込み、検索に至るまで、ビデオ理解の様々な側面を処理するビルディングブロックとして考えてください。



4 - Pegasusでのビデオチャット:最初の対話型ビデオワークフロー

このセクションでは、Twelve Labs Pegasusモデルを使用してビデオと「チャット」できる基本的なLangflowワークフローの作成手順を説明します。このフローは、ビデオ処理、インデックス作成、および自然言語クエリの直接的な統合を示しています。

参照画像に示されている「Pegasus Chat with Video」フローにより、ビデオをアップロードし、Twelve Labsによって自動的にインデックス化され、その後チャットインターフェースを通じてその内容について質問することができます。

以下の手順に従ってこのフローを構築してください:

  1. ビデオのアップロード

    • Video File コンポーネントをLangflowキャンバスにドラッグします。

    • Video File コンポーネントのプロパティで、サンプルビデオファイル(例:画像に示されている big_buck_bunny_720.mp4)をアップロードするためにクリックします。このコンポーネントがビデオを読み込み、他のコンポーネントで利用できるようにします。

  2. ビデオデータをPegasusに接続

    • Twelve Labs Pegasus コンポーネントをキャンバスに追加します。

    • Video File コンポーネントの Data 出力(赤丸)を、Twelve Labs Pegasus コンポーネントの Video Data 入力(赤丸)に接続します。これにより、Pegasusコンポーネントに処理対象のビデオを伝えます。

  3. Pegasusコンポーネントの構成

    • Twelve Labs Pegasus コンポーネントにおいて:

      • 指定されたフィールドに Twelve Labs APIキー を入力します。

      • Index Name (インデックス名)を指定します。これは、作成されるビデオインデックスに対して任意に選択した分かりやすい名前で構いません(例:「bunny-test-index」)。

      • Model はデフォルトで pegasus1.2 のようなPegasusモデルになります。特定のモデル要件がない限り、通常はそのままにしておいて構いません。

    • 開発者向け注意Index ID を指定せずに Video Data と Index Name を提供すると、Pegasusコンポーネントは新規ビデオに対してTwelve Labsでのビデオインデックス自動作成プロセスを開始します。このプロセス中にTwelve Labsによって video_id および index_id が作成されます。

  4. ユーザー入力の有効化

    • Chat Input コンポーネントをキャンバスに追加します。

    • Chat Input コンポーネントの出力を、Twelve Labs Pegasus コンポーネントの Prompt 入力(画像で「Receiving input」とラベル付けされた、青丸)に接続します。これにより、Pegasusモデルに送信される質問を入力できるようになります。

  5. チャット応答の表示

    • Chat Output コンポーネントを追加します。

    • Twelve Labs Pegasus コンポーネントの Message 出力(青丸)を、この Chat Output コンポーネントの入力に接続します。これにより、Pegasusモデルからの回答が表示されます。

  6. 任意:再チャット用のビデオIDの出力

    • その後のチャットセッションで同じビデオの再インデックス作成を避けるために、Twelve Labsによって生成された Video ID と Index ID をキャプチャできます。

    • もう一つの Chat Output コンポーネントを追加します。

    • Twelve Labs Pegasus コンポーネントからの Video ID 出力(青丸)を、この新しい Chat Output コンポーネントに接続します。

    • 開発者のヒント同じビデオを使用した将来のセッションでは、以前に生成された Video ID と Index ID を、それぞれ Twelve Labs Pegasus コンポーネントの Pegasus Video ID および Index ID フィールドに直接入力できます。これにより、再インデックス作成ステップをバイパスし、インタラクションを高速化できます。Video Data と Index Name のみを提供した場合は、再インデックス作成されます。

  7. プレイグラウンドでのテスト

    • Langflowプレイグラウンドを開きます(通常は右側のサイドバーにあるチャットバブルアイコンをクリックします)。

    • ビデオに関する質問をチャットインターフェースに入力します(例:「ビデオに写っている動物は何ですか?」、「主役を説明してください。」)。

    • Pegasusコンポーネントがビデオを処理し(初回の場合)、インデックスを作成し、ビデオの内容に基づいて質問に答えます。応答は接続された Chat Output に表示されます。

このシンプルながら強力なフローは、TwelveLabsのビデオ理解をインタラクティブなLangflowエージェントに直接統合する方法の基本例として役立ちます。これで、ほぼリアルタイムでビデオの内容について質問を投げ、回答を得ることができます。



5 - MarengoとAstraDBによるビデオ埋め込み:セマンティック・ビデオ・インデックスの構築

このセクションでは、TwelveLabsのMarengoモデルを使用してビデオ埋め込みを生成し、その後これらの埋め込みをDataStax AstraDBに保存するためのLangflowワークフローの構築方法を詳しく説明します。これは、ビデオライブラリに対するセマンティック検索を有効にしたり、ビデオコンテンツを使用した高度な検索拡張生成(RAG)システムを構築したりするために不可欠なステップです。

提供されている参照画像に示されているように、このワークフローは、ビデオを取り込んで埋め込みを生成し、これらの埋め込みをビデオのメタデータとともにAstraDBコレクションに保存します。


5.1 - 事前準備:AstraDBのセットアップ

Langflowのフローを構築する前に、AstraDB環境が準備できていることを確認してください:

  1. AstraDBデータベースの作成

    • まだお持ちでない場合は、サインアップして DataStax AstraDB 上に新しいサーバーレスデータベースを作成します。

    • データベースの初期作成については、AstraDBのセットアップガイドに従ってください。

  2. アプリケーション・トークンの生成

    • AstraDBコンソールの「Database Details(データベースの詳細)」セクションに移動します。

    • 適切な権限(例:Database Administrator、またはコレクションへの接続・読み書きを許可するロール)を持つアプリケーション・トークン(Application Token)を生成します。Langflowコンポーネントで必要になるため、このトークンを安全に保存してください。

  3. video_embeddings コレクションの作成

    • AstraDBデータベース内に新しいコレクションを作成します。名前は video_embeddings などにすると良いでしょう。

    • 極めて重要:このコレクションをベクトル検索(Vector Search)に対応するように構成します。これには通常、以下が含まれます:

      • コレクションがベクトルを保存するように指定すること。

      • ベクトルの次元数(Dimension)を 1024 に設定すること。これは、TwelveLabsのMarengoモデル(画像に示されている Marengo-retrieval-2.7 など)によって生成される埋め込みの次元数です。

    • ベクトル検索の有効化および次元数の設定に関する詳細な手順については、コレクション管理に関するAstraDBのドキュメントを参照してください。



5.2 - Langflowワークフローの構築

AstraDBがセットアップされたら、Langflowで以下のフローを構築します:

  1. 動画のアップロード

    • Video File コンポーネントをキャンバスにドラッグします。

    • 希望のビデオファイル(例:画像で使われている big_buck_bunny_720.mp4)をアップロードして構成します。このコンポーネントにより、ビデオデータがワークフローからアクセス可能になります。

  2. ビデオ埋め込み生成の構成

    • Twelve Labs Video Embeddings コンポーネントをキャンバスに追加します。

    • API Key フィールドに Twelve Labs APIキー を入力します。

    • Model が Marengo-retrieval-2.7 (または別の互換性のあるMarengoモデル)に設定されていることを確認します。このコンポーネントがビデオを処理し、密なベクトル埋め込みを生成します。

  3. 取り込み用AstraDBの構成

    • DS Astra DB コンポーネント(または画像に示されている Astra DB コンポーネント)をキャンバスに追加します。

    • 対応するフィールドに Astra DB アプリケーション・トークン を入力します。

    • ベクトル対応コレクションを作成した Database 名を指定します。

    • 作成した Collection 名(例: video_embeddings)を入力します。

  4. 埋め込みをAstraDBに接続

    • Twelve Labs Video Embeddings コンポーネントからの Embeddings 出力(緑丸)を、DS Astra DB コンポーネントの Embedding Model 入力(緑丸)に接続します。

    • 開発者向け注意:この接続は、AstraDBに対して受信データを埋め込みとして解釈する 方法 を伝えるものですが、埋め込み自体を提供するわけではありません。実際の埋め込みは、取り込まれるデータとともに渡されます。

  5. 取り込み用ビデオデータの接続

    • Video File コンポーネントからの Data 出力(赤丸)を、DS Astra DB コンポーネントの Ingest Data 入力(赤丸)に接続します。

    • 開発者向け注意:データが Ingest Data 入力に渡されると、このフローのように埋め込みモデルが構成されているか埋め込みコンポーネントに接続されている場合、Astra DB コンポーネントは入力データの埋め込みを期待または生成します。このセットアップでは、Twelve Labs Video Embeddings コンポーネントが埋め込み生成を処理し、その出力(元のデータと埋め込みを含む)が DS Astra DB に渡されます。

  6. フローを実行して埋め込みと取り込みを行う

    • プロセスを開始するには、通常、このチェーンの最後のコンポーネントである DS Astra DB コンポーネントを「実行」または有効化します。Langflowでは、コンポーネント上の再生/実行アイコンをクリックするか、より大きな実行可能グラフの一部としてフロー全体を構築して開始します。

    • 実行されると、Video File コンポーネントがビデオを読み込みます。次に、Twelve Labs Video Embeddings コンポーネントがこのビデオデータを受け取り(フローを通じて暗黙的に、または Video Data 入力が接続されている場合は明示的に受け取り。スクリーンショットのコンポーネントでは示されていませんが)、埋め込みを生成します。最後に、DS Astra DB コンポーネントがビデオデータ(上流コンポーネントあるいは自身の内部ロジックによって埋め込みが豊富化されたもの)を受け取り、指定されたAstraDBコレクションに取り込みます。

このフローを実行すると、ビデオの内容はAstraDBコレクション内のベクトル埋め込みとして表現され、セマンティック検索や類似性比較、RAGアプリケーションのナレッジベースとして活用できる状態になります。AstraDBコレクションに直接クエリを実行して、データが保存されているか確認することができます。



6 - ビデオコンテンツを使用した高度なRAG実装

ビデオのための堅牢な検索拡張生成(RAG)システムを構築するには、ビデオコンテンツの処理やインデックス作成から、セマンティック検索や文脈に応じた理解の有効化にいたるまで、いくつかの段階があります。このセクションは2つのパートに分かれています。まず、ビデオを分割し、そのクリップに対してTwelve Labs Pegasusでインデックスを作成し、Marengoで埋め込みを生成し、それらすべてをAstraDBに保存することで、ビデオデータを準備することに焦点を当てます。


パート1:ビデオを分割し、Pegasusでクリップのインデックスを作成し、埋め込みをAstra DBに保存する

この最初のフローは、画像に示されているように、ビデオRAGシステムの基礎となります。ソースビデオを管理可能なクリップに分割処理し、Pegasusからのインデックス情報でこれらのクリップを充実させ、Marengoを使用して対応するベクトル埋め込みを生成し、最後にこの包括的なデータセットを効率的な検索のためにAstraDBに保存します。

このデータ取り込み用パイプラインの構築手順は以下の通りです:

  1. ソースビデオのアップロード

    • まず、Video File コンポーネントをLangflowキャンバスにドラッグします。

    • 動画をアップロードして構成します(例:画像に示されている big_buck_bunny_720...)。このコンポーネントは生のビデオデータを出力します。

  2. 動画をクリップに分割

    • Split Video コンポーネントを追加します。

    • Video File コンポーネントからの Data 出力を、Split Video コンポーネントの Video Data 入力に接続します。

    • Split Video コンポーネントを構成します:

      • Clip Duration (seconds): 各ビデオセグメントの長さを定義するためにこれを設定します。画像では 6 秒になっており、きめ細かな分析に適した開始値です。コンテンツに合わせてこれを調整できます(たとえば、大まかなシーンセグメンテーションには30秒が適している場合があります)。

      • Last Clip Handling: クリップの長さを一定にするために、画像にある Overlap Previous(前のクリップと重ねる)のようなオプションを選択するか、お好みに応じて Truncate(切り捨て)や Keep Short(短いまま保持)を選択します。

      • Include Original Video: セグメントを扱うことになるRAG処理用クリップを作成する場合、通常はこれをオフ(画像のとおり)にします。

  3. Pegasusでクリップのインデックス作成

    • Twelve Labs Pegasus Index Video コンポーネントを導入します。

    • Split Video コンポーネントからの Video Clips 出力を、Twelve Labs Pegasus Index Video コンポーネントの Video Data 入力に接続します。このコンポーネントは各クリップを処理します。

    • コンポーネントの設定において:

      • Twelve Labs APIキーを入力します。

      • Index Name (例:画像の test index)を指定します。これにより、Twelve Labs内でインデックス作成されたコンテンツを整理しやすくなります。コンポーネントは Indexed Data を出力します。これには元のクリップデータと、Pegasusによって割り当てられた video_id および index_id が含まれます。

      • Model はデフォルトでPegasusモデル(例: pegasus1.2 )になります。

  4. Marengoによるビデオ埋め込みの生成

    • Twelve Labs Video Embeddings コンポーネントを追加します。

    • ここでも Twelve Labs APIキー を入力します。

    • Model に Marengo-retrieval-2.7 (画像に示されているモデル)か、お好みのMarengo埋め込みモデルを設定します。

    • 極めて重要:Twelve Labs Pegasus Index Video コンポーネントからの Indexed Data 出力を、Twelve Labs Video Embeddings コンポーネントの(暗黙的または明示的な)ビデオデータ入力に接続します。開発者向け注意:画像ではこのコンポーネントに直接「Video Data」という名前の入力が表示されていませんが、埋め込みコンポーネントは処理対象のビデオクリップを受け取る必要があります。Indexed Data がこれらのクリップを運びます。

  5. 保存先AstraDBの構成

    • DS Astra DB コンポーネントをキャンバスに配置します。

    • Astra DB アプリケーション・トークン を入力します。

    • ビデオデータと埋め込みが保存される、ターゲットとなる Database (例: video_embeddings)および Collection (例: video_embeddings)を選択します。このコレクションが、使用するMarengoモデル(Marengo-retrieval-2.7 の場合は1024)に一致する次元数で、ベクトル検索向けに構成されていることを確認してください。

  6. 埋め込みとデータをAstraDBに接続

    • Twelve Labs Video Embeddings コンポーネントからの Embeddings 出力を、DS Astra DB コンポーネントの Embedding Model 入力に接続します。これにより、AstraDBに埋め込みベクトルの解釈方法を伝えます。

    • Twelve Labs Pegasus Index Video コンポーネントからの Indexed Data 出力を、DS Astra DB コンポーネントの Ingest Data 入力に接続します。これにより、ビデオクリップ(Pegasusの video_id と index_id で充実化されたデータ)と、生成されたそれらの埋め込みが、保存先へと送信されます。

  7. 取り込みフローの実行

    • フローを実行します。Video File が読み込まれ、Split Video によって分割されます。各クリップは、インデックス作成のために Twelve Labs Pegasus Index Video に送信されます。得られた Indexed Data (クリップ + Pegasus ID)は Twelve Labs Video Embeddings に渡され、Marengo埋め込みが生成されます。最後に、DS Astra DB コンポーネントがこの包括的なデータ(クリップ、Pegasusインデックス情報、Marengoベクトル埋め込み)を、指定されたコレクションに取り込みます。

このフローが完了すると、AstraDBコレクションに、個々のベクトル埋め込みおよびPegasusの識別子が紐付けられた、インデックス作成済みビデオクリップが含まれ、RAGシステムの取得パートへの準備が整います。



パート2:ビデオ埋め込みへのクエリ実行と、Pegasusを使用したビデオチャット

ビデオクリップが処理され、Pegasusによってインデックスが作成され、それらのMarengo埋め込みがAstraDBに保存され終わったら(パート1で詳述)、この2つ目のフローはRAGの「取得(ミリバール)」と「生成」の側面を示します。参照画像にあるように、まずユーザーのテキスト質問(クエリ)を埋め込みに変換し、それを使用して関連するビデオクリップをAstraDBから検索します。これらのクリップからの情報は、コンテキストに基づいた回答を生成するためにTwelve Labs Pegasusモデルに渡されます。

以下はこの取得および質問応答パイプラインの構築手順です:

  1. ユーザーのクエリ入力と埋め込み

    • Chat Input コンポーネントをキャンバスに追加します。これは、ユーザーが質問を入力する場所になります。

    • Twelve Labs Text Embeddings コンポーネントを追加します。

      • Twelve Labs APIキーを入力します。

      • Model に Marengo-retrieval-2.7 (またはパート1でビデオクリップの埋め込みに使用したのと同じMarengoモデル)を設定します。

    • Chat Input コンポーネントの出力を、Twelve Labs Text Embeddings コンポーネントのテキスト入力に接続します。これにより、ユーザーのクエリがベクトル埋め込みに確実に変換されます。

  2. AstraDBでのセマンティック検索

    • DS Astra DB コンポーネントを追加します。

      • Astra DB アプリケーション・トークン を入力します。

      • ビデオクリップの埋め込みが保存されている Database (例: video_embeddings)および Collection (例: video_embeddings)を選択します。

      • Twelve Labs Text Embeddings コンポーネントからの Embeddings 出力を、DS Astra DB コンポーネントの Embedding Model 入力に接続します。これにより、AstraDBにクエリ埋め込みが提供されます。

      • Chat Input コンポーネントの出力(生のテキストクエリ)を、DS Astra DB コンポーネントの Search Query 入力に接続します。開発者向け注意:クエリの埋め込みは Embedding Model に渡されますが、Search Query 入力自体は、構成によってはキーワードフィルタリングやその他のハイブリッド検索戦略、あるいは単に提供されたクエリ埋め込みを使用して何に対してベクトル検索を行うかを知るために、AstraDBによって利用される場合があります。

    • DS Astra DB コンポーネントは、コレクション内で類似性検索を実行し、最も関連性の高いビデオクリップ(またはパート1から保存されている場合は、video_id や index_id を含むメタデータ)である Search Results を返します。

  3. AstraDBの結果をPegasus入力用に変換

    • Convert AstraDB to Pegasus Input コンポーネントを追加します。

    • DS Astra DB コンポーネントからの Search Results 出力(多くの場合ドキュメントのメタデータを含む赤丸)を、このコンバータコンポーネントの AstraDB Results 入力に接続します。

    • このユーティリティコンポーネントは非常に重要です。AstraDBの検索結果から Index ID と Video ID を抽出します。これは、Pegasusコンポーネントが「チャット」対象となる特定のインデックス作成済みビデオセグメントを識別するために必須となります。

  4. 文脈に応じたQ&Aに向けてPegasusを準備

    • Twelve Labs Pegasus コンポーネントを追加します。

      • Twelve Labs APIキーを入力します。

      • 希望のPegasusの Model を選択します(デフォルトは pegasus1.2 です)。

    • Convert AstraDB to Pegasus Input コンポーネントからの Index ID 出力を、Twelve Labs Pegasus コンポーネントの Index ID 入力(「Receiving input」とラベルされた端子)に接続します。

    • Convert AstraDB to Pegasus Input コンポーネントからの Video ID 出力を、Twelve Labs Pegasus コンポーネントの Pegasus Video ID 入力(「Receiving input」とラベルされた端子)に接続します。

    • 開発者向け注意:ビデオデータがその場で直接インデックス作成のために提供される「Pegasus Chat with Video」フローとは異なり、ここではAstraDBから取得した すでにインデックス作成されている コンテンツの特定の Pegasus Video ID と Index ID を提供しています。Pegasusコンポーネントの Video Data 入力はこのRAG検索フローでは未接続のままになります。

  5. 元のクエリをPegasusに渡す

    • 元の Chat Input コンポーネント(ユーザーの質問を保持しているもの)の出力を、Twelve Labs Pegasus コンポーネントの Prompt 入力(「Receiving input」とラベルされた端子)に直接接続します。これにより、Pegasusは取得したビデオセグメントの文脈を使用して、どの質問に答えるべきかを認識できます。

  6. Pegasusの応答を表示する

    • Chat Output コンポーネントを追加します。

    • Twelve Labs Pegasus コンポーネントからの Message 出力を、この Chat Output コンポーネントの入力に接続します。これにより、AIが生成した回答が表示されます。

  7. ビデオRAGシステムのテスト

    • Langflowのプレイグラウンド(チャットインターフェース)を開きます。

    • パート1で処理したビデオコンテンツに関連する質問を入力します(例:「冒頭でウサギに何が起こりますか?」、「蝶が出てくるシーンを見せてください。」)。

    • フローは以下のように実行されます

      1. あなたの質問が Chat Input によってキャプチャされます。

      2. Twelve Labs Text Embeddings が質問をベクトルに変換します。

      3. DS Astra DB がそのベクトルを使用して、データベースから最もセマンティックに類似したビデオクリップを見つけます。

      4. Convert AstraDB to Pegasus Input が、上位に取得されたクリップの video_id および index_id を抽出します。

      5. Twelve Labs Pegasus がこれらのID(どのビデオセグメントに焦点を当てるかを指示)と元の質問(そのセグメントに関して何を回答すべきかを指示)を受け取ります。

      6. Pegasusが、あなたの質問に関連する指定のビデオセグメントを分析し、回答を生成します。

      7. 回答が Chat Output を介して表示されます。

この2パートからなるRAGアーキテクチャにより、大規模なビデオライブラリから関連する重要な瞬間を対話形式で取得し、それを基にやり取りできる、洗練されたスケーラブルなビデオ理解アプリケーションを構築できます。



7 - 特別なユースケースとパフォーマンスのベストプラクティス

TwelveLabsとLangflowの連携によるビデオ機能は、価値の高いビジネスアプリケーションを数多く展開させます。不適切な動画セグメントを自動的にフラグ付け、または要約するコンテンツモデレーションシステム、大規模なアーカイブから関連のある瞬間を表面化させるビデオ検索エンジン、さらには動画、テキスト、画像の理解をブレンドしたマルチモーダルアシスタントを構築し、より豊かなユーザーエクスペリエンスを提供できます。これらのユースケースは、動画に対する迅速な洞察や自動分析が、生産性、コンプライアンス、ユーザー維持を直接左右する、メディア、教育、カスタマーサポートなどの業界に最適です。

ビデオ対応ワークフローで信頼性の高いビジネス結果を提供するには、パフォーマンスとコストの最適化に注力してください。動画セグメントをバッチ処理する、あるいは不要な再処理を防ぐためにキャッシュを使用することで、APIのフットプリントを抑え、また詳細度と計算効率のバランスが取れるクリップの長さを選びましょう。ビデオライブラリの増加に伴い高速なクエリ応答を維持するため、AstraDBと埋め込みパイプラインを監視し、より精密な結果を得るために、ベクトル類似性にメタデータフィルタリングを組み合わせたハイブリッド検索戦略を検討してください。

これらのベストプラクティスに従うことで、ビデオAIソリューションにおけるスケーラビリティ、正確性、費用対効果を最大化できます。これにより、組織は大規模なビデオから実行可能な洞察を抽出し、市場における競争優位性を維持することができます。



8 - まとめと次のステップ

おめでとうございます。これであなたもビデオマスターです! 🎬✨

TwelveLabsとLangflowの強力なコンビを使用して、本当にビデオを見て理解するAIエージェントを構築する力をアンロックできました。次世代のスマートなビデオ検索エンジンを作成する、大規模なコンテンツモデレーション、あるいはマルチモーダルアシスタントの開発など、生のフッテージを実用的な洞察(そしてちょっとした魔法のような体験)に変えるツールが手に入りました。

それでは、次に何をしましょう?

独自の創造的なフローを実験したり、さまざまな種類のビデオで限界に挑戦したり、最もクールなプロジェクトをコミュニティで共有してみましょう。TwelveLabsとLangflowのロードマップで発表される刺激的な新機能に注目し、ディスカッションへの参加もお忘れなく。あなたのアイデアとフィードバックが、ビデオAIの未来を形作ります!

さあ、素晴らしいものを構築しに出発しましょう。ビデオの宇宙があなたの探索を待っています! 🚀🎥


追加リソース