Configurando um Conector do Serviço Data Science

Use as etapas deste passo a passo para configurar um conector do OCI Data Science a ser usado para um pipeline de Geração Aumentada de Recuperação (RAG) no OCI Search com OpenSearch.

As etapas para executar a pesquisa conversacional são as mesmas para um conector do serviço Data Science como um conector de IA generativa, portanto, depois de concluir a etapa 6 deste passo a passo para criar o pipeline de RAG, prossiga para Criar o Índice de Pesquisa do passo a passo Pesquisa Conversacional com o OCI Generative AI para configurar um índice de pesquisa e executar uma pesquisa de RAG.
Observação

Ao usar um conector do serviço Data Science em vez de um conector do serviço Generative AI, você precisa atualizar o valor "llm_model" para "oci_datascience/<your_llm_model_name>" nos exemplos de código de payload de consulta RAG em Executar RAG com BM25 e Executar RAG com Pesquisa Híbrida.

Pré-requisitos

  • Para usar um conector do serviço Data Science com o OCI Search com o OpenSearch, você precisa de um cluster configurado para usar o OpenSearch versão 2.11 ou mais recente. Por padrão, novos clusters são configurados para usar a versão 2.11. Para criar um cluster, consulte Criando um Cluster OpenSearch.

    Para clusters existentes configurados para a versão 2.3, você pode executar um upgrade em linha para a versão 2.11. Para obter mais informações, consulte OpenSearch Upgrade de Software do Cluster.

    Para fazer upgrade de clusters existentes configurados para a versão 1.2.3 para 2.11, use o processo de upgrade descrito em OpenSearch Upgrades de Software do Cluster.

  • Se o cluster OpenSearch estiver em uma tenancy diferente da tenancy do ponto final do serviço Data Science, você precisará criar políticas em ambas as tenancies para conceder acesso aos recursos do serviço Data Science.

    Os exemplos de política a seguir incluem as permissões necessárias. Para usar esses exemplos, substitua <caller_tenancy_name> pelo nome da tenancy do cluster OpenSearch e substitua <resource_host_tenancy_name> pelo nome da tenancy do ponto final do serviço Data Science.

    • Política para tenancy do 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
    • Política para a tenancy do 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>

    Se você não conhece as políticas, consulte Conceitos Básicos de Políticas e Políticas Comuns.

1: Configurar Definições do Cluster

Use a operação settings das APIs do Cluster para configurar as definições de cluster recomendadas, da seguinte forma:

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: Criar o Conector

Crie o conector do Data Science usando o seguinte payload:

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

Substitua <model_deployment_endpoint> e <model_deployment_OCID> pelos valores reais para sua implantação de modelo do serviço Data Science, por exemplo:

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

Anote o <connector_ID> retornado na resposta:

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

3: Registrar o Grupo de Modelos

Registre um grupo de modelos para o conector usando a operação registrar nas APIs do Grupo de Modelos, conforme mostrado no seguinte exemplo:

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

Anote o <model_group_ID retornado na resposta:

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

4: Registrar o Modelo

Registre o modelo usando <model_group_ID> e <connector_ID> na etapa de visualização, conforme mostrado no seguinte exemplo:

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: Implantar o Modelo

Implante o modelo, conforme mostrado no seguinte exemplo:

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

6: Criar um Pipeline de RAG

Crie um pipeline de RAG usando o <model_ID> da etapa anterior, conforme mostrado no seguinte exemplo:

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

Você pode especificar um ou mais nomes de campo de texto para "context_field_list", separar os valores com uma vírgula, por exemplo:

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

Os valores especificados para "context_field_list" devem corresponder a um ou mais campos de interesse no índice do documento de destino.

Próximas Etapas

As etapas para executar a pesquisa conversacional são as mesmas para um conector do serviço Data Science como um conector de IA generativa, portanto, depois de concluir a etapa 6 deste passo a passo para criar o pipeline de RAG, prossiga para Criar o Índice de Pesquisa do passo a passo Pesquisa Conversacional com o OCI Generative AI para configurar um índice de pesquisa e executar uma pesquisa de RAG.
Observação

Ao usar um conector do serviço Data Science em vez de um conector do serviço Generative AI, você precisa atualizar o valor "llm_model" para "oci_datascience/<your_llm_model_name>" nos exemplos de código de payload de consulta RAG em Executar RAG com BM25 e Executar RAG com Pesquisa Híbrida.