データ・サイエンス・コネクタの構成

このウォークスルーのステップを使用して、OCI SearchでOpenSearchを使用して、Retrieval-Augmented Generation (RAG)パイプラインに使用するOCI Data Scienceコネクタを設定します。

会話型検索を実行するステップは、データ・サイエンス・コネクタに対して生成AIコネクタと同じであるため、このウォークスルーのステップ6を完了してRAGパイプラインを作成した後、OCI生成AIによる会話型検索ウォークスルーの検索索引の作成に進み、検索索引を設定し、RAG検索を実行します。
ノート

生成AIコネクタのかわりにデータ・サイエンス・コネクタを使用する場合は、BM25を使用したRAGの実行およびハイブリッド検索を使用したRAGの実行のRAG問合せペイロード・コード例で、"llm_model"値を"oci_datascience/<your_llm_model_name>"に更新する必要があります。

前提条件

  • OCI SearchでOpenSearchとともにデータ・サイエンス・コネクタを使用するには、OpenSearchバージョン2.11以降を使用するように構成されたクラスタが必要です。デフォルトでは、新しいクラスタはバージョン2.11を使用するように構成されています。クラスタを作成するには、「OpenSearchクラスタの作成」を参照してください。

    バージョン2.3に構成された既存のクラスタでは、バージョン2.11へのインライン・アップグレードを実行できます。詳細は、OpenSearchクラスタ・ソフトウェアのアップグレードを参照してください。

    バージョン1.2.3用に構成された既存のクラスタを2.11にアップグレードするには、OpenSearchクラスタ・ソフトウェアのアップグレードで説明されているアップグレード・プロセスを使用する必要があります。

  • OpenSearchクラスタがデータ・サイエンス・エンドポイント・テナンシとは異なるテナンシにある場合、データ・サイエンス・リソースへのアクセス権を付与するには、両方のテナンシでポリシーを作成する必要があります。

    次のポリシーの例には、必要な権限が含まれています。これらの例を使用するには、<caller_tenancy_name>をOpenSearchクラスタのテナンシの名前に置き換え、<resource_host_tenancy_name>をデータ・サイエンス・エンドポイントのテナンシの名前に置き換えます。

    • データ・サイエンス・テナンシのポリシー:
      define tenancy <caller_tenancy_name> as <caller_tenancy_ocid>
      admit any-user of tenancy <caller_tenancy_name> to {DATA_SCIENCE_MODEL_DEPLOYMENT_PREDICT} in tenancy
    • OpenSearchクラスタ・テナンシのポリシー:
      define tenancy <resource_host_tenancy_name> as <resource_host_tenancy_ocid>
      endorse any-user to {DATA_SCIENCE_MODEL_DEPLOYMENT_PREDICT} in tenancy <resource_host_tenancy_name>

    ポリシーを初めて使用する場合は、ポリシーの開始および共通ポリシーを参照してください。

1: クラスタの設定の構成

次のように、クラスタAPI設定操作を使用して、推奨されるクラスタ設定を構成します。

PUT _cluster/settings
{
  "persistent": {
    "plugins": {
      "ml_commons": {
        "only_run_on_ml_node": "false",
        "model_access_control_enabled": "true",
        "native_memory_threshold": "99",
        "rag_pipeline_feature_enabled": "true",
        "memory_feature_enabled": "true",
        "allow_registering_model_via_local_file": "true",
        "allow_registering_model_via_url": "true",
        "model_auto_redeploy.enable":"true",
        "model_auto_redeploy.lifetime_retry_times": 10
      }
    }
  }
}

2: コネクターの作成

次のペイロードを使用してデータ・サイエンス・コネクタを作成します:

POST _plugins/_ml/connectors/_create
{
   "name": "DS Chat Connector",
   "description": "Check errors in logs",
   "version": 2,
   "protocol": "oci_sigv1",
   "parameters": {
       "endpoint": "<model_deployment_endpoint>",
        "modelId": "<model_deployment_OCID>",
       "auth_type": "resource_principal"
   },
   "credential": {
   },
   "actions": [
       {
           "action_type": "predict",
           "method": "POST",
           "url": "https://${parameters.endpoint}/${parameters.modelId}/predict",
           "request_body": "{\"model\": \"/opt/ds/model/deployed_model\", \"prompt\" : \"${parameters.prompt}\", \"max_tokens\":250,  \"temperature\": 0.7, \"top_p\":0.8, \"stream\" : false}",
           "post_process_function": "def text = params['choices'][0]['text'].replace('\n', '\\\\n');\n return '{\"name\":\"response\",\"dataAsMap\":{\"inferenceResponse\":{\"generatedTexts\":[{\"text\":\"' + text + '\"}]}}}'"
       }
   ]
}

<model_deployment_endpoint>および<model_deployment_OCID>を、データ・サイエンス・モデル・デプロイメントの実際の値に置き換えます。たとえば:

...
"endpoint": "modeldeployment.us-ashburn-1.oci.customer-oci.com"
"modelId": "ocid1.datasciencemodeldeployment.oc1.IAD.examplesmtpsuqmoy4m5cvblu..."
...

レスポンスで返された<connector_ID>を書き留めます。

{
  "connector_id": "<connector_ID>",
}

3: モデル・グループの登録

次の例に示すように、モデル・グループAPI登録操作を使用してコネクタのモデル・グループを登録します。

POST /_plugins/_ml/model_groups/_register
{
   "name": "<model_group_name>",
   "description": "<model_group_description>"
}

レスポンスで返された<model_group_IDを書き留めます。

{
  "model_group_id": "<model_group_ID>",
  "status": "CREATED"
}

4: モデルの登録

次の例に示すように、プレビュー・ステップの<model_group_ID>および<connector_ID>を使用してモデルを登録します。

POST /_plugins/_ml/models/_register
{
   "name": "oci-genai-test",
   "function_name": "remote",
   "model_group_id": "<model_group_ID>",
   "description": "test model",
   "connector_id": "<connector_ID>"
 }

5: モデルのデプロイ

次の例に示すように、モデルをデプロイします。

POST /_plugins/_ml/models/<model_ID>/_deploy

6: RAGパイプラインを作成します。

次の例に示すように、前のステップの<model_ID>を使用してRAGパイプラインを作成します。

PUT /_search/pipeline/<pipeline_name>
{
  "response_processors": [
    {
      "retrieval_augmented_generation": {
        "tag": "genai_pipeline_demo",
        "description": "Demo pipeline Using Genai Connector",
        "model_id": "<model_ID>",
        "context_field_list": ["<text_field_name>"],
        "system_prompt": "You are a helpful assistant",
        "user_instructions": "Generate a concise and informative answer for the given question"
      }
    }
  ]
}

"context_field_list"には1つ以上のテキスト・フィールド名を指定し、値をカンマで区切ることができます。たとえば:

"context_field_list" : ["value1", "value2",…,"valueN"],

"context_field_list"に指定する値は、ターゲット・ドキュメント索引の対象となるフィールドと一致する必要があります。

次のステップ

会話型検索を実行するステップは、データ・サイエンス・コネクタに対して生成AIコネクタと同じであるため、このウォークスルーのステップ6を完了してRAGパイプラインを作成した後、OCI生成AIによる会話型検索ウォークスルーの検索索引の作成に進み、検索索引を設定し、RAG検索を実行します。
ノート

生成AIコネクタのかわりにデータ・サイエンス・コネクタを使用する場合は、BM25を使用したRAGの実行およびハイブリッド検索を使用したRAGの実行のRAG問合せペイロード・コード例で、"llm_model"値を"oci_datascience/<your_llm_model_name>"に更新する必要があります。