今回は、BoxDevチームがWeaviate GitHubレシピリポジトリに追加した新しいデモを紹介します。この一連の例では、BoxのコンテンツをWeaviateのベクトルデータベースに埋め込み、データに関する質問への回答にWeaviateの新しいQuery Agent (2025年3月にリリースされたばかり) を利用して、検索拡張生成 (Retrieval Augmented Generation、RAG) ワークフローを作成する手順を説明します。開発者にも、データマニアにも、単にAIを活用した検索に興味がある方にも、このレシピは役に立ちます。
それでは、本題に入りましょう。✅
概要
まずは、いくつかの重要な概念と紹介から始めます。
Boxとは
Boxは、ファイルの保存、共有、コラボレーションを安全に行うための優れたインテリジェントコンテンツ管理プラットフォームです。デジタルファイルキャビネットのようなものと考えてください。ただし、開発者がコンテンツに関するカスタムワークフローを作成するためのAPIを備えており、はるかにスマートです。このレシピでは、後で検索および照会するドキュメントをBoxを使用して保存し、RAGパイプラインの基盤としています。
Weaviateとは
Weaviateとは、速度、規模、AIによる検索に対応するために構築されたオープンソースのベクトルデータベースです。ベクトルデータベースでは、データがオブジェクトやベクトルとして保存されるため、(埋め込みによる) セマンティック検索と構造化フィルタリングを組み合わせることができます。クラウドネイティブで障害に強いデータベースであり、大規模言語モデル (LLM) と直接統合することが可能です。今回は、Weaviateがストレージおよび検索エンジンの役割を担い、新しいQuery Agentによってエージェント型RAGを実現します。
これらのソリューションで一連のRAGソリューションを作成する方法
RAG (Retrieval Augmented Generation) とは、ベクトル検索 (Retrieval) と言語モデル (Generation) を組み合わせ、独自のデータを使用して質問に回答する手法です。大まかなフローを以下に示します。
- コンテンツの保管: Boxでファイル (PDF、ドキュメント、テキストレポートなど) を保管します。
- 埋め込みの作成: これらのファイルから抽出されたテキストが分割され、Weaviate Embeddingsを使用して埋め込みが生成されます (数値表現)。
- クエリの実行: WeaviateのQuery Agentが自然言語の質問を受け取り、必要に応じて複数の検索クエリと集計クエリを生成した後、ユーザーに対する1つの出力を作成します。これらはすべて、エージェント型RAGを使用して1回の質問に対して処理されます。
この組み合わせにより、コンテンツについて具体的な質問をすることができ、意味のないハルシネーションではなく、コンテキストに応じたスマートな回答を得ることができます。
レシピの説明
今回リリースしたデモに基づいて、このRAGワークフローを導入して実行する手順を説明します。作業を進めるには、Jupyter Notebook環境 (Visual Studio Codeやローカルの設定など) が必要です。
Box開発者トークンを取得する
Boxアカウントをまだお持ちでない場合は、無料の開発者アカウントにサインアップしてください。
このレシピでは、Box開発者トークンが必要になります。
- Box開発者コンソールにログインします。
- 新しいアプリを作成します ([カスタムアプリ] と [標準OAuth 2.0] 認証を選択)。好きな名前を付けることができます。この例では、すべてのファイルの読み取り/書き込みスコープを追加する必要があります。右上の [変更を保存] をクリックします。
- [構成] タブで開発者トークンを生成します。このトークンの有効期間は60分間であるため、デモを完了するのにそれ以上時間がかかる場合は更新する必要があります。
- 後でノートブックに設定するため、このトークンを書き留めます。
Weaviateアカウントを作成する
Weaviate Cloudクラスタも必要になります。入手するのはとても簡単です。
- Weaviate Cloudで、無料のサンドボックスプランにサインアップします。
- WCDダッシュボードで新しいクラスタを作成し、好きな名前を付けます。
- [Details (詳細)] タブからクラスタのURLとAPIキーを取得します。これは、後でノートブックに設定します。
レシピをダウンロードして順番に完了する
GitHubからリポジトリを複製するかダウンロードします。
- WeaviateレシピのGitHubリポジトリにアクセスします。
- コードをzipフォルダとしてダウンロードするか、リポジトリを複製することができます。
- フォルダで、integrationsフォルダ > data-platformsフォルダ > boxフォルダの順に移動し、任意の開発環境でJupyter Notebookを開きます。
weaviate_box Jupyter Notebookを探す
boxフォルダ内には、demo_filesという別のフォルダもあり、このフォルダには、デモに使用する4つの10-K財務報告書があらかじめ含まれています。別のファイルセットを使用する場合は、そのファイルを削除して自分のファイルに置き換えることができます。

Weaviate Boxレシピリポジトリ
先ほどの設定で書き留めた情報で、手順3のコードブロック内のBoxとWeaviateの認証変数を必ず更新してください。

手順3で認証変数を追加する
このノートブックを実行するには、各セクションを実行するだけです。Jupyter NotebookのVS Code拡張機能がインストールされている場合は、各コードブロックで [Play (実行)] を押すと実行できます。

[Play (実行)] ボタンを押す (VS Codeを使用している場合)
完了すると、最終的な回答として次のように表示されます。手順7のクエリを10-Kに含まれる内容に基づいて別の質問に更新することも、追加したカスタムコンテンツについて質問することもできます。

クエリとコンテンツに基づいて返された最終的な回答
次のステップ
RAGの実践的なデモが完成しましたが、次は何ができるでしょうか。
- データを増やす: Boxにさらに多くのファイル (年次報告書、記事など) をアップロードし、ノートブックを再実行してみましょう。
- エージェントを微調整する: system_promptを調整して、回答をより詳細または形式的にできます (例: 「詳細な分析を示してください…」)。
- 他のエージェントを試す: WeaviateのTransformation Agentはデータの前処理、Personalization Agentは応答の調整を行います (いずれもプレビュー段階です。weaviate.io/developers/agentsを確認してください)。
このレシピでは、Boxのインテリジェントコンテンツ管理とWeaviateのベクトル検索およびQuery Agentを組み合わせて、AIによる強力な検索ツールを作成しました。データをよりスマートかつ利用しやすいものにするために最新のプラットフォームがどのように連携しているかを垣間見ることができます。
いつものように、Box Developer Community (英語のみ) で皆さまからのフィードバックや事例をお待ちしております。🦄
- トピックス:
- 開発者