Configurer un connecteur Data Science

Suivez les étapes de cette procédure pour configurer un connecteur OCI Data Science à utiliser pour un pipeline de génération augmentée par extraction (RAG) dans OCI Search avec OpenSearch.

Après avoir confirmé et configuré les prérequis, effectuez les tâches suivantes pour configurer et créer le connecteur :
  1. Configurez les paramètres du cluster.
  2. Créez le connecteur Data Science.
  3. Inscrivez le groupe de modèles.
  4. Enregistrez le modèle.
  5. Déployez le modèle.
  6. Créez le pipeline RAG.
Les étapes permettant d'effectuer une recherche conversationnelle sont les mêmes pour un connecteur Data Science qu'un connecteur Generative AI. Par conséquent, une fois que vous avez terminé l'étape 6 de cette procédure pas à pas pour créer le pipeline RAG, passez à la procédure de création de l'index de recherche de la procédure pas à pas Recherche conversationnelle avec OCI Generative AI pour configurer un index de recherche et effectuer une recherche RAG.
Remarque

Lorsque vous utilisez un connecteur Data Science au lieu d'un connecteur Generative AI, vous devez mettre à jour la valeur "llm_model" sur "oci_datascience/<your_llm_model_name>" dans les exemples de code de charge utile de requête RAG dans Effectuer une RAG avec BM25 et Effectuer une RAG avec la recherche hybride.

Prérequis

  • Pour utiliser un connecteur Data Science avec OCI Search avec OpenSearch, vous devez disposer d'un cluster configuré pour utiliser OpenSearch version 2.11 ou ultérieure. Par défaut, les nouveaux clusters sont configurés pour utiliser la version 2.11. Pour créer un cluster, reportez-vous à Création d'un cluster OpenSearch.

    Pour les clusters existants configurés pour la version 2.3, vous pouvez effectuer une mise à niveau en ligne vers la version 2.11. Pour plus d'informations, reportez-vous à OpenSearch Cluster Software Upgrades.

    Pour mettre à niveau des clusters existants configurés pour la version 1.2.3 vers la version 2.11, vous devez utiliser le processus de mise à niveau décrit dans OpenSearch Cluster Software Upgrades.

  • Si le cluster OpenSearch se trouve dans une location différente de celle de la location d'adresse Data Science, vous devez créer des stratégies dans les deux locations pour accorder l'accès aux ressources Data Science.

    Les exemples de stratégie suivants incluent les droits d'accès requis. Pour utiliser ces exemples, remplacez <caller_tenancy_name> par le nom de la location du cluster OpenSearch et <resource_host_tenancy_name> par le nom de la location de l'adresse Data Science.

    • Stratégie pour la location Data Science :
      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
    • Stratégie pour la location de cluster 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>

    Si vous ne connaissez pas les stratégies, reportez-vous à Introduction aux stratégies et à Stratégies courantes.

1 : Configurer des paramètres de cluster

Utilisez l'opération paramètres des API de cluster pour configurer les paramètres de cluster recommandés, comme suit :

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 : Créer le connecteur

Créez le connecteur Data Science à l'aide de la charge utile suivante :

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 + '\"}]}}}'"
       }
   ]
}

Remplacez <model_deployment_endpoint> et <model_deployment_OCID> par les valeurs réelles du déploiement de modèle Data Science, par exemple :

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

Notez le message <connector_ID> renvoyé dans la réponse :

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

3 : Enregistrer le groupe de modèles

Enregistrez un groupe de modèles pour le connecteur à l'aide de l'opération d'enregistrement dans les API de groupe de modèles, comme indiqué dans l'exemple suivant :

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

Notez le message <model_group_ID renvoyé dans la réponse :

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

4 : Enregistrer le modèle

Enregistrez le modèle à l'aide de <model_group_ID> et <connector_ID> à partir de l'étape d'aperçu, comme indiqué dans l'exemple suivant :

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 : Déployer le type

Déployez le modèle, comme indiqué dans l'exemple suivant :

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

6 : Créer un pipeline RAG

Créez un pipeline RAG à l'aide de la commande <model_ID> de l'étape précédente, comme indiqué dans l'exemple suivant :

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"
      }
    }
  ]
}

Vous pouvez spécifier un ou plusieurs noms de champ de texte pour "context_field_list", séparer les valeurs par une virgule, par exemple :

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

Les valeurs indiquées pour "context_field_list" doivent correspondre à un ou plusieurs champs intéressants dans l'index du document cible.

Etapes suivantes

Les étapes permettant d'effectuer une recherche conversationnelle sont les mêmes pour un connecteur Data Science qu'un connecteur Generative AI. Par conséquent, une fois que vous avez terminé l'étape 6 de cette procédure pas à pas pour créer le pipeline RAG, passez à la procédure de création de l'index de recherche de la procédure pas à pas Recherche conversationnelle avec OCI Generative AI pour configurer un index de recherche et effectuer une recherche RAG.
Remarque

Lorsque vous utilisez un connecteur Data Science au lieu d'un connecteur Generative AI, vous devez mettre à jour la valeur "llm_model" sur "oci_datascience/<your_llm_model_name>" dans les exemples de code de charge utile de requête RAG dans Effectuer une RAG avec BM25 et Effectuer une RAG avec la recherche hybride.