ドキュメント エージェントを使用した AI コンテンツ検索の構築

情報の検索は、AI テクノロジーの最も一般的な用途の一つ 生成モデルの例を紹介します。会話型検索インターフェースの構築 AI を使用してコンテンツに最適な コンテンツを提供することで 直接回答します。

このチュートリアルでは、AI を活用した会話型検索の構築方法について説明します 作成しましょう。基礎となるのは ドキュメント エージェント Google Gemini API を使用して会話形式の会話を作成する 新しい AI モデルのトレーニングやモデルのチューニングを行うことなく、 Gemini モデル。つまり、検索機能をすばやく構築して、 コンテンツの規模の大小に使用してください。

プロジェクトの概要と拡張方法(分析情報を含む)の動画 のストーリーをご覧ください。 AI によるコンテンツ検索 |Google AI で構築する。 それ以外の場合は、手順に沿ってプロジェクトの拡張を開始できます。 ご覧ください

概要

ドキュメント エージェント プロジェクトは、特定のドキュメントを対象とした会話型検索インターフェースを Google Gemini API と生成モデルによって支えられています。ユーザーは、 会話形式で詳細な質問をすると、詳細な回答が得られます 特定のコンテンツセットに 基づいて作成できますドキュメント エージェントはバックグラウンドで コンテンツのベクトル データベースに対して検索を行い、 関連するテキストのスニペットを含む、生成モデルの詳細なプロンプト 生成モデルが質問に対する回答を生成し、Google ドキュメント エージェントが レスポンスをフォーマットしてユーザーに表示します。

ドキュメント エージェントの機能図 図 1. ドキュメント エージェント プロジェクト アプリの機能図。

ドキュメント エージェントがコンテンツに関する質問に答えられるようにするには、 ベクトル データベースを作成できます。コンテンツを 分割し、それぞれに対してベクトルを生成します。これらのベクトルは 各チャンク内の情報を数値表現で表したもので、 Google の生成モデルによる AI テキスト エンベディング関数です。

ユーザーが質問すると、ドキュメント エージェントは同じテキスト埋め込みを使用します。 関数を使って質問の数値表現を作成し、それを使って ベクトル データベースを検索して関連コンテンツを見つけます。トップを担う その情報を生成モデルのプロンプトに追加します。AI モデルは質問と追加のコンテキスト情報を受け取り、 あります。

プロジェクトの設定

ここでは、Google ドキュメント エージェント プロジェクトを設定して 開発とテストに集中できます一般的な手順では、いくつかの前提条件をインストールします。 環境変数の設定、コードからのプロジェクトのクローン作成、 構成のインストールを実行します。コード プロジェクトでは、 Python Poetry でパッケージと Python ランタイム環境です。

前提条件をインストールする

ドキュメント エージェント プロジェクトでは、Python 3 と Python Poetry を使用してパッケージを管理し、 アプリケーションを実行します。次のインストール手順は Linux の場合です。 接続します

必要なソフトウェアをインストールするには:

  1. Python 3 と、Python 用の venv 仮想環境パッケージをインストールします。
    sudo apt update
    sudo apt install git pip python3-venv
    
  2. Python Poetry をインストールして、依存関係とパッケージ化を管理する プロジェクト。
    curl -sSL https://install.python-poetry.org | python3 -
    

Python Poetry を使用して、Python ライブラリをさらに追加するには、 できます。

環境変数を設定する

ドキュメント エージェント コードを許可するために必要な環境変数を設定する プロジェクト(Google Gemini API キー、Python など) 詩の設定。これらの変数を $HOME/.bashrc ファイルに追加できます。 Linux を使用している場合は、ターミナルのデフォルト設定にします。 あります。

環境変数を設定するには:

  1. Google Gemini API キーを取得し、キー文字列をコピーします。
  2. API キーを環境変数として設定します。Linux ホストでは、
    export API_KEY=<YOUR_API_KEY_HERE>
    
  3. 既知の既知の脅威や 問題 Python 詩の場合は PYTHON_KEYRING_BACKEND パラメータを設定します。 Linux ホストでは、次のコマンドを使用します。
    export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
    

プロジェクトのクローンを作成して構成する

プロジェクト コードをダウンロードし、Poetry インストール コマンドを使用してダウンロードします。 プロジェクトを構成します。必要な git ソース管理システムを使用して ソースコードを取得できます。 外部 プロジェクト コードをダウンロードして構成するには:

  1. 次のコマンドを使用して Git リポジトリのクローンを作成します。
    git clone https://github.com/google/generative-ai-docs
    
  2. 必要に応じて、スパース チェックアウトを使用するようにローカルの Git リポジトリを構成します。 そのため、ドキュメント エージェント プロジェクトのファイルのみが含まれることになります。
    cd generative-ai-docs/
    git sparse-checkout init --cone
    git sparse-checkout set examples/gemini/python/docs-agent/
    
  3. docs-agent プロジェクトのルート ディレクトリに移動します。
    cd examples/gemini/python/docs-agent/
    
  4. Poetry インストール コマンドを実行して依存関係をダウンロードし、構成する プロジェクト:
    poetry install
    

コンテンツを準備する

ドキュメント エージェント プロジェクトは、テキスト コンテンツを操作できるように設計されており、次の機能が含まれています。 特に Markdown をソース形式として使用するウェブサイトと連携します。 ウェブサイトのコンテンツを扱う場合は、 コンテンツ処理タスクを可能にする、提供されたウェブサイトのディレクトリ構造 そのコンテンツへのリンクを マッピングして作成できます

コンテンツの形式と詳細によっては、 非公開情報、内部メモ、またはその他の情報を削除するコンテンツ 検索できないようにします基本的な書式は タイトルや見出しとして使用することもできます。これにより、 コンテンツ処理ステップに進みます

処理するコンテンツを準備するには:

  1. AI エージェントが検索するコンテンツのディレクトリを作成します。
    mkdir docs-agent/content/
    
  2. コンテンツを docs-agent/content/ ディレクトリにコピーします。もし ディレクトリ構造を保持(または複製)して、 表示されます。
  3. 必要に応じてコンテンツをクリーンアップまたは編集し、非公開情報を削除する。 検索に含めたくないその他の情報を検索できます。

テストに Flutter のドキュメントを使用する

ドキュメント エージェントをテストするための一連のコンテンツが必要な場合は、Flutter で デベロッパー向けドキュメントをご覧ください。

Flutter デベロッパー ドキュメントを取得するには:

  1. AI エージェントに実行させたいコンテンツのコンテンツ ディレクトリに移動します。 できます。
    cd docs-agent/content/
    
  2. Flutter ドキュメントのクローンを docs-agent/content/ ディレクトリに作成します。
    git clone --recurse-submodules https://github.com/flutter/website.git
    

コンテンツを処理する

検索エージェントが関連するコンテンツを効果的に検索できるように、 ユーザーモデルを表すベクトルのデータベースを 説明します。ベクトルは、トレーニング データセットに含まれる テキスト エンベディング。テキスト エンベディングはテキストの数値表現 説明します。テキストのセマンティックな意味を あります。情報を数値で表現することで ユーザーの質問に対して、同じテキスト エンベディングを使用してその意味を近似 関数を実行し、関連する情報を数学的計算として k 最近傍 必要があります。

テキスト コンテンツを分割する

テキスト エンベディング ベクトルが効果的に表現できるテキストの量は、 制限されています。このプロジェクトでは、ベクトルで表現されるテキストが 3,000 文字に制限されています。 コンテンツを小さなデータサイズなどの チャンクに分割する必要があります 。このセクションでは、 Markdown ファイルを小さなテキスト チャンクに分割するドキュメント エージェント プロジェクト。Google Chat 向けの 他のコンテンツ形式とのコラボレーションについては、 その他の形式を処理する

で確認できます。

マークダウン形式のコンテンツを分割するには:

  1. 編集して、処理スクリプトの入力パラメータを構成します。 docs-agent/config.yaml ファイル。この例では、サブセットと
    ドキュメントをご覧ください。
    input:
    - path: "content/website/src/ui"
      url_prefix: "https://docs.flutter.dev/ui"
    
  2. この構成ファイルへの変更を保存します。
  3. docs-agent プロジェクト ディレクトリに移動します。
    cd docs-agent/
    
  4. agent chunk コマンド
    を実行して、Markdown ソース コンテンツを分割します。
    agent chunk
    

このスクリプトは、入力コンテンツを処理し、出力テキスト ファイルを docs-agent/data ディレクトリで、タイトル、見出し、 関連段落がありません。ファイルのサイズによって、処理に時間がかかることがあります。 説明します。

テキスト エンベディング ベクトルを作成する

コンテンツを適切なサイズで意味のあるチャンクに分割すると、 テキスト エンベディングを使用してベクトル データベースにコンテンツを入力できます 使用します。ドキュメント エージェント プロジェクトでは、Chroma ベクトル エンベディング ベクトルを格納したベクトル データベースです。ここでは、 ドキュメント エージェント スクリプトを使用して、分割データをベクトル データベースに入力します。 説明します。

テキスト エンベディングを生成してベクトル データベースにデータを入力するには:

  1. docs-agent プロジェクト ディレクトリに移動します。
    cd docs-agent/
    
  2. agent populate を使用して、ベクトル データベースにコンテンツを入力します。 コマンド:
    agent populate
    

このスクリプトでは、Google Gemini API を使用して テキスト エンベディング 出力をベクトル データベースに保存します。この処理には時間がかかることがあります コンテンツのサイズに応じて変わります。

他の形式を処理する

ドキュメント エージェント プロジェクトは、Markdown でウェブサイト コンテンツを処理するように設計されています 使用できます。プロジェクト作成者は、いくつかのコンバータ スクリプトを作成して、 その他の種類のコンテンツをマークダウン形式(Google ドキュメント、ポータブル ドキュメント形式(PDF)、Gmail などがあります。これらの機能の使用について詳しくは コンバージョンを達成したユーザーについては、 docs-agent/apps_script ディレクトリに移動します。

他のコンテンツ形式に変換する

プロジェクトで他のコンテンツ形式を使用することもできますが、 あなたや他のコミュニティのメンバーが、追加のメソッドを構築する必要があります。 コード リポジトリを確認する 問題pull リクエスト 同様のソリューションを構築している方向けに 説明します

他のコンテンツ形式をサポートするために作成する必要があるキーコードは、スプリッターです。 スクリプトを files_to_plain_text.py 使用します。これと同様の出力を作成するスクリプトまたはプログラムを作成することを目指します。 使用します。最終的なテキスト出力は、最小限の書式設定と 無関係な情報が含まれます。HTML や JSON などのコンテンツ形式を使用している場合 情報以外の形式(タグ、 スクリプト、CSS など)を可能な限り使用して、テキストの値に歪みが生じないようにします。 基づいて生成します。

コンテンツ形式のスプリッター スクリプトを作成すると、次のことができるようになります。 実行 populate_vector_database.py ベクトル データベースにデータを入力します。処理についての詳細は ドキュメント エージェントで使用できるファイルについては、ドキュメント エージェントを 前処理の README

アプリをテストする

ベクトル データベースへのデータ入力が完了すると、プロジェクトが使用可能になります 使用できます。このプロジェクトにはパッケージ化関数が用意されており、これを使用して 作成する必要があります。

プロジェクトのウェブ インターフェースを実行してテストするには:

  1. docs-agent プロジェクト ディレクトリに移動します。
    cd docs-agent/
    
  2. ウェブ アプリケーションの起動スクリプトを実行します。
    agent chatbot
    
  3. ウェブブラウザを使用して、 起動スクリプトの出力を開いて、アプリケーションをテストします。
    * Running on http://your-hostname-here:5000
    
で確認できます。

選べる実装方法

Gemini API は、アプリのコンポーネントを置き換えることができるプログラミング ツールを提供します。 ドキュメント エージェントの実装。具体的には、セマンティック取得とアトリビューションあり 質問応答(AQA)Gemini モデル バリアント。Gemini API の セマンティック取得 ベクトル データベースを置き換えます。セマンティック取得機能 を使用すると、コンテンツのエンベディングを生成し、そのコンテンツを保存できます。「 AQA Gemini モデルのチューニング プロンプトで提供されたソース資料を使用して質問に答える。セマンティックを使用している場合 AQA モデルと一緒に取得して、 質問に答える すべて Gemini API 内で行うことができます

ドキュメント エージェントには、Security Command Center、 Retrieval API 機能、その AQA Gemini モデル、またはその両方。詳細については、次をご覧ください: ドキュメント エージェントの Readme

参考情報

ドキュメント エージェント プロジェクトについて詳しくは、 コード リポジトリ。 アプリケーションの構築についてサポートが必要な場合や、開発者をお探しの場合 詳しくは、 Google Developers コミュニティの Discord あります。

本番環境のアプリケーション

多数のユーザー向けにドキュメント エージェントをデプロイする予定の場合は、 Google Gemini API は、レート制限やその他の 使用制限。 Gemini API を使用した本番環境アプリケーションの構築を ドキュメント エージェントの Google Cloud Vertex AI アプリケーションのスケーラビリティと信頼性を向上させる。