Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Build Agentic Video RAG with Strands Agents and Amazon Aurora PostgreSQL - Local Infrastructure

2025年09月23日に「Dev.to」が公開したITニュース「Build Agentic Video RAG with Strands Agents and Amazon Aurora PostgreSQL - Local Infrastructure」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Strands AgentsとAmazon Aurora PostgreSQLを活用し、動画内容を検索・分析するAIエージェントを構築できる。既存のPythonコードをAIエージェントのツールとして簡単に変換し、動画分析やユーザーの記憶に基づく応答を可能にする自律型AI開発を支援する。

ITニュース解説

このニュース記事は、私たちが普段YouTubeなどで視聴するような動画コンテンツを、AIを使ってより賢く検索・分析できるシステムを作る方法について解説している。具体的には、既存のプログラミングコードを「エージェントツール」という形に変え、まるで人間のように動画内容を理解し、質問に答えたり、ユーザーの好みを覚えたりするAIエージェントを構築する手法が紹介されている。

まず、基盤となるシステムについて軽く触れておこう。以前の記事では、Amazon Bedrock(AIの基盤モデルサービス)、Amazon Transcribe(音声認識サービス)、そしてAmazon Aurora PostgreSQL(高性能なデータベース)を組み合わせて、動画の音声をテキスト化し、その内容や動画の視覚的な特徴を分析・検索できる基本的なRAG(Retrieval Augmented Generation:検索拡張生成)システムを構築した。RAGシステムとは、AIが外部の情報を検索してきて、それを元に回答を生成する仕組みのことで、これによりAIが最新かつ正確な情報に基づいて応答できるようになる。

今回の記事の目的は、その既存のPythonコードをさらに進化させ、「Strands Agents」というフレームワークを使って、より自律的でインテリジェントなAIエージェントツールに変えることだ。Pythonで完璧に動作するコードがあれば、Strands Agentsを使えば、それを独自の判断で動くAIエージェントの「道具」として利用できるようになるのである。

Strands Agentsの核となる機能の一つが、@toolという特別な印(デコレータ)だ。例えば、動画を処理したり検索したりする複雑なPython関数がすでにあるとする。その関数の定義の上に@toolと記述し、その関数の役割を説明する文章(docstringと呼ばれる)を追記するだけで、Strands Agentsはその関数をAIエージェントが利用できるツールとして認識してくれる。 具体的にvideo_embedding_localというツールを見てみよう。これは、動画ファイルを読み込み、ユーザーIDに基づいて処理を行い、特定の動画を検索したり、リスト表示したりする役割を持つ。内部ではAmazon Aurora PostgreSQLを使って、動画から抽出した情報(フレーム画像や音声のテキストなど)を保存し、検索に利用する。このような複雑な処理も、@toolを付けるだけでエージェントが「動画処理の道具」として使えるようになるのだ。Strands Agentsは、ツールの登録と発見、入力値のチェック、エラーの処理、結果の整形、さらにはエージェントの会話の状態管理や、複数のステップにわたる思考の調整まで、裏側で自動的に行ってくれるため、開発者はツールのロジック自体に集中できる。

エージェントをさらに賢くするためには、過去の会話やユーザーの好みを「記憶」させる機能が不可欠だ。そこで登場するのが「Amazon S3 Vectors」を利用した永続的な記憶ツール、s3_vector_memoryである。このツールは、ユーザーの記憶したい内容を保存したり、過去の記憶を検索して関連性の高いものを取得したりする役割を果たす。Amazon S3はクラウド上のストレージサービスであり、ここに「ベクトル」という形で情報を保存することで、単なるキーワード検索ではなく、意味的に近い情報を探し出す「セマンティック検索」が可能になる。このツールもまた@toolデコレータが付与され、ユーザーIDによる記憶の分離、セマンティック検索、そして永続的な記憶管理といった複雑な機能が、エージェントにはシンプルなインターフェースで提供される。

さらに、検索結果をユーザーに見やすく表示するためのdisplay_video_imagesというツールもある。このツールは、動画検索の結果から画像コンテンツをダウンロードして表示したり、テキスト形式の結果を出力したりする。エージェントは、このツールを使って動画の中から見つけ出した特定のシーンの画像を表示するといったことも可能になる。

これらのツールが準備できたら、いよいよAIエージェントを作成する。Strands Agentsでは、Agentクラスを使ってエージェントを定義する。この際、どのAIモデル(例えばAnthropicのClaudeなど)を使うか、どのツールを利用可能にするか、そしてエージェントがどのような役割を果たすべきかを指示する「システムプロンプト」を設定する。システムプロンプトは、エージェントの「人格」や「目的」を定める非常に重要な部分で、この記事の例では「あなたは動画処理AIアシスタントです」といった形で定義されている。たった数行のコードで、AIモデル、利用ツール、システムプロンプトを設定するだけで、動画を分析・検索できる「ビデオ分析エージェント」や、さらにユーザーの記憶を考慮した「記憶強化エージェント」といった、目的に応じたエージェントが構築できるのだ。

Strands Agentsは、様々なAIモデルをサポートしており、BedrockModelやAnthropicModelといった特定のモデルプロバイダーを指定することも、LiteLLMやOpenAIなど他の多くのモデルを利用することもできる。これにより、開発者は自身のプロジェクトに最適なAIモデルを選択し、柔軟にシステムを構築できる。

これらのエージェントは、ユーザーとの自然な会話の中で真価を発揮する。例えば、「この動画は何について?」と尋ねると、エージェントは自動的にvideo_embedding_localツールを使って動画を処理・分析し、その内容について答える。また、「AIとデータベース技術について学習したい。この好みを覚えて、この動画からベクトルデータベースとエンベディングに関する技術的な議論を探して」といった、複数の指示を含む複雑なリクエストにも対応できる。この場合、エージェントはまずs3_vector_memoryツールを使ってユーザーの好みを記憶し、次にvideo_embedding_localツールで動画を検索し、最後にdisplay_video_imagesツールで結果を表示するといった一連の行動を自律的に実行し、最終的に一貫性のある応答を生成するのだ。エージェントはユーザーの指示を解釈し、適切なツールを判断して呼び出し、その結果を次の行動に繋げるという、一連の「思考と行動のループ」を回すことで、高度なタスクをこなすことができる。

システムは、動画のパス、ユーザーID、実行するアクション(処理、検索、リスト)、類似性の閾値、1秒あたりのフレーム抽出数など、柔軟な設定パラメータを受け入れる。これらのパラメータを調整することで、処理の精度を高めたり(例えば、1秒あたりのフレーム数を増やしたり)、処理速度を優先したり(フレーム数を減らしたり)といったパフォーマンスの最適化も可能だ。

このように、Strands Agentsフレームワークを使うことで、既存のコードを簡単にAIエージェントが利用できるツールに変換し、自律的に判断し行動するインテリジェントなシステムを効率的に構築できる。開発者は、より複雑なAIシステムを少ない労力で実現する道が開かれる。

関連コンテンツ

関連IT用語

関連ITニュース