デプロイメントの計画

Oracle Cloud Infrastructure Generative AIエージェントを使用すると、エンタープライズ・ナレッジ・ベースを検索することで、状況に応じた回答を提供するインテリジェントな検索システムを構築できます。

この項では、次の実装について説明します。

  • 生成AIエージェントが取り込むために、エンタープライズ・データをサービス管理のナレッジ・ベースに取り込みます。
  • 顧客管理のナレッジ・ベースでデータを索引付けします。
  • データ取込み用のコードを作成してデプロイし、ベクトル埋込みを生成します。

サービス管理のナレッジ・ベースを使用した生成AIエージェント

次のデプロイメントでは、OCI生成AIエージェントを使用して、サービス管理のナレッジ・ベースおよびOracle Cloud Infrastructure Object Storageを使用するインテリジェントな検索システムを構築します。

このデプロイメントでは、TXTおよびPDFファイルがOracle Cloud Infrastructure Object Storageバケットにアップロードされます。このバケットでは、生成AIエージェントがデータを自動的に収集して、統合ベクトル・ストアに格納されているベクトルを作成します。

このデプロイメントの利点は、非構造化データの管理ソリューションを必要とし、迅速で簡単なデータ取り込みを提供し、コーディングとメンテナンスの要件を最小限に抑える顧客に適していることです。ただし、Cohereサービス管理の埋込みモデルでは、ナレッジ・ベース当たり最大1000個のテキストおよびPDFファイルのみが許可されます。



genai-knowledge-base-oracle.zip

このデプロイメントを作成するには、次の大まかなステップを使用します。

  1. オブジェクト・ストレージ・バケットをプロビジョニングし、ファイルをバケットにアップロードします。

    サポートされているファイル・タイプはPDFおよびTXTで、各ファイルは100MB以下である必要があります。PDFファイルにはイメージ、チャートおよび参照表を含めることができますが、これらの各オブジェクトは8MBを超えることはできません。OCI Object Storageでは、コンソール、Rest APIまたはソフトウェア開発キット(SDK)を使用したファイルのバッチ・アップロードがサポートされています。

  2. ナレッジ・ベースおよび取込みジョブを作成します。

    OCI生成AIエージェントにナレッジ・ベースを作成し、データ・ソースとしてプロビジョニングしたオブジェクト・ストレージ・バケットを指定します。OCI生成AIエージェント・サービスがサービス管理の埋込みモデルを使用してベクトル索引を生成するように、「取込みジョブの自動開始」オプションを選択します。

  3. エージェントおよびエンドポイントを作成します。

    OCI生成AIエージェントにエージェントを作成し、前のステップでプロビジョニングしたナレッジ・ベースに接続します。エージェントのエンドポイントを作成します。このエンドポイントは、後でエージェントとのチャットの起動に使用されます。エンドポイントは、エージェントと外部システム間の通信およびデータ交換を有効にするために使用されます。APIまたはSDKを使用してAIエージェントを使用してチャット機能を有効にする場合は、エンドポイントは必須入力パラメータです。

  4. オプションで、フロントエンド統合を作成します。

    OCI生成AIエージェント・サービスは、エージェントがアクセスできるデータに関する質問をユーザーが行うことができるチャット・ユーザー・インタフェースを提供します。サービスRest APIまたはSDKを使用して、チャット・ボット・インタフェースをカスタマイズすることで、エージェントをアプリケーションに統合できます。Oracleは、Oracle APEX Application DevelopmentOracle Digital Assistantなどのローコードのノーコード・アプリケーション開発ツールを提供しています。

OCI OpenSearchによる生成AIエージェント

次のデプロイメントでは、生成AIエージェントが使用する顧客管理ナレッジ・ベースとして、OpenSearchデータを含むOracle Cloud Infrastructure Searchを使用します。

Oracle Cloud Infrastructure Search with OpenSearchは、大量のデータ・ストアに格納されたデータを検索および分析できるマネージド・サービスです。このデプロイメントでは、OpenSearchは、エンタープライズ・ドキュメントの格納、索引の作成、ハイブリッド検索を使用したデータの検索と取得に使用されるベクトル・データベースです。検索結果は、管理対象再ランキング・モデルを使用してOCI生成AIエージェントによってランク付けされ、コンテキスト・レスポンスを生成するためにCohere大規模言語モデル(LLM)に送信されます。

このデプロイメントの利点は、JSON、XML、ブログなどの幅広いファイル・タイプをサポートし、幅広いオープンソースの埋込みモデルと互換性があり、より具体的な検索結果に自動切捨てを使用できることです。このデプロイメントでは、データ取込みおよび索引付けパイプラインを構築および管理する必要があり、ファイルはそれぞれ512個未満のトークンにチャンク化され、OpenSearchで取り込まれて索引付けされる必要があります。



ゲナイオープンサーチ oracle.zip

このデプロイメントを作成するには、次の大まかなステップを使用します。

  1. Oracle Cloud Infrastructure検索スタックをプロビジョニングし、データを取り込みます。

    仮想クラウド・ネットワーク(VCN)、Oracle Cloud Infrastructure Searchクラスタおよび仮想マシン(VM)インスタンスをプロビジョニングします。

    スタックの作成方法を示すチュートリアルへのリンクについては、「詳細の確認」の項を参照してください。

  2. OCI Vaultシークレットを作成します。

    OCI生成AIエージェントでは、Oracle Cloud Infrastructure Searchがユーザー名とパスワードをOCI Vaultに格納できるようにシークレットを作成する必要があります。

  3. OCI生成AIエージェントのナレッジ・ベースおよびエージェントを構成します。

    データ・ソースとしてOracle Cloud Infrastructure Searchクラスタを選択し、使用する索引を指定して、ナレッジ・ベースを作成します。このナレッジ・ベースを使用して、OCI生成AI RAGエージェントを作成します。

Oracle Database 23aiを使用したOCI生成AIエージェント

このデプロイメントでは、Oracle Autonomous Database 23aiとVector Searchを使用して、構造化データと非構造化データの両方を管理します。

ユーザーがエンタープライズ・データを問い合せると、AIベクトル検索によって類似性検索が実行され、OCI生成AIエージェントに渡す最も関連性の高いファクトが検索されます。その後、これらのエージェントは再ランキング・モデルを実行し、Cohere大規模言語モデル(LLM)を使用してコンテキスト・レスポンスを生成します。

このデプロイメントの利点は、構造化データと非構造化データの両方(メディア・データ、イメージ、ビデオなど)をサポートし、サードパーティの埋込みモデルと互換性があり、ターゲットを絞った検索結果を提供できることです。このデプロイメントでは、データ取込みのコードを構築およびデプロイし、ベクトル埋込みを生成し、ベクトル索引を作成する必要があります。



ジェナイベクター検索 oracle.zip

このデプロイメントを作成するには、次の大まかなステップを使用します。

  1. Oracle Database 23aiインスタンスを作成します。
    1. OCIサービス・コンソールのナビゲーション・メニューから、「Oracle Database」「Autonomous Data Warehouse」の順に選択します。
    2. 「Autonomous Databaseの作成」をクリックします。
    3. データベースに名前を付け、データベース・バージョンとして「23ai」を選択します。他のパラメータを指定するか、デフォルトを受け入れて「Autonomous Databaseの作成」をクリックします。
  2. データベース資格証明を格納するボールトを作成し、キーを作成します:
    1. OCIサービス・コンソールのナビゲーション・メニューから、「アイデンティティとセキュリティ」「Vault」の順に選択します。
    2. 「ボールトの作成」をクリックします。
    3. ボールトに名前を付けます。他のパラメータを指定するか、デフォルトを受け入れて「Vaultの作成」をクリックします。
    4. 新しく作成したボールトで、「キーの作成」をクリックします。
    5. キーに名前を付けます。他のパラメータを指定するか、デフォルトを受け入れて「キーの作成」をクリックします。
  3. データベース・ツール接続の作成:
    1. OCIサービス・コンソールのナビゲーション・メニューから、「開発者サービス」をクリックし、「接続」を選択します。
    2. 「接続の作成」をクリックします。
    3. 接続に名前を付け、データベース・クラウド・サービスとして「Oracle Autonomous Database」を選択し、コンパートメントを選択して、ユーザー名を指定します。他のパラメータを指定するか、デフォルトを受け入れて「パスワード・シークレットの作成」をクリックします。
    4. パスワード・シークレットに名前を付け、コンパートメント、ボールト・コンパートメント、暗号化キー・コンパートメントを選択し、パスワードを指定します。「Create」をクリックします。
    5. ウォレット形式として「SSOウォレット」を選択し、「ウォレット・コンテンツ・シークレットの作成」をクリックし、ウォレット・コンテンツ・シークレットに名前を付け、ボールトおよび暗号化キー・コンパートメントを選択し、「Autonomous Databaseからのリージョナル・ウォレットの取得」が選択されていることを確認します。「作成」をクリックします。
    6. 「接続の作成」ウィンドウで「作成」をクリックします。新しく作成された接続は、関連付けられたデータベースの詳細ページの「接続」タブの下にリストされます。
  4. PL/SQLを使用したモデルの埋込みを使用したベクトルの構築:
    1. OCI Gen AIサービスやDBMS_CLOUDの資格証明など、OCIリソースへのアクセスを許可する資格証明を設定します。OCIには、プライベートおよびパブリックapi_keys、フィンガープリント、ユーザー、テナンシおよびコンパートメントocidを含む構成ファイルが必要です。
      begin
        DBMS_CLOUD.CREATE_CREDENTIAL (
          credential_name => '<credential_name>',
          user_ocid       => '<user_ocid>',
          tenancy_ocid    => '<tenancy_ocid>',
          private_key     => '<private_key>',
          fingerprint     => '<fingerprint>'
        );
      end;
      /
    2. 23ai格納されたpdfファイルを含む組込みデータベース機能を使用して、ファイルをチャンク化し、テキスト抽出を実行します。
      CREATE TABLE ai_extracted_data AS
      SELECT
        j.chunk_id,
        j.chunk_offset,
        j.chunk_length,
        j.chunk_data
      FROM
        -- divide a blob into chunks (utl_to_chunks):
        (select * from dbms_vector_chain.utl_to_chunks(
                  dbms_vector_chain.utl_to_text(
                      to_blob(
                          DBMS_CLOUD.GET_OBJECT('OCI_CRED_BUCKET', '<path-to-object-pdf>')
                      )
                  ), json('{"max":"75", "normalize":"all", "overlap":"15"}')
              )),
        JSON_TABLE(column_value, '$'
          COLUMNS (
            chunk_id NUMBER PATH '$.chunk_id',
            chunk_offset NUMBER PATH '$.chunk_offset',
            chunk_length NUMBER PATH '$.chunk_length',
            chunk_data CLOB PATH '$.chunk_data'
          )
        ) j;
    3. OCI生成AIを介したcohere.embed-multilingual-v3.0モデルなどの幅広い埋込みオプションを使用して、ベクトル埋込みを作成します。
      create table ai_extracted_data_vector as (
          select chunk_id as docid, to_char(chunk_data) as body, dbms_vector.utl_to_embedding(
                  chunk_data,
                  json('{
                      "provider": "OCIGenAI",
                      "credential_name": "<credential_name>",
                      "url": "https://example.com/<path>",
                      "model": "cohere.embed-multilingual-v3.0"
                  }')
              ) as text_vec
          from ai_extracted_data
          where chuck_id <= 400
      );
      
    4. ベクトル表を問い合せ、実行時にAI検索操作を実行するファンクションを作成します。
      create or replace FUNCTION retrieval_func_ai (
          p_query IN VARCHAR2,
          top_k IN NUMBER
      ) RETURN SYS_REFCURSOR IS
          v_results SYS_REFCURSOR;
          query_vec VECTOR;
      BEGIN
          query_vec := dbms_vector.utl_to_embedding(
              p_query,
              json('{
                  "provider": "OCIGenAI",
                  "credential_name": "<credential_name>",
                  "url": "https://example.com/<path>",
                  "model": "cohere.embed-multilingual-v3.0"
              }')
          );
       
          OPEN v_results FOR
              SELECT DOCID, BODY, VECTOR_DISTANCE(text_vec, query_vec) as SCORE
              FROM ai_extracted_data_vector
              ORDER BY SCORE
              FETCH FIRST top_k ROWS ONLY;
       
          RETURN v_results;
      END;
  5. Oracle Database 23aiを使用してナレッジベースを作成します。
    1. OCIサービス・コンソールのナビゲーション・メニューから、「アナリティクスとAI」をクリックし、「生成AIエージェント」を選択します。
    2. 「ナレッジ・ベース」をクリックし、「ナレッジ・ベースの作成」をクリックします。
    3. ナレッジ・ベースに名前を付け、データ・ストア・タイプとして「Oracle AI Vector Search」を選択し、データベース・ツールの接続および検索機能を指定して、「ナレッジ・ベースの作成」をクリックします。
  6. Oracle Database 23 AIナレッジ・ベースを使用した生成AIエージェントの作成:
    1. OCIサービス・コンソールのナビゲーション・メニューから、「アナリティクスとAI」をクリックし、「エージェント」を選択します。
    2. 「エージェントの作成」をクリックします。
    3. エージェントに名前を付け、作成したナレッジ・ベースを選択し、「エージェントの作成」をクリックします。

    エージェントの作成後、エージェントがアクティブであり、チャットする準備ができていることがわかります。