Configurando um Conector do Serviço Data Science na Pesquisa com OpenSearch

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 de conversação são as mesmas para um conector do serviço Data Science como um conector de IA generativa, portanto, após concluir a etapa 6 deste passo a passo para criar o RAG pipeline, prossiga para Criar o Índice de Pesquisa da Pesquisa Conversacional com o OCI Generative AI in Search com o passo a passo OpenSearch para configurar um índice de pesquisa e executar uma pesquisa 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 uma Pesquisa com o 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 Fazendo Upgrade da Pesquisa com o Software de Cluster OpenSearch.

    Para fazer upgrade de clusters existentes configurados para a versão 1.2.3 para 2.11, use o processo de upgrade descrito em Fazendo Upgrade da Pesquisa com o Software de Cluster OpenSearch.

  • 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 de conversação são as mesmas para um conector do serviço Data Science como um conector de IA generativa, portanto, após concluir a etapa 6 deste passo a passo para criar o RAG pipeline, prossiga para Criar o Índice de Pesquisa da Pesquisa Conversacional com o OCI Generative AI in Search com o passo a passo OpenSearch para configurar um índice de pesquisa e executar uma pesquisa 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.