<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=139163818022217&amp;ev=PageView&amp;noscript=1"> <img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=271598307802760&amp;ev=PageView&amp;noscript=1">

[デモ] Box + Pinecone

 公開日:2024.10.25  更新日:2026.06.10

BoxAIへの取り組みをさらに進める中、このチュートリアルおよびPineconeとの統合をリリースすることになりました。LLM (大規模言語モデル)、RAG (検索拡張生成)、生成AI分野にまだ詳しくない方に説明すると、Pineconeは、マネージド型のクラウドネイティブなベクトルデータベースです。高性能なAIアプリケーションに長期メモリを提供する、インフラストラクチャに左右されることのないシンプルなAPIが用意されています。BoxPineconeを関連付けることで、カスタムベクトル埋め込みのカスタマイズと管理が可能になるため、LLMはこの埋め込みを使用してより関連性の高い回答を提供できるようになります。独自のコンテンツサイロからPineconeに追加のコンテキストを提供することで、他からは得られない情報を得ることができるようになります。たとえば、追加のデータをQ&Aボットで使用できます。これは、今回作成しようとしているものです。

RAGの概念の概要

デモに進む前に、RAGの重要な概念を確認しましょう。これは、RAGが非常に優れている理由を理解するのに役立ちます。

ベクトルデータベースとは

前述のとおり、Pineconeはクラウドベースのベクトルデータベースですが、これは厳密には何を意味するのでしょうか。簡単に言えば、埋め込みと呼ばれるデータ表現を保存および取得する手段であり、これにより、文字通り同じではないものの、意味が似ている結果を見つけることができます。

埋め込みとは

埋め込みとは、コンテンツの意味を数学的に表現したものです。入力データを取得して、分割またはチャンク化し、(一部のLLMが提供する) 埋め込みモデルを使用して、浮動小数点数値で構成される文字列 (例: [0.3,0.4,0.1,1.8,1.1…]) を出力することで生成されます。これらの値は、アイデアを点として空間にマッピングしたものと考えることができます。さまざまなデータでトレーニングされている埋め込みモデルが数多くあり、特定のユースケースに特化したものもあります。

下の図では、3次元空間に多くのドットが見えています。この例で、各ドットは名詞を表していますが、Boxの場合はコンテンツを表します。空間全体がデータベースを表し、各ドットが特定のものを表す場合、類似したものはグループ化されます。Cat (猫) はKitten (子猫) に非常に近いですが、やはり別の点になります。Banana (バナナ) とDog (犬) は非常に離れています。

0_cJN3TFeLXbw_RAZz

ベクトルデータベースのグラフの例: 出典 — Weaviate

関連付けられたこれらのデータを、後からQ&Aボットなどで使用するには、どこかに保存する必要があります。ここで、Pineconeの登場です。下のSTORE列に示すように、埋め込みは、後で検索によって取得できるように、ファイル名などの他の関連メタデータと共にベクトルデータベースに格納されます。

0_rQj9lSt0Zj5e1oDY

埋め込みの作成方法: 出典 — Langchain

これらすべてが連携する仕組み

たとえば、ユーザーがBoxフォルダに保存されているコンテンツについて質問するとします。以下に、この動作の典型的なフローを示します。

LLMは、Boxフォルダ内のコンテンツを認識せず、アクセス権限もありません。したがって、質問に一致する情報を抽出し、その情報をLLMに渡して、LLMが回答の生成に必要な情報を得られるようにする必要があります。

以前に作成した埋め込みは、RETRIEVEブロックに示すようにPineconeに保存されます。入力した質問は、コンテンツを変換したのと同じ埋め込みモデルを使用して埋め込みに変換されます。Pineconeのクエリ機能を使用すると、質問に関連するコンテンツのサブセクション (青色でハイライト) が取得されます。質問と、コンテンツの選択されたセクションによってプロンプトが作成され、ユーザーの質問に答えるためにLLMに送信されます。

0_V_dC67GBITYqsDcP

RAGアプリのワークフロー例: 出典 — Langchain

デモ

仕組みについて理解が深まったところで、指定したBoxフォルダに対する埋め込みを作成し、Pineconeに保存する方法についてデモを紹介します。このデモには、質問を送信して、サードパーティ製LLMプロバイダから回答を取得するためのクエリ機能も含まれています。

前提条件

  • 質問の対象となるデータのサブセットを含むBoxフォルダを作成する必要があります。今回は、異なる項目をいくつか含めました。Boxに関連した項目もあれば、関連しない項目もあります。このフォルダには、Boxアプリケーションを作成したユーザーアカウントからアクセスできる必要があります。URLのバーに表示されているフォルダIDを書き留めておきます。これをconfig.pyファイルに入力します。
0_knKNHqOltQq7q0pc

Boxフォルダとその中のコンテンツ

  • Pineconeアカウントが必要です。無料のStarterプランにサインアップし、APIキーを取得します。その後、APIキーをconfig.pyファイルに入力します。
  • このデモでは、ユーザーの質問への応答にOpenAIも使用します。OpenAIにサインアップし、APIキーを取得します。ほとんどの場合、支払い情報を添付する必要があります。APIキーをconfig.pyファイルに入力します。
  • マシンにPythonをインストールしておく必要があります。

Boxのカスタムアプリケーションを作成する

Box開発者コンソールOAuthアプリを作成します。これを行うには、以下の手順に従います。

  1. Box開発者コンソールに移動した後、右上にある [アプリの新規作成] をクリックします。[カスタムアプリ] を選択し、フォームに入力して、[次へ] をクリックします。
  2. [ユーザー認証 (OAuth 2.0)] を選択し、[アプリの作成] をクリックします。
  3. [リダイレクトURI] まで下にスクロールし、リダイレクトURI http://127.0.0.1:5000/callbackを追加します。
  4. [アプリケーションスコープ] のすべてのチェックボックスをオンにします。
  5. [変更を保存] をクリックします。
  6. クライアントIDとクライアントシークレットをメモします。これらは、後ほどconfig.pyファイルで必要になります。

Pineconeインデックスを作成する

Pineconeのコンソールにログインすると、[Create Index (インデックスの作成)] というボタンが表示されます。クリックすると、以下の画面が表示されます。インデックスに名前を付け、[Dimensions (ディメンション)] フィールドに1,024と入力します。他はすべてデフォルトのままにし、[Create index (インデックスの作成)] をクリックします。

注 — この手順はPinecone APIを使用してプログラムで実行することもできますが、ここでは、非常に直感的で優れた外観のPineconeのUIで紹介しました。

0_eVQhVV1p5cRrrd3J

Pineconeインデックスを作成する

作成が完了すると、以下の画面が表示されます。インデックス名 (この場合はpinecone-demo) を書き留めておきます。これはconfig.pyファイルに追加します。

0_8KyImYdiT-SQ6lgZ

Pineconeインデックスの照会画面

コードリポジトリを初期化する

ターミナルまたはコマンドプロンプトを開きます。ローカルマシンにコードを複製します。

git clone https://github.com/yourusername/box-pinecone-sample.git
cd box-pinecone-sample

仮想環境を作成し、有効にします。

python3 -m venv venv
source venv/bin/activate

依存関係をインストールします。

pip install -r requirements.txt

sample_config.pyファイルをコピーします。

cp sample_config.py config.py

任意のエディタでコードを開きます。資格情報とBoxフォルダIDを、前に書き留めておいた情報で更新します。ファイルを保存します。

警告 — フォルダIDとして0を入力しないでください。0を入力すると、Boxアカウント全体に対してインデックスを作成しようとします。これは推奨されないだけでなく、レート制限を超過し、多額の費用がかかり、高い確率で完了できません。

0_appyxhs2n1gF4HfD

config.pyの情報を入力する

埋め込みを作成して保存する

上記の作業がすべて完了したら、埋め込みを作成できるようになります。

ターミナルまたはコマンドプロンプトで、次のコマンドを実行します。

python main.py

アプリケーションを初めて実行すると、アプリケーションへのアクセスを許可するよう求めるポップアップがブラウザに表示されます。これは、おそらく以前にも見たことのある標準的なOAuth 2.0のプロセスです。[Boxへのアクセスを許可] をクリックします。

0_mY7-kxBIMr4YbovS

[Boxへのアクセスを許可] をクリックする

下のウィンドウが表示されれば成功です。接続用のトークンは、プロジェクト内の.oauth.jsonというファイルに保存されます。60日ごとにアプリケーションを使用する場合、更新トークンは引き続き有効です。このウィンドウを閉じると、ターミナルに戻ることができます。

0_54bfhlFWeF7HHuAp

このタブを閉じる

スクリプトでファイルが処理されているのがわかります。

0_mSdzFnO6ZmHHCsMv

フォルダ内のファイルを処理しているスクリプト

完了したら、Pineconeのコンソールにアクセスして、作成された埋め込みを確認できます。このサンプルには、Box内のファイルへの参照、ドキュメントのチャンクのプレーンテキストなど、便利なメタデータも添付されています。このメタデータは、後で応答にフィルタをかける場合やドキュメントのバージョン管理などの作業を行う場合に使用できます。

0_lbMBzEf4ehaMdUWv

Pineconeのコンソールに表示された埋め込み

LLMに対してクエリを実行する

埋め込みが作成され、保存されたので、LLMに質問を送信して結果を取得する方法を見てみましょう。Pineconeにはプロジェクトのこの部分を実行できるAPIがないため、サードパーティ製のLLMを使用する必要があります。このデモではOpenAIを使用します。

ターミナルで、次のコードを実行します。

python query.py

Boxに保存されているコンテンツに関する質問を入力します。ブログの作者の場合は主にBoxファイルリクエストAPIに関するコンテンツなので、これらのエンドポイントについて質問します。

0_0BvaZPAzLPFQy337

クエリソリューションに質問する

サービスから回答が返されます。

0_jAIhtXipGrcT1t-x

クエリサービスからの回答

機能強化に関するアイデア

この最初のデモは比較的簡素なものですが、いくつかの機能強化を行うことでより高度なものにすることもできます。

  • 現在、サンプルコードはアドホックな方法で実行されています。Boxフォルダの更新に基づいて実行される、スケジュール設定されたタスクまたはWebhookサービスを作成できます。これにより、スクリプトの実行が自動化されます。スクリプトによってデータがアップサートされるため、main.pyファイルを実行すると、すべてのレコードが更新されます。
  • クエリスクリプトは、コマンドラインから実行しています。ユーザーが操作できるUIを作成することもできます。
  • JWTCCGなど、Boxの他の認証方法を追加できます。
  • AI/MLモデルは変更可能です。現在、埋め込みは新しいPineconeの推論APIを使用して作成されており、クエリスクリプトはLLMとしてOpenAIを使用しています。これらのすべてまたは一部をニーズに合わせて変更できます。
  • ベクトルデータベースのディメンション、メトリック、チャンクサイズなど、他の構成オプションもすべてカスタマイズ可能です。
  • mainスクリプトでは、指定したBoxフォルダ内の、テキストレイヤーを含むすべてのファイルを処理します。Boxによって、これらのファイルのテキストレプリゼンテーションが自動的に作成され、スクリプトではこのテキストを使用して埋め込みを作成します。ファイルにテキストレプリゼンテーションがない場合、このソリューションは機能しません。また、500 MB未満のファイルでのみ機能します。ユースケースに基づいて、すべての種類のコンテンツをより充実させるサードパーティ製ライブラリを追加することもできます。

関連リソース

Box AI Platform APIのデモ

Box + Llamaindex

Pineconeベクトルデータベースの概要

Pinecone開発者向けドキュメント

GitHubコードリポジトリ

Box AI Platform APIに関するサンプルコードやチュートリアルなどについては、Box AI Developer Zoneをご覧ください。

Box AI Platform APIのエンドポイントを使用するには、Enterprise Plusをご利用のお客様である必要があります。開発者コンソールで適切なBox AIスコープを指定して作成したアプリケーションが必要なほか、BoxインスタンスでBox AIを有効にしておく必要があります。

🦄 Box Platformの他のエキスパートと交流したい場合は、サポートや知識共有のためのBox Developer Community (英語のみ) にご参加ください。


RECENT POST「開発者」の最新記事


開発者

Box、MCPアプリのサポート対象をChatGPT、Microsoft 365 Copilot、Gleanに拡大

開発者

AIエージェントにコンテンツの活用方法を教える: OpenAI Codex向けBox Skillの構築

開発者

Box AIとOpenAI Agents SDKで自律的なドキュメントワークフローを実行

開発者

Box CLI: 開発者とAIエージェントのためのコンテンツCLI