Use uma base de dados Weaviate com o Vertex AI RAG Engine

Esta página mostra como associar o seu corpus do motor RAG à base de dados Weaviate.

Também pode seguir este bloco de notas RAG Engine with Weaviate.

Pode usar a sua instância da base de dados Weaviate, que é uma base de dados de código aberto, com o motor RAG para indexar e realizar uma pesquisa de similaridade baseada em vetores. Uma pesquisa de similaridade é uma forma de encontrar fragmentos de texto semelhantes ao texto que procura, o que requer a utilização de um modelo de incorporação. O modelo de incorporação produz dados vetoriais para cada fragmento de texto que está a ser comparado. A pesquisa de semelhanças é usada para obter contextos semânticos para a fundamentação de modo a devolver o conteúdo mais preciso do seu MDG.

Com o motor RAG, pode continuar a usar a sua instância de base de dados vetorial totalmente gerida, cuja aprovisionamento é da sua responsabilidade. O motor RAG usa a base de dados vetorial para armazenamento, gestão de índices e pesquisa.

Considerações

Considere os seguintes passos antes de usar a base de dados Weaviate:

  1. Tem de criar, configurar e implementar a instância da base de dados e a coleção do Weaviate. Siga as instruções em Crie a sua coleção do Weaviate para configurar uma coleção com base no seu esquema.
  2. Tem de fornecer uma chave da API Weaviate, que permite que o motor RAG interaja com a base de dados Weaviate. O motor RAG suporta a AuthNcom base em chaves de API e AuthZ, que se liga à sua base de dados Weaviate e suporta uma ligação HTTPS.
  3. O motor RAG não armazena nem gere a sua chave da API Weaviate. Em vez disso, tem de fazer o seguinte:
    1. Armazene a chave no Google Cloud Secret Manager.
    2. Conceda autorizações à conta de serviço do seu projeto para aceder ao seu segredo.
    3. Conceda acesso do motor RAG ao nome do recurso do seu segredo.
    4. Quando interage com a sua base de dados do Weaviate, o motor RAG acede ao seu recurso secreto através da sua conta de serviço.
  4. O corpus do motor RAG e a coleção do Weaviate têm um mapeamento individual. Os ficheiros RAG são armazenados numa coleção de base de dados do Weaviate. Quando é feita uma chamada à API CreateRagCorpus ou à API UpdateRagCorpus, o corpus RAG é associado à coleção de bases de dados.
  5. Além das pesquisas semânticas baseadas em incorporações densas, a pesquisa híbrida também é suportada com o motor RAG através de uma base de dados Weaviate. Também pode ajustar a ponderação entre a semelhança de vetores densos e esparsos numa pesquisa híbrida.

Aprovisione a base de dados Weaviate

Antes de usar a base de dados Weaviate com o motor RAG, tem de fazer o seguinte:

  1. Configure e implemente a instância da base de dados do Weaviate.
  2. Prepare o ponto final do HTTPS.
  3. Crie a sua coleção do Weaviate.
  4. Use a sua chave da API para aprovisionar o Weaviate através de AuthN e AuthZ.
  5. Aprovisione a sua conta de serviço do RAG Engine.

Configure e implemente a instância da base de dados do Weaviate

Tem de seguir o início rápido do guia oficial do Weaviate. No entanto, pode usar o Google Cloud guia do Marketplace, que é opcional.

Pode configurar a sua instância do Weaviate em qualquer lugar, desde que o ponto final do Weaviate seja acessível para configurar e implementar no seu projeto. Em seguida, pode gerir totalmente a instância da base de dados do Weaviate.

Uma vez que o motor RAG não está envolvido em nenhuma fase do ciclo de vida da instância da base de dados Weaviate, é da sua responsabilidade conceder autorizações ao motor RAG para que possa armazenar e pesquisar dados na sua base de dados Weaviate. Também é da sua responsabilidade garantir que os dados na sua base de dados podem ser usados pelo motor RAG. Por exemplo, se alterar os seus dados, o motor RAG não é responsável por comportamentos inesperados devido a essas alterações.

Prepare o ponto final HTTPS

Durante o aprovisionamento do Weaviate, certifique-se de que cria um ponto final HTTPS. Embora as ligações HTTP sejam suportadas, preferimos que o tráfego do motor RAG e da base de dados Weaviate use uma ligação HTTPS.

Crie a sua coleção do Weaviate

Uma vez que o corpus do motor RAG e a coleção do Weaviate têm um mapeamento individual, tem de criar uma coleção na base de dados do Weaviate antes de associar a coleção ao corpus do motor RAG. Esta associação única é feita quando chama a API CreateRagCorpus ou a API UpdateRagCorpus.

Quando cria uma coleção no Weaviate, tem de usar o seguinte esquema:

Nome de propriedade Tipo de dados
fileId text
corpusId text
chunkId text
chunkDataType text
chunkData text
fileOriginalUri text

Use a sua chave da API para aprovisionar o Weaviate através de AuthN e AuthZ

O aprovisionamento da chave da API Weaviate envolve os seguintes passos:

  1. Crie a chave da API Weaviate.
  2. Configure o Weaviate com a sua chave da API Weaviate.
  3. Armazene a chave da API Weaviate no Secret Manager.

Crie a chave da API

O motor RAG só pode estabelecer ligação às instâncias da base de dados do Weaviate através da chave da API para autenticação e autorização. Tem de seguir o guia oficial de autenticação do Weaviate para configurar a autenticação baseada em chaves da API na sua instância da base de dados do Weaviate.

Se a criação da chave da API Weaviate exigir informações de identidade para associar a que provém do motor RAG, tem de criar o seu primeiro corpus e usar a sua conta de serviço do motor RAG como uma identidade.

Armazene a chave da API no Secret Manager

Uma chave de API contém informações de identificação pessoal confidenciais (SPII), que estão sujeitas a requisitos legais. Se os dados SPII forem comprometidos ou usados indevidamente, um indivíduo pode sofrer um risco ou um dano significativo. Para minimizar os riscos para um indivíduo ao usar o motor RAG, não armazene nem faça a gestão da sua chave da API e evite partilhar a chave da API não encriptada.

Para proteger as SPII, faça o seguinte:

  1. Armazene a chave da API no Secret Manager.
  2. Conceda à sua conta de serviço do motor RAG as autorizações para os seus segredos e faça a gestão do controlo de acesso ao nível do recurso secreto.
    1. Navegue para as autorizações do projeto.
    2. Ative a opção Incluir concessões de funções fornecidas pela Google.
    3. Encontre a conta de serviço, que tem o formato

      service-{project number}@gcp-sa-vertex-rag.iam.gserviceaccount.com

    4. Edite os principais da conta de serviço.
    5. Adicione a função Secret Manager Secret Accessor à conta de serviço.
  3. Durante a criação ou a atualização do corpus de RAG, transmita o nome do recurso secreto para o motor de RAG e armazene o nome do recurso secreto.

Quando faz pedidos de API às suas instâncias da base de dados do Weaviate, o motor RAG usa cada conta de serviço para ler a chave da API que corresponde aos seus recursos secretos no Secret Manager dos seus projetos.

Aprovisione a sua conta de serviço do RAG Engine

Quando cria o primeiro recurso no seu projeto, o motor RAG cria uma conta de serviço dedicada. Pode encontrar a sua conta de serviço na página IAM do projeto. A conta de serviço segue este formato:

service-{project number}@gcp-sa-vertex-rag.iam.gserviceaccount.com

Por exemplo, service-123456789@gcp-sa-vertex-rag.iam.gserviceaccount.com.

Quando se integra com a base de dados Weaviate, a sua conta de serviço é usada nos seguintes cenários:

  • Pode usar a sua conta de serviço para gerar a chave da API Weaviate para autenticação. Em alguns casos, a geração da chave da API não requer informações do utilizador, o que significa que não é necessária uma conta de serviço quando gera a chave da API.
  • Pode associar a sua conta de serviço à chave API na base de dados do Weaviate para configurar a autenticação (AuthN) e a autorização (AuthZ). No entanto, a sua conta de serviço não é obrigatória.
  • Pode armazenar a chave da API no Secret Manager no seu projeto e pode conceder autorizações à sua conta de serviço para estes recursos secretos.
  • O motor RAG usa contas de serviço para aceder à chave da API a partir do Secret Manager nos seus projetos.

Configure o seu Google Cloud ambiente de consola

Clique para saber como configurar o seu ambiente

Saiba como configurar o seu ambiente selecionando um dos seguintes separadores:

Python

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Enable the Vertex AI API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Enable the Vertex AI API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  6. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  7. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

    If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

  8. Instale ou atualize o SDK do Vertex AI para Python executando o seguinte comando:

    pip3 install --upgrade "google-cloud-aiplatform>=1.38"
        
  9. Node.js

      Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.

      In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

      Roles required to select or create a project

      • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
      • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

      Go to project selector

      Enable the Vertex AI API.

      Roles required to enable APIs

      To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

      Enable the API

      In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

      Roles required to select or create a project

      • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
      • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

      Go to project selector

      Enable the Vertex AI API.

      Roles required to enable APIs

      To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

      Enable the API

    1. In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

      At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    2. If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    3. Instale ou atualize o SDK Vertex AI para Node.js executando o seguinte comando:

      npm install @google-cloud/vertexai
          
    4. Java

        Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.

        In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

        Roles required to select or create a project

        • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
        • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

        Go to project selector

        Enable the Vertex AI API.

        Roles required to enable APIs

        To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

        Enable the API

        In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

        Roles required to select or create a project

        • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
        • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

        Go to project selector

        Enable the Vertex AI API.

        Roles required to enable APIs

        To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

        Enable the API

      1. In the Google Cloud console, activate Cloud Shell.

        Activate Cloud Shell

        At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

      2. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

        If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

      3. Para adicionar google-cloud-vertexai como uma dependência, adicione o código adequado para o seu ambiente:

        Maven com BOM

        Adicione o seguinte HTML ao seu pom.xml:

        <dependencyManagement>
          <dependencies>
            <dependency>
              <groupId>com.google.cloud</groupId>
              <artifactId>libraries-bom</artifactId>
              <version>26.32.0</version>
              <type>pom</type>
              <scope>import</scope>
            </dependency>
          </dependencies>
        </dependencyManagement>
        <dependencies>
          <dependency>
            <groupId>com.google.cloud</groupId>
            <artifactId>google-cloud-vertexai</artifactId>
          </dependency>
        </dependencies>
                    

        Maven sem BOM

        Adicione o seguinte HTML ao seu pom.xml:

        <dependency>
          <groupId>com.google.cloud</groupId>
          <artifactId>google-cloud-vertexai</artifactId>
          <version>0.4.0</version>
        </dependency>
                  

        Gradle without BOM

        Add the following to your build.gradle

        implementation 'com.google.cloud:google-cloud-vertexai:0.4.0'
      4. Go

          Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.

          In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

          Roles required to select or create a project

          • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
          • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

          Go to project selector

          Enable the Vertex AI API.

          Roles required to enable APIs

          To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

          Enable the API

          In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

          Roles required to select or create a project

          • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
          • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

          Go to project selector

          Enable the Vertex AI API.

          Roles required to enable APIs

          To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

          Enable the API

        1. In the Google Cloud console, activate Cloud Shell.

          Activate Cloud Shell

          At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

        2. If you're using a local shell, then create local authentication credentials for your user account:

          gcloud auth application-default login

          You don't need to do this if you're using Cloud Shell.

          If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

        3. Reveja os pacotes Go da API Vertex AI disponíveis para determinar que pacote melhor satisfaz as necessidades do seu projeto:

          • Pacote cloud.google.com/go/vertexai (recomendado)

            vertexai é um pacote criado por humanos que oferece acesso a capacidades e funcionalidades comuns.

            Este pacote é recomendado como ponto de partida para a maioria dos programadores que criam com a API Vertex AI. Para aceder a capacidades e funcionalidades ainda não abrangidas por este pacote, use o aiplatform gerado automaticamente.

          • Package cloud.google.com/go/aiplatform

            aiplatform é um pacote gerado automaticamente.

            Este pacote destina-se a projetos que requerem acesso a capacidades e funcionalidades da API Vertex AI ainda não disponibilizadas pelo pacote vertexai criado por humanos.

        4. Instale o pacote Go pretendido com base nas necessidades do seu projeto executando um dos seguintes comandos:

          # Human authored package. Recommended for most developers.
          go get cloud.google.com/go/vertexai
              
          # Auto-generated package. go get cloud.google.com/go/aiplatform
        5. C#

            Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.

            In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

            Roles required to select or create a project

            • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
            • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

            Go to project selector

            Enable the Vertex AI API.

            Roles required to enable APIs

            To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

            Enable the API

            In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

            Roles required to select or create a project

            • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
            • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

            Go to project selector

            Enable the Vertex AI API.

            Roles required to enable APIs

            To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

            Enable the API

          1. In the Google Cloud console, activate Cloud Shell.

            Activate Cloud Shell

            At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

          2. If you're using a local shell, then create local authentication credentials for your user account:

            gcloud auth application-default login

            You don't need to do this if you're using Cloud Shell.

            If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

          3. REST

              Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.

              In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

              Roles required to select or create a project

              • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
              • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

              Go to project selector

              Enable the Vertex AI API.

              Roles required to enable APIs

              To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

              Enable the API

              In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

              Roles required to select or create a project

              • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
              • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

              Go to project selector

              Enable the Vertex AI API.

              Roles required to enable APIs

              To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

              Enable the API

            1. In the Google Cloud console, activate Cloud Shell.

              Activate Cloud Shell

              At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

            2. Configure as variáveis de ambiente introduzindo o seguinte. Substitua PROJECT_ID pelo ID do seu Google Cloud projeto.
              MODEL_ID="gemini-2.0-flash-001"
              PROJECT_ID="PROJECT_ID"
                  
            3. Aprovisione o ponto final:
              gcloud beta services identity create --service=aiplatform.googleapis.com --project=${PROJECT_ID}
                  
            4. Opcional: se estiver a usar o Cloud Shell e lhe for pedido que autorize o Cloud Shell, clique em Autorizar.

Prepare o seu corpus de RAG

Para aceder aos dados da sua base de dados do Weaviate, o motor RAG tem de ter acesso a um corpus RAG. Esta secção fornece os passos para criar um único corpus de RAG e corpora de RAG adicionais.

Use as APIs CreateRagCorpus e UpdateRagCorpus

Tem de especificar os seguintes campos quando chamar as APIs CreateRagCorpus e UpdateRagCorpus:

  • rag_vector_db_config.weaviate: depois de chamar a API CreateRagCorpus, é escolhida a configuração da base de dados vetorial. A configuração da base de dados vetorial contém todos os campos de configuração. Se o campo rag_vector_db_config.weaviate não estiver definido, rag_vector_db_config.rag_managed_db é definido por predefinição.
  • weaviate.http_endpoint: O ponto final do HTTPS ou HTTP Weaviate é criado durante o aprovisionamento da instância da base de dados Weaviate.
  • weaviate.collection_name: o nome da coleção criada durante o aprovisionamento da instância do Weaviate. O nome tem de começar com uma letra maiúscula.
  • api_auth.api_key_config: a configuração especifica a utilização de uma chave da API para autorizar o seu acesso à base de dados vetorial.
  • api_key_config.api_key_secret_version: O nome do recurso do segredo armazenado no Secret Manager, que contém a sua chave da API Weaviate.

Pode criar e associar o seu corpus RAG à coleção do Weaviate na instância da base de dados. No entanto, pode precisar da conta de serviço para gerar a chave de API e configurar a instância da base de dados do Weaviate. Quando cria o seu primeiro corpus de RAG, a conta de serviço é gerada. Depois de criar o seu primeiro corpus de RAG, a associação entre a base de dados do Weaviate e a chave da API pode não estar pronta para utilização na criação de outro corpus de RAG.

Caso a base de dados e a chave não estejam prontas para serem associadas ao seu corpus de RAG, faça o seguinte ao seu corpus de RAG:

  1. Defina o campo weaviate em rag_vector_db_config.

    • Não pode alterar a base de dados vetorial associada.
    • Deixe os campos http_endpoint e collection_name vazios. Ambos os campos podem ser atualizados mais tarde.
  2. Se não tiver a chave da API armazenada no Secret Manager, pode deixar o campo api_auth vazio. Quando chama a API, pode atualizar o campo api_auth.UpdateRagCorpus O Weaviate requer que sejam feitas as seguintes ações:

    1. Defina o api_key_config no campo api_auth.
    2. Defina o api_key_secret_version da chave da API Weaviate no Secret Manager. O campo api_key_secret_version usa o seguinte formato:

      projects/{project}/secrets/{secret}/versions/{version}

  3. Se especificar campos que só podem ser definidos uma vez, como http_endpoint ou collection_name, não pode alterá-los, a menos que elimine o seu corpus RAG e o crie novamente. Outros campos, como o campo da chave da API, api_key_secret_version, podem ser atualizados.

  4. Quando chama UpdateRagCorpus, pode definir o campo vector_db. O valor de vector_db deve ser definido como weaviate pela chamada API CreateRagCorpus. Caso contrário, o sistema escolhe a opção Base de dados gerida por RAG, que é a predefinição. Não é possível alterar esta opção quando chama a API UpdateRagCorpus. Quando chama UpdateRagCorpus e o campo vector_db está parcialmente definido, pode atualizar os campos marcados como Alteráveis (também denominados mutáveis).

Esta tabela apresenta os campos WeaviateConfig mutáveis e imutáveis que são usados no seu código.

Nome do campo Mutável ou imutável
http_endpoint Imutável após a definição
collection_name Imutável após a definição
api_key_authentication Mutável

Crie o primeiro corpus de RAG

Quando a conta de serviço do motor RAG não existe, faça o seguinte:

  1. Crie um corpus RAG no motor RAG com uma configuração do Weaviate vazia, que inicia o aprovisionamento do motor RAG para criar uma conta de serviço.
  2. Escolha um nome para a sua conta de serviço do motor RAG que siga este formato:

    service-{project number}@gcp-sa-vertex-rag.iam.gserviceaccount.com

    Por exemplo, service-123456789@gcp-sa-vertex-rag.iam.gserviceaccount.com.

  3. Usando a sua conta de serviço, aceda ao segredo armazenado no Secret Manager do seu projeto, que contém a chave da API Weaviate.
  4. Obtenha as seguintes informações após a conclusão do aprovisionamento do Weaviate:
    • O seu ponto final de HTTPS ou HTTP do Weaviate.
    • O nome da sua coleção do Weaviate.
  5. Chame a API CreateRagCorpus para criar um corpus RAG com uma configuração do Weaviate vazia e chame a API UpdateRagCorpus para atualizar o corpus RAG com as seguintes informações:
    • O seu ponto final de HTTPS ou HTTP do Weaviate.
    • O nome da sua coleção do Weaviate.
    • O nome do recurso da chave da API.

Crie outro corpus RAG

Quando a conta de serviço do motor RAG existir, faça o seguinte:

  1. Obtenha a conta de serviço do motor RAG nas autorizações do projeto.
  2. Ative a opção "Incluir concessões de funções fornecidas pela Google"
  3. Escolha um nome para a sua conta de serviço do motor RAG que siga este formato:

    service-{project number}@gcp-sa-vertex-rag.iam.gserviceaccount.com

  4. Usando a sua conta de serviço, aceda ao segredo armazenado no Secret Manager do seu projeto, que contém a chave da API Weaviate.
  5. Durante o aprovisionamento do Weaviate, obtenha as seguintes informações:
    • O ponto final do HTTPS ou HTTP do Weaviate.
    • O nome da sua coleção do Weaviate.
  6. Crie um corpus RAG no motor RAG e estabeleça ligação à sua coleção do Weaviate através de uma das seguintes ações:
    1. Fazer uma chamada de API CreateRagCorpus para criar um corpus RAG com uma configuração do Weaviate preenchida, que é a opção preferencial.
    2. Faça uma chamada API CreateRagCorpuspara criar um corpus RAG com uma configuração do Weaviate vazia e faça uma chamada API UpdateRagCorpuspara atualizar o corpus RAG com as seguintes informações:
      • Ponto final de HTTP da base de dados Weaviate
      • Nome da coleção do Weaviate
      • Chave da API

Exemplos

Esta secção apresenta um exemplo de código que demonstra como configurar a base de dados do Weaviate, o Secret Manager, o corpus de RAG e o ficheiro RAG. Também é fornecido código de exemplo para demonstrar como importar ficheiros, obter contexto, gerar conteúdo e eliminar o corpus RAG e os ficheiros RAG.

Para usar o bloco de notas da API RAG do Model Garden, consulte o artigo Use o Weaviate com o Llama 3.

Configure a base de dados do Weaviate

Este exemplo de código demonstra como configurar os dados do Weaviate e o Secret Manager.

REST

# TODO(developer): Update the variables.
# The HTTPS/HTTP Weaviate endpoint you created during provisioning.
HTTP_ENDPOINT_NAME="https://your.weaviate.endpoint.com"

# Your Weaviate API Key.
WEAVIATE_API_KEY="example-api-key"

# Select your Weaviate collection name, which roughly corresponds to a Vertex AI Knowledge Engine Corpus.
# For example, "MyCollectionName"
# Note that the first letter needs to be capitalized.
# Otherwise, Weavaite will capitalize it for you.
WEAVIATE_COLLECTION_NAME="MyCollectionName"

# Create a collection in Weaviate which includes the required schema fields shown below.
echo '{
  "class": "'${WEAVIATE_COLLECTION_NAME}'",
  "properties": [
    { "name": "fileId", "dataType": [ "string" ] },
    { "name": "corpusId", "dataType": [ "string" ] },
    { "name": "chunkId", "dataType": [ "string" ] },
    { "name": "chunkDataType", "dataType": [ "string" ] },
    { "name": "chunkData", "dataType": [ "string" ] },
    { "name": "fileOriginalUri", "dataType": [ "string" ] }
  ]
}' | curl \
    -X POST \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer "${WEAVIATE_API_KEY} \
    -d @- \
    ${HTTP_ENDPOINT_NAME}/v1/schema

Configure o Secret Manager

Para configurar o Secret Manager, tem de ativar o Secret Manager e definir autorizações.

Criar Secret

Para ativar o Gestor Secreto, faça o seguinte:

Consola

  1. Aceda à página Secret Manager.

    Aceda ao Secret Manager

  2. Clique em + Criar segredo.

  3. Introduza o Nome do seu segredo. Os nomes dos Secrets só podem conter letras do alfabeto inglês (AZ), números (0-9), travessões (-) e sublinhados (_).

  4. A especificação dos seguintes campos é opcional:

    1. Para carregar o ficheiro com o seu segredo, clique em Procurar.
    2. Leia a Política de Replicação.
    3. Se quiser gerir manualmente as localizações do seu Secret, selecione a opção Gerir manualmente as localizações deste Secret. Tem de selecionar, pelo menos, uma região.
    4. Selecione a opção de encriptação.
    5. Se quiser definir manualmente o período de rotação, selecione Definir período de rotação.
    6. Se quiser especificar tópicos de publicação ou subscrição para receber notificações de eventos, clique em Adicionar tópicos.
    7. Por predefinição, o Secret nunca expira. Se quiser definir uma data de validade, selecione Definir data de validade.
    8. Por predefinição, as versões secretas são destruídas mediante pedido. Para atrasar a destruição de versões secretas, selecione Definir duração para destruição atrasada.
    9. Se quiser usar etiquetas para organizar e categorizar os seus segredos, clique em + Adicionar etiqueta.
    10. Se quiser usar anotações para anexar metadados não identificadores aos seus segredos, clique em + Adicionar anotação.
  5. Clique em Criar segredo.

REST

# Create a secret in SecretManager.
curl "https://secretmanager.googleapis.com/v1/projects/${PROJECT_ID}/secrets?secretId=${SECRET_NAME}" \
    --request "POST" \
    --header "authorization: Bearer $(gcloud auth print-access-token)" \
    --header "content-type: application/json" \
    --data "{\"replication\": {\"automatic\": {}}}"

Python

Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Python Vertex AI.

Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

# Import the Secret Manager client library.
from google.cloud import secretmanager


def create_secret(
    project_id: str, secret_id: str, ttl: Optional[str] = None
) -> secretmanager.Secret:
    """
    Create a new secret with the given name. A secret is a logical wrapper
    around a collection of secret versions. Secret versions hold the actual
    secret material.

     Args:
        project_id (str): The project ID where the secret is to be created.
        secret_id (str): The ID to assign to the new secret. This ID must be unique within the project.
        ttl (Optional[str]): An optional string that specifies the secret's time-to-live in seconds with
                             format (e.g., "900s" for 15 minutes). If specified, the secret
                             versions will be automatically deleted upon reaching the end of the TTL period.

    Returns:
        secretmanager.Secret: An object representing the newly created secret, containing details like the
                              secret's name, replication settings, and optionally its TTL.

    Example:
        # Create a secret with automatic replication and no TTL
        new_secret = create_secret("my-project", "my-new-secret")

        # Create a secret with a TTL of 30 days
        new_secret_with_ttl = create_secret("my-project", "my-timed-secret", "7776000s")
    """

    # Create the Secret Manager client.
    client = secretmanager.SecretManagerServiceClient()

    # Build the resource name of the parent project.
    parent = f"projects/{project_id}"

    # Create the secret.
    response = client.create_secret(
        request={
            "parent": parent,
            "secret_id": secret_id,
            "secret": {"replication": {"automatic": {}}, "ttl": ttl},
        }
    )

    # Print the new secret name.
    print(f"Created secret: {response.name}")

Defina autorizações

Tem de conceder autorizações do Secret Manager à sua conta de serviço.

Consola

  1. Na secção IAM e administrador da sua Google Cloud consola, encontre a conta de serviço e clique no ícone de lápis para editar.

  2. No campo Função, selecione Acesso ao segredo do Secret Manager.

Python

Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Python Vertex AI.

Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

def iam_grant_access(
    project_id: str, secret_id: str, member: str
) -> iam_policy_pb2.SetIamPolicyRequest:
    """
    Grant the given member access to a secret.
    """

    # Import the Secret Manager client library.
    from google.cloud import secretmanager

    # Create the Secret Manager client.
    client = secretmanager.SecretManagerServiceClient()

    # Build the resource name of the secret.
    name = client.secret_path(project_id, secret_id)

    # Get the current IAM policy.
    policy = client.get_iam_policy(request={"resource": name})

    # Add the given member with access permissions.
    policy.bindings.add(role="roles/secretmanager.secretAccessor", members=[member])

    # Update the IAM Policy.
    new_policy = client.set_iam_policy(request={"resource": name, "policy": policy})

    # Print data about the secret.
    print(f"Updated IAM policy on {secret_id}")

Adicione uma versão do Secret

REST

# TODO(developer): Update the variables.
# Select a resource name for your Secret, which contains your API Key.
SECRET_NAME="MyWeaviateApiKeySecret"

# Your Weaviate API Key.
WEAVIATE_API_KEY="example-api-key"
# Encode your WEAVIATE_API_KEY using base 64.
SECRET_DATA=$(echo ${WEAVIATE_API_KEY} | base64)

# Create a new version of your secret which uses SECRET_DATA as payload
curl "https://secretmanager.googleapis.com/v1/projects/${PROJECT_ID}/secrets/${SECRET_NAME}:addVersion" \
    --request "POST" \
    --header "authorization: Bearer $(gcloud auth print-access-token)" \
    --header "content-type: application/json" \
    --data "{\"payload\": {\"data\": \"${SECRET_DATA}\"}}"

Python

Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Python Vertex AI.

Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

from google.cloud import secretmanager
import google_crc32c  # type: ignore


def add_secret_version(
    project_id: str, secret_id: str, payload: str
) -> secretmanager.SecretVersion:
    """
    Add a new secret version to the given secret with the provided payload.
    """

    # Create the Secret Manager client.
    client = secretmanager.SecretManagerServiceClient()

    # Build the resource name of the parent secret.
    parent = client.secret_path(project_id, secret_id)

    # Convert the string payload into a bytes. This step can be omitted if you
    # pass in bytes instead of a str for the payload argument.
    payload_bytes = payload.encode("UTF-8")

    # Calculate payload checksum. Passing a checksum in add-version request
    # is optional.
    crc32c = google_crc32c.Checksum()
    crc32c.update(payload_bytes)

    # Add the secret version.
    response = client.add_secret_version(
        request={
            "parent": parent,
            "payload": {
                "data": payload_bytes,
                "data_crc32c": int(crc32c.hexdigest(), 16),
            },
        }
    )

    # Print the new secret version name.
    print(f"Added secret version: {response.name}")

Use o Weaviate com o Llama 3

O bloco de notas da API RAG do Model Garden demonstra como usar o SDK Vertex AI para Python com um corpus do Weaviate e um modelo Llama 3. Para usar o bloco de notas, tem de fazer o seguinte:

  1. Configure a sua base de dados Weaviate.

  2. Configure o Secret Manager.

  3. Use o notebook da API RAG do Model Garden.

Para ver mais exemplos, consulte a secção Exemplos.

Crie um corpus de RAG

Este exemplo de código demonstra como criar um corpus RAG e define a instância do Weaviate como a respetiva base de dados de vetores.

REST

  # TODO(developer): Update the variables.
  PROJECT_ID = "YOUR_PROJECT_ID"
  # The HTTPS/HTTP Weaviate endpoint you created during provisioning.
  HTTP_ENDPOINT_NAME="https://your.weaviate.endpoint.com"

  # Your Weaviate collection name, which roughly corresponds to a Vertex AI Knowledge Engine Corpus.
  # For example, "MyCollectionName"
  # Note that the first letter needs to be capitalized.
  # Otherwise, Weaviate will capitalize it for you.
  WEAVIATE_COLLECTION_NAME="MyCollectionName"

  # The resource name of your Weaviate API Key your Secret.
  SECRET_NAME="MyWeaviateApiKeySecret"
  # The Secret Manager resource name containing the API Key for your Weaviate endpoint.
  # For example, projects/{project}/secrets/{secret}/versions/latest
  APIKEY_SECRET_VERSION="projects/${PROJECT_ID}/secrets/${SECRET_NAME}/versions/latest"

  # Select a Corpus display name.
  CORPUS_DISPLAY_NAME="SpecialCorpus"

  # Call CreateRagCorpus API and set all Vector DB Config parameters for Weaviate to create a new corpus associated to your selected Weaviate collection.
  curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora \
  -d '{
        "display_name" : '\""${CORPUS_DISPLAY_NAME}"\"',
        "rag_vector_db_config" : {
                "weaviate": {
                      "http_endpoint": '\""${HTTP_ENDPOINT_NAME}"\"',
                      "collection_name": '\""${WEAVIATE_COLLECTION_NAME}"\"'
                },
          "api_auth" : {
                  "api_key_config": {
                        "api_key_secret_version": '\""${APIKEY_SECRET_VERSION}"\"'
                  }
          }
        }
    }'

  # TODO(developer): Update the variables.
  # Get operation_id returned in CreateRagCorpus.
  OPERATION_ID="your-operation-id"

  # Poll Operation status until done = true in the response.
  curl -X GET \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
  https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/operations/${OPERATION_ID}

  # Call ListRagCorpora API to verify the RAG corpus is created successfully.
  curl -sS -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora"

Python

Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Python Vertex AI.

Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.


from vertexai.preview import rag
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# weaviate_http_endpoint = "weaviate-http-endpoint"
# weaviate_collection_name = "weaviate-collection-name"
# weaviate_api_key_secret_manager_version = "projects/{PROJECT_ID}/secrets/{SECRET_NAME}/versions/latest"
# display_name = "test_corpus"
# description = "Corpus Description"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="us-central1")

# Configure embedding model (Optional)
embedding_model_config = rag.EmbeddingModelConfig(
    publisher_model="publishers/google/models/text-embedding-004"
)

# Configure Vector DB
vector_db = rag.Weaviate(
    weaviate_http_endpoint=weaviate_http_endpoint,
    collection_name=weaviate_collection_name,
    api_key=weaviate_api_key_secret_manager_version,
)

corpus = rag.create_corpus(
    display_name=display_name,
    description=description,
    embedding_model_config=embedding_model_config,
    vector_db=vector_db,
)
print(corpus)
# Example response:
# RagCorpus(name='projects/1234567890/locations/us-central1/ragCorpora/1234567890',
# display_name='test_corpus', description='Corpus Description', embedding_model_config=...
# ...

Use o ficheiro RAG

A API RAG processa o carregamento, a importação, a listagem e a eliminação de ficheiros.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: .
  • LOCATION: a região para processar o pedido.
  • RAG_CORPUS_ID: o ID do recurso RagCorpus.
  • INPUT_FILE: o caminho de um ficheiro local.
  • FILE_DISPLAY_NAME: o nome a apresentar do RagFile.
  • RAG_FILE_DESCRIPTION: a descrição do RagFile.

Método HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/upload/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:upload

Corpo JSON do pedido:

{
 "rag_file": {
  "display_name": "FILE_DISPLAY_NAME",
  "description": "RAG_FILE_DESCRIPTION"
 }
}

Para enviar o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro com o nome INPUT_FILE, e execute o seguinte comando:

curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @INPUT_FILE \
"https://LOCATION-aiplatform.googleapis.com/upload/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:upload"

PowerShell

Guarde o corpo do pedido num ficheiro com o nome INPUT_FILE, e execute o seguinte comando:

$headers = @{  }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile INPUT_FILE `
-Uri "https://LOCATION-aiplatform.googleapis.com/upload/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:upload" | Select-Object -Expand Content
Uma resposta bem-sucedida devolve o recurso RagFile. O último componente do campo RagFile.name é o rag_file_id gerado pelo servidor.

Python

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.


from vertexai import rag
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# corpus_name = "projects/{PROJECT_ID}/locations/us-central1/ragCorpora/{rag_corpus_id}"
# path = "path/to/local/file.txt"
# display_name = "file_display_name"
# description = "file description"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="us-central1")

rag_file = rag.upload_file(
    corpus_name=corpus_name,
    path=path,
    display_name=display_name,
    description=description,
)
print(rag_file)
# RagFile(name='projects/[PROJECT_ID]/locations/us-central1/ragCorpora/1234567890/ragFiles/09876543',
#  display_name='file_display_name', description='file description')

Importe ficheiros RAG

Pode importar ficheiros e pastas do Drive ou do Cloud Storage.

REST

Use response.metadata para ver falhas parciais, o tempo de pedido e o tempo de resposta no objeto response do SDK.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: .
  • LOCATION: a região para processar o pedido.
  • RAG_CORPUS_ID: o ID do recurso RagCorpus.
  • GCS_URIS: uma lista de localizações do Cloud Storage. Exemplo: gs://my-bucket1, gs://my-bucket2.
  • DRIVE_RESOURCE_ID: o ID do recurso do Drive. Exemplos:
    • https://drive.google.com/file/d/ABCDE
    • https://drive.google.com/corp/drive/u/0/folders/ABCDEFG
  • DRIVE_RESOURCE_TYPE: tipo de recurso do Drive. Opções:
    • RESOURCE_TYPE_FILE - Ficheiro
    • RESOURCE_TYPE_FOLDER – Pasta
  • CHUNK_SIZE: opcional: número de tokens que cada bloco deve ter.
  • CHUNK_OVERLAP: Opcional: número de tokens que se sobrepõem entre blocos.

Método HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/upload/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import

Corpo JSON do pedido:

{
  "import_rag_files_config": {
    "gcs_source": {
      "uris": GCS_URIS
    },
    "google_drive_source": {
      "resource_ids": {
        "resource_id": DRIVE_RESOURCE_ID,
        "resource_type": DRIVE_RESOURCE_TYPE
      },
    }
  }
}

Para enviar o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/upload/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import"

PowerShell

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

$headers = @{  }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/upload/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import" | Select-Object -Expand Content
Uma resposta bem-sucedida devolve o recurso ImportRagFilesOperationMetadata.

O exemplo seguinte demonstra como importar um ficheiro do Cloud Storage. Use o campo de controlo max_embedding_requests_per_min para limitar a taxa à qual o motor RAG chama o modelo de incorporação durante o processo de indexação ImportRagFiles. O campo tem um valor predefinido de 1000 chamadas por minuto.

// Cloud Storage bucket/file location.
// Such as "gs://rag-e2e-test/"
GCS_URIS=YOUR_GCS_LOCATION

// Enter the QPM rate to limit RAG's access to your embedding model
// Example: 1000
EMBEDDING_MODEL_QPM_RATE=MAX_EMBEDDING_REQUESTS_PER_MIN_LIMIT

// ImportRagFiles
// Import a single Cloud Storage file or all files in a Cloud Storage bucket.
// Input: ENDPOINT, PROJECT_ID, RAG_CORPUS_ID, GCS_URIS
// Output: ImportRagFilesOperationMetadataNumber
// Use ListRagFiles to find the server-generated rag_file_id.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/ragCorpora/${RAG_CORPUS_ID}/ragFiles:import \
-d '{
  "import_rag_files_config": {
    "gcs_source": {
      "uris": '\""${GCS_URIS}"\"'
    },
    "rag_file_chunking_config": {
      "chunk_size": 512
    },
    "max_embedding_requests_per_min": '"${EMBEDDING_MODEL_QPM_RATE}"'
  }
}'

// Poll the operation status.
// The response contains the number of files imported.
OPERATION_ID=OPERATION_ID
poll_op_wait ${OPERATION_ID}

O exemplo seguinte demonstra como importar um ficheiro do Drive. Use o campo de controlo max_embedding_requests_per_min para limitar a taxa à qual o motor RAG chama o modelo de incorporação durante o ImportRagFiles processo de indexação. O campo tem um valor predefinido de 1000 chamadas por minuto.

// Google Drive folder location.
FOLDER_RESOURCE_ID=YOUR_GOOGLE_DRIVE_FOLDER_RESOURCE_ID

// Enter the QPM rate to limit RAG's access to your embedding model
// Example: 1000
EMBEDDING_MODEL_QPM_RATE=MAX_EMBEDDING_REQUESTS_PER_MIN_LIMIT

// ImportRagFiles
// Import all files in a Google Drive folder.
// Input: ENDPOINT, PROJECT_ID, RAG_CORPUS_ID, FOLDER_RESOURCE_ID
// Output: ImportRagFilesOperationMetadataNumber
// Use ListRagFiles to find the server-generated rag_file_id.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/ragCorpora/${RAG_CORPUS_ID}/ragFiles:import \
-d '{
  "import_rag_files_config": {
    "google_drive_source": {
      "resource_ids": {
        "resource_id": '\""${FOLDER_RESOURCE_ID}"\"',
        "resource_type": "RESOURCE_TYPE_FOLDER"
      }
    },
    "max_embedding_requests_per_min": '"${EMBEDDING_MODEL_QPM_RATE}"'
  }
}'

// Poll the operation status.
// The response contains the number of files imported.
OPERATION_ID=OPERATION_ID
poll_op_wait ${OPERATION_ID}

Python

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.


from vertexai import rag
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# corpus_name = "projects/{PROJECT_ID}/locations/us-central1/ragCorpora/{rag_corpus_id}"
# paths = ["https://drive.google.com/file/123", "gs://my_bucket/my_files_dir"]  # Supports Google Cloud Storage and Google Drive Links

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="us-central1")

response = rag.import_files(
    corpus_name=corpus_name,
    paths=paths,
    transformation_config=rag.TransformationConfig(
        rag.ChunkingConfig(chunk_size=512, chunk_overlap=100)
    ),
    import_result_sink="gs://sample-existing-folder/sample_import_result_unique.ndjson",  # Optional, this has to be an existing storage bucket folder, and file name has to be unique (non-existent).
    max_embedding_requests_per_min=900,  # Optional
)
print(f"Imported {response.imported_rag_files_count} files.")
# Example response:
# Imported 2 files.

Obtenha um ficheiro RAG

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: .
  • LOCATION: a região para processar o pedido.
  • RAG_CORPUS_ID: o ID do recurso RagCorpus.
  • RAG_FILE_ID: o ID do recurso RagFile.

Método HTTP e URL:

GET https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID

Para enviar o seu pedido, escolha uma destas opções:

curl

Execute o seguinte comando:

curl -X GET \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID"

PowerShell

Execute o seguinte comando:

$headers = @{  }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID" | Select-Object -Expand Content
Uma resposta bem-sucedida devolve o recurso RagFile.

Python

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.


from vertexai import rag
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# file_name = "projects/{PROJECT_ID}/locations/us-central1/ragCorpora/{rag_corpus_id}/ragFiles/{rag_file_id}"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="us-central1")

rag_file = rag.get_file(name=file_name)
print(rag_file)
# Example response:
# RagFile(name='projects/1234567890/locations/us-central1/ragCorpora/11111111111/ragFiles/22222222222',
# display_name='file_display_name', description='file description')

Liste ficheiros RAG

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: .
  • LOCATION: a região para processar o pedido.
  • RAG_CORPUS_ID: o ID do recurso RagCorpus.
  • PAGE_SIZE: o tamanho da página da lista padrão. Pode ajustar o número de RagFiles a devolver por página atualizando o parâmetro page_size.
  • PAGE_TOKEN: o símbolo da página de lista padrão. Obtido normalmente através de ListRagFilesResponse.next_page_token da chamada VertexRagDataService.ListRagFiles anterior.

Método HTTP e URL:

GET https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles?page_size=PAGE_SIZE&page_token=PAGE_TOKEN

Para enviar o seu pedido, escolha uma destas opções:

curl

Execute o seguinte comando:

curl -X GET \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles?page_size=PAGE_SIZE&page_token=PAGE_TOKEN"

PowerShell

Execute o seguinte comando:

$headers = @{  }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles?page_size=PAGE_SIZE&page_token=PAGE_TOKEN" | Select-Object -Expand Content
Deve receber um código de estado de êxito (2xx) juntamente com uma lista de RagFiles no RAG_CORPUS_ID indicado.

Python

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.


from vertexai import rag
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# corpus_name = "projects/{PROJECT_ID}/locations/us-central1/ragCorpora/{rag_corpus_id}"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="us-central1")

files = rag.list_files(corpus_name=corpus_name)
for file in files:
    print(file.display_name)
    print(file.name)
# Example response:
# g-drive_file.txt
# projects/1234567890/locations/us-central1/ragCorpora/111111111111/ragFiles/222222222222
# g_cloud_file.txt
# projects/1234567890/locations/us-central1/ragCorpora/111111111111/ragFiles/333333333333

Elimine um ficheiro RAG

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: .
  • LOCATION: a região para processar o pedido.
  • RAG_CORPUS_ID: o ID do recurso RagCorpus.
  • RAG_FILE_ID: o ID do recurso RagFile. Formato: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}/ragFiles/{rag_file_id}.

Método HTTP e URL:

DELETE https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID

Para enviar o seu pedido, escolha uma destas opções:

curl

Execute o seguinte comando:

curl -X DELETE \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID"

PowerShell

Execute o seguinte comando:

$headers = @{  }

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID" | Select-Object -Expand Content
Uma resposta bem-sucedida devolve o recurso DeleteOperationMetadata.

Python

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.


from vertexai import rag
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# file_name = "projects/{PROJECT_ID}/locations/us-central1/ragCorpora/{rag_corpus_id}/ragFiles/{rag_file_id}"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="us-central1")

rag.delete_file(name=file_name)
print(f"File {file_name} deleted.")
# Example response:
# Successfully deleted the RagFile.
# File projects/1234567890/locations/us-central1/ragCorpora/1111111111/ragFiles/2222222222 deleted.

Obter contexto

Quando um utilizador faz uma pergunta ou fornece um comando, o componente de obtenção na RAG pesquisa na respetiva base de conhecimentos para encontrar informações relevantes para a consulta.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • LOCATION: a região para processar o pedido.
  • PROJECT_ID: .
  • RAG_CORPUS_RESOURCE: o nome do recurso RagCorpus. Formato: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • VECTOR_DISTANCE_THRESHOLD: apenas são devolvidos contextos com uma distância vetorial inferior ao limite.
  • TEXT: o texto da consulta para obter contextos relevantes.
  • SIMILARITY_TOP_K: o número de contextos principais a obter.

Método HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts

Corpo JSON do pedido:

{
 "vertex_rag_store": {
    "rag_resources": {
      "rag_corpus": "RAG_CORPUS_RESOURCE",
    },
    "vector_distance_threshold": 0.8
  },
  "query": {
   "text": "TEXT",
   "similarity_top_k": SIMILARITY_TOP_K
  }
 }

Para enviar o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts"

PowerShell

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

$headers = @{  }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts" | Select-Object -Expand Content
Deve receber um código de estado de êxito (2xx) e uma lista de RagFiles relacionados.

Python

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.


from vertexai import rag
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# corpus_name = "projects/[PROJECT_ID]/locations/us-central1/ragCorpora/[rag_corpus_id]"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="us-central1")

response = rag.retrieval_query(
    rag_resources=[
        rag.RagResource(
            rag_corpus=corpus_name,
            # Optional: supply IDs from `rag.list_files()`.
            # rag_file_ids=["rag-file-1", "rag-file-2", ...],
        )
    ],
    text="Hello World!",
    rag_retrieval_config=rag.RagRetrievalConfig(
        top_k=10,
        filter=rag.utils.resources.Filter(vector_distance_threshold=0.5),
    ),
)
print(response)
# Example response:
# contexts {
#   contexts {
#     source_uri: "gs://your-bucket-name/file.txt"
#     text: "....
#   ....

Gera conteúdo

Uma previsão controla o método do MDG que gera conteúdo.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: .
  • LOCATION: a região para processar o pedido.
  • MODEL_ID: modelo de GML para geração de conteúdo. Exemplo: gemini-2.5-flash
  • GENERATION_METHOD: método de MDI para geração de conteúdo. Opções: generateContent, streamGenerateContent
  • INPUT_PROMPT: o texto enviado ao MDI/CE para geração de conteúdo. Experimente usar um comando relevante para os ficheiros RAG carregados.
  • RAG_CORPUS_RESOURCE: o nome do recurso RagCorpus. Formato: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • SIMILARITY_TOP_K: Opcional: o número de contextos principais a obter.
  • VECTOR_DISTANCE_THRESHOLD: opcional: são devolvidos contextos com uma distância vetorial inferior ao limite.

Método HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD

Corpo JSON do pedido:

{
 "contents": {
  "role": "user",
  "parts": {
    "text": "INPUT_PROMPT"
  }
 },
 "tools": {
  "retrieval": {
   "disable_attribution": false,
   "vertex_rag_store": {
    "rag_resources": {
      "rag_corpus": "RAG_CORPUS_RESOURCE",
    },
    "similarity_top_k": SIMILARITY_TOP_K,
    "vector_distance_threshold": VECTOR_DISTANCE_THRESHOLD
   }
  }
 }
}

Para enviar o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

curl -X POST \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD"

PowerShell

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

$headers = @{  }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD" | Select-Object -Expand Content
Uma resposta bem-sucedida devolve o conteúdo gerado com citações.

Python

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.


from vertexai import rag
from vertexai.generative_models import GenerativeModel, Tool
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# corpus_name = "projects/{PROJECT_ID}/locations/us-central1/ragCorpora/{rag_corpus_id}"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="us-central1")

rag_retrieval_tool = Tool.from_retrieval(
    retrieval=rag.Retrieval(
        source=rag.VertexRagStore(
            rag_resources=[
                rag.RagResource(
                    rag_corpus=corpus_name,
                    # Optional: supply IDs from `rag.list_files()`.
                    # rag_file_ids=["rag-file-1", "rag-file-2", ...],
                )
            ],
            rag_retrieval_config=rag.RagRetrievalConfig(
                top_k=10,
                filter=rag.utils.resources.Filter(vector_distance_threshold=0.5),
            ),
        ),
    )
)

rag_model = GenerativeModel(
    model_name="gemini-2.0-flash-001", tools=[rag_retrieval_tool]
)
response = rag_model.generate_content("Why is the sky blue?")
print(response.text)
# Example response:
#   The sky appears blue due to a phenomenon called Rayleigh scattering.
#   Sunlight, which contains all colors of the rainbow, is scattered
#   by the tiny particles in the Earth's atmosphere....
#   ...

A pesquisa híbrida é suportada pela base de dados Weaviate, que combina pesquisas semânticas e de palavras-chave para melhorar a relevância dos resultados da pesquisa. Durante a obtenção dos resultados da pesquisa, uma combinação de classificações de semelhança da correspondência semântica (um vetor denso) e de palavras-chave (um vetor esparso) produz os resultados finais classificados.

Pesquisa híbrida com a API de obtenção do motor RAG

Este é um exemplo de como ativar uma pesquisa híbrida através da API de obtenção do motor RAG.

REST

  # TODO(developer): Update the variables.
  PROJECT_ID = "YOUR_PROJECT_ID"
  # The HTTPS/HTTP Weaviate endpoint you created during provisioning.
  HTTP_ENDPOINT_NAME="https://your.weaviate.endpoint.com"

  # Your Weaviate collection name, which roughly corresponds to a Vertex AI Knowledge Engine Corpus.
  # For example, "MyCollectionName"
  # Note that the first letter needs to be capitalized.
  # Otherwise, Weaviate will capitalize it for you.
  WEAVIATE_COLLECTION_NAME="MyCollectionName"

  # The resource name of your Weaviate API Key your Secret.
  SECRET_NAME="MyWeaviateApiKeySecret"
  # The Secret Manager resource name containing the API Key for your Weaviate endpoint.
  # For example, projects/{project}/secrets/{secret}/versions/latest
  APIKEY_SECRET_VERSION="projects/${PROJECT_ID}/secrets/${SECRET_NAME}/versions/latest"

  # Select a Corpus display name.
  CORPUS_DISPLAY_NAME="SpecialCorpus"

  # Call CreateRagCorpus API and set all Vector DB Config parameters for Weaviate to create a new corpus associated to your selected Weaviate collection.
  curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora \
  -d '{
        "display_name" : '\""${CORPUS_DISPLAY_NAME}"\"',
        "rag_vector_db_config" : {
                "weaviate": {
                      "http_endpoint": '\""${HTTP_ENDPOINT_NAME}"\"',
                      "collection_name": '\""${WEAVIATE_COLLECTION_NAME}"\"'
                },
          "api_auth" : {
                  "api_key_config": {
                        "api_key_secret_version": '\""${APIKEY_SECRET_VERSION}"\"'
                  }
          }
        }
    }'

  # TODO(developer): Update the variables.
  # Get operation_id returned in CreateRagCorpus.
  OPERATION_ID="your-operation-id"

  # Poll Operation status until done = true in the response.
  curl -X GET \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
  https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/operations/${OPERATION_ID}

  # Call ListRagCorpora API to verify the RAG corpus is created successfully.
  curl -sS -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora"

Python

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.


from vertexai import rag
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# corpus_name = "projects/[PROJECT_ID]/locations/us-central1/ragCorpora/[rag_corpus_id]"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="us-central1")

response = rag.retrieval_query(
    rag_resources=[
        rag.RagResource(
            rag_corpus=corpus_name,
            # Optional: supply IDs from `rag.list_files()`.
            # rag_file_ids=["rag-file-1", "rag-file-2", ...],
        )
    ],
    text="Hello World!",
    rag_retrieval_config=rag.RagRetrievalConfig(
        top_k=10,
        filter=rag.utils.resources.Filter(vector_distance_threshold=0.5),
    ),
)
print(response)
# Example response:
# contexts {
#   contexts {
#     source_uri: "gs://your-bucket-name/file.txt"
#     text: "....
#   ....

Use a pesquisa híbrida e o motor RAG para a geração fundamentada

Este é um exemplo de como usar a pesquisa híbrida e o motor RAG para geração fundamentada.

REST

  # TODO(developer): Update the variables.
  PROJECT_ID = "YOUR_PROJECT_ID"
  # The HTTPS/HTTP Weaviate endpoint you created during provisioning.
  HTTP_ENDPOINT_NAME="https://your.weaviate.endpoint.com"

  # Your Weaviate collection name, which roughly corresponds to a Vertex AI Knowledge Engine Corpus.
  # For example, "MyCollectionName"
  # Note that the first letter needs to be capitalized.
  # Otherwise, Weaviate will capitalize it for you.
  WEAVIATE_COLLECTION_NAME="MyCollectionName"

  # The resource name of your Weaviate API Key your Secret.
  SECRET_NAME="MyWeaviateApiKeySecret"
  # The Secret Manager resource name containing the API Key for your Weaviate endpoint.
  # For example, projects/{project}/secrets/{secret}/versions/latest
  APIKEY_SECRET_VERSION="projects/${PROJECT_ID}/secrets/${SECRET_NAME}/versions/latest"

  # Select a Corpus display name.
  CORPUS_DISPLAY_NAME="SpecialCorpus"

  # Call CreateRagCorpus API and set all Vector DB Config parameters for Weaviate to create a new corpus associated to your selected Weaviate collection.
  curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora \
  -d '{
        "display_name" : '\""${CORPUS_DISPLAY_NAME}"\"',
        "rag_vector_db_config" : {
                "weaviate": {
                      "http_endpoint": '\""${HTTP_ENDPOINT_NAME}"\"',
                      "collection_name": '\""${WEAVIATE_COLLECTION_NAME}"\"'
                },
          "api_auth" : {
                  "api_key_config": {
                        "api_key_secret_version": '\""${APIKEY_SECRET_VERSION}"\"'
                  }
          }
        }
    }'

  # TODO(developer): Update the variables.
  # Get operation_id returned in CreateRagCorpus.
  OPERATION_ID="your-operation-id"

  # Poll Operation status until done = true in the response.
  curl -X GET \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
  https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/operations/${OPERATION_ID}

  # Call ListRagCorpora API to verify the RAG corpus is created successfully.
  curl -sS -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora"

Python

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.


from vertexai import rag
from vertexai.generative_models import GenerativeModel, Tool
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# corpus_name = "projects/{PROJECT_ID}/locations/us-central1/ragCorpora/{rag_corpus_id}"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="us-central1")

rag_retrieval_tool = Tool.from_retrieval(
    retrieval=rag.Retrieval(
        source=rag.VertexRagStore(
            rag_resources=[
                rag.RagResource(
                    rag_corpus=corpus_name,
                    # Optional: supply IDs from `rag.list_files()`.
                    # rag_file_ids=["rag-file-1", "rag-file-2", ...],
                )
            ],
            rag_retrieval_config=rag.RagRetrievalConfig(
                top_k=10,
                filter=rag.utils.resources.Filter(vector_distance_threshold=0.5),
            ),
        ),
    )
)

rag_model = GenerativeModel(
    model_name="gemini-2.0-flash-001", tools=[rag_retrieval_tool]
)
response = rag_model.generate_content("Why is the sky blue?")
print(response.text)
# Example response:
#   The sky appears blue due to a phenomenon called Rayleigh scattering.
#   Sunlight, which contains all colors of the rainbow, is scattered
#   by the tiny particles in the Earth's atmosphere....
#   ...

O que se segue?