Usar conectores de dados com o RAG Engine

Nesta página, mostramos como usar conectores de dados para acessar os dados armazenados no Cloud Storage, no Google Drive, no Slack, no Jira ou no SharePoint e como usar esses dados com o RAG Engine. A API Import RagFiles oferece conectores de dados para essas fontes.

Importar arquivos do Cloud Storage ou do Google Drive

Para importar arquivos do Cloud Storage ou do Google Drive para seu corpus, faça o seguinte:

  1. Crie um corpus seguindo as instruções em Crie um corpus de RAG.
  2. Importe os arquivos do Cloud Storage ou do Google Drive usando o modelo.

Importar arquivos do Slack

Para importar arquivos do Slack para seu corpus, faça o seguinte:

  1. Crie um corpus, que é um índice que estrutura e otimiza seus dados para pesquisa. Siga as instruções disponíveis em Crie um corpus de RAG.
  2. Receba o CHANNEL_ID do ID do canal do Slack.
  3. Crie e configure um app para usar com o RAG Engine.
    1. Na interface do Slack, na seção Adicionar recursos e funcionalidades, clique em Permissões.
    2. Adicione as seguintes permissões:
      • channels:history
      • groups:history
      • im:history
      • mpim:history
    3. Clique em Instalar no workspace para instalar o app no workspace do Slack.
  4. Clique em Copiar para receber o token da API, que autentica sua identidade e concede a você acesso a uma API.
  5. Adicione o token da API ao Secret Manager.
  6. Para conferir o secret armazenado, conceda o papel de Acessador de secrets do Secret Manager à conta de serviço do RAG Engine do projeto.

Os exemplos de código curl e Python a seguir demonstram como importar arquivos de recursos do Slack.

curl

Se você quiser receber mensagens de um canal específico, mude o CHANNEL_ID.

API_KEY_SECRET_VERSION=SLACK_API_KEY_SECRET_VERSION
CHANNEL_ID=SLACK_CHANNEL_ID
PROJECT_ID=us-central1

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${ ENDPOINT }/v1beta1/projects/${ PROJECT_ID }/locations/${ PROJECT_ID }/ragCorpora/${ RAG_CORPUS_ID }/ragFiles:import \
-d '{
  "import_rag_files_config": {
    "slack_source": {
      "channels": [
        {
          "apiKeyConfig": {
            "apiKeySecretVersion": "'"${ API_KEY_SECRET_VERSION }"'"
          },
          "channels": [
            {
              "channel_id": "'"${ CHANNEL_ID }"'"
            }
          ]
        }
      ]
    }
  }
}'

Python

Se você quiser receber mensagens de um determinado período ou de um canal específico, mude um dos seguintes campos:

  • START_TIME
  • END_TIME
  • CHANNEL1 ou CHANNEL2
    # Slack example
    start_time = protobuf.timestamp_pb2.Timestamp()
    start_time.GetCurrentTime()
    end_time = protobuf.timestamp_pb2.Timestamp()
    end_time.GetCurrentTime()
    source = rag.SlackChannelsSource(
        channels = [
            SlackChannel("CHANNEL1", "api_key1"),
            SlackChannel("CHANNEL2", "api_key2", START_TIME, END_TIME)
        ],
    )

    response = rag.import_files(
        corpus_name="projects/my-project/locations/us-central1/ragCorpora/my-corpus-1",
        source=source,
        chunk_size=512,
        chunk_overlap=100,
    )

Importar arquivos do Jira

Para importar arquivos do Jira no corpus, faça o seguinte:

  1. Crie um corpus, que é um índice que estrutura e otimiza seus dados para pesquisa. Siga as instruções disponíveis em Crie um corpus de RAG.
  2. Para criar um token de API, faça login no site da Atlassian.
  3. Use {YOUR_ORG_ID}.atlassian.net como SERVER_URI na solicitação.
  4. Use seu e-mail da Atlassian como EMAIL na solicitação.
  5. Forneça projects ou customQueries com a solicitação. Para saber mais sobre consultas personalizadas, consulte Usar a pesquisa avançada com a linguagem de consulta do Jira (JQL).

    Quando você importa projects, projects é expandido nas consultas correspondentes para abarcar todo o projeto. Por exemplo, MyProject é expandido para project = MyProject.

  6. Clique em Copiar para receber o token da API, que autentica sua identidade e concede a você acesso a uma API.
  7. Adicione o token da API ao Secret Manager.
  8. Conceda o papel de Acessador de secrets do Secret Manager à conta de serviço do RAG Engine do projeto.

curl

EMAIL=JIRA_EMAIL
API_KEY_SECRET_VERSION=JIRA_API_KEY_SECRET_VERSION
SERVER_URI=JIRA_SERVER_URI
CUSTOM_QUERY=JIRA_CUSTOM_QUERY
PROJECT_ID=JIRA_PROJECT
REGION= "us-central1"

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${ ENDPOINT }/v1beta1/projects/${ PROJECT_ID }/locations/REGION>/ragCorpora/${ RAG_CORPUS_ID }/ragFiles:import \
-d '{
  "import_rag_files_config": {
    "jiraSource": {
      "jiraQueries": [{
        "projects": ["'"${ PROJECT_ID }"'"],
        "customQueries": ["'"${ CUSTOM_QUERY }"'"],
        "email": "'"${ EMAIL }"'",
        "serverUri": "'"${ SERVER_URI }"'",
        "apiKeyConfig": {
          "apiKeySecretVersion": "'"${ API_KEY_SECRET_VERSION }"'"
        }
      }]
    }
  }
}'

Python

    # Jira Example
    jira_query = rag.JiraQuery(
        email="xxx@yyy.com",
        jira_projects=["project1", "project2"],
        custom_queries=["query1", "query2"],
        api_key="api_key",
        server_uri="server.atlassian.net"
    )
    source = rag.JiraSource(
        queries=[jira_query],
    )

    response = rag.import_files(
        corpus_name="projects/my-project/locations/REGION/ragCorpora/my-corpus-1",
        source=source,
        chunk_size=512,
        chunk_overlap=100,
    )

Importar arquivos do SharePoint

Para importar arquivos do site do SharePoint para o corpus, faça o seguinte:

  1. Crie um corpus, que é um índice que estrutura e otimiza seus dados para pesquisa. Siga as instruções disponíveis em Crie um corpus de RAG.
  2. Crie um app do Azure para acessar o site do SharePoint.
    1. Para criar um registro, acesse Registros de apps.
      1. Dê um nome ao aplicativo.
      2. Escolha a opção Somente contas neste diretório organizacional.
      3. Verifique se os URIs de redirecionamento estão vazios.
    2. Na seção Visão geral, use o ID do aplicativo (cliente) como CLIENT_ID e o "ID do diretório (locatário)" como TENANT_ID.
    3. Na seção Gerenciar, atualize as permissões da API fazendo o seguinte:
      1. Adicione a permissão Sites.Read.All do SharePoint.
      2. Adicione as permissões Files.Read.All e Browser SiteLists.Read.All do Microsoft Graph.
      3. Conceda o consentimento do administrador para que essas mudanças de permissão entrem em vigor.
    4. Na seção Gerenciar, faça o seguinte:
      1. Atualize Certificados e chaves secretas com uma nova chave secreta do cliente.
      2. Use o API_KEY_SECRET_VERSION para adicionar o valor do secret ao Secret Manager.
  3. Conceda o papel de Acessador de secrets do Secret Manager à conta de serviço do RAG Engine do projeto.
  4. Use {YOUR_ORG_ID}.sharepoint.com como o SHAREPOINT_SITE_NAME.
  5. Um nome ou ID de unidade no site do SharePoint precisa ser especificado na solicitação.
  6. Opcional: é possível especificar um caminho ou ID de pasta na unidade. Se o caminho ou o ID da pasta não for especificado, todas as pastas e arquivos no drive serão importados.

curl

CLIENT_ID=SHAREPOINT_CLIENT_ID
API_KEY_SECRET_VERSION=SHAREPOINT_API_KEY_SECRET_VERSION
TENANT_ID=SHAREPOINT_TENANT_ID
SITE_NAME=SHAREPOINT_SITE_NAME
FOLDER_PATH=SHAREPOINT_FOLDER_PATH
DRIVE_NAME=SHAREPOINT_DRIVE_NAME

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${ ENDPOINT }/v1beta1/projects/${ PROJECT_ID }/locations/REGION>/ragCorpora/${ RAG_CORPUS_ID }/ragFiles:import \
-d '{
  "import_rag_files_config": {
    "sharePointSources": {
      "sharePointSource": [{
        "clientId": "'"${ CLIENT_ID }"'",
        "apiKeyConfig": {
          "apiKeySecretVersion": "'"${ API_KEY_SECRET_VERSION }"'"
        },
        "tenantId": "'"${ TENANT_ID }"'",
        "sharepointSiteName": "'"${ SITE_NAME }"'",
        "sharepointFolderPath": "'"${ FOLDER_PATH }"'",
        "driveName": "'"${ DRIVE_NAME }"'"
      }]
    }
  }
}'

Python

    from vertexai.preview import rag
    from vertexai.preview.rag.utils import resources

    CLIENT_ID="SHAREPOINT_CLIENT_ID"
    API_KEY_SECRET_VERSION="SHAREPOINT_API_KEY_SECRET_VERSION"
    TENANT_ID="SHAREPOINT_TENANT_ID"
    SITE_NAME="SHAREPOINT_SITE_NAME"
    FOLDER_PATH="SHAREPOINT_FOLDER_PATH"
    DRIVE_NAME="SHAREPOINT_DRIVE_NAME"

    # SharePoint Example.
    source = resources.SharePointSources(
        share_point_sources=[
            resources.SharePointSource(
                client_id=CLIENT_ID,
                client_secret=API_KEY_SECRET_VERSION,
                tenant_id=TENANT_ID,
                sharepoint_site_name=SITE_NAME,
                folder_path=FOLDER_PATH,
                drive_id=DRIVE_ID,
            )
        ]
    )

    response = rag.import_files(
        corpus_name="projects/my-project/locations/REGION/ragCorpora/my-corpus-1",
        source=source,
        chunk_size=512,
        chunk_overlap=100,
    )

A seguir