Melhore os resultados da pesquisa com o ajuste de pesquisa

Um modelo de pesquisa ajustado pode oferecer resultados de melhor qualidade do que o modelo de pesquisa de base.

O ajuste de pesquisa é particularmente valioso se você tiver consultas específicas do setor ou da empresa que não são bem resolvidas por LLMs gerais. Ele pode ser usado para treinar o modelo de pesquisa.

Limitações

O ajuste de pesquisa só pode ser aplicado a repositórios de dados não estruturados.

Sobre os dados de treinamento

Para ajustar um modelo de pesquisa, comece reunindo dados de treinamento.

Os dados de treinamento precisam conter as consultas que você espera que os usuários finais vai fazer, e trechos de texto de 250 a 500 palavras, que contêm as informações necessárias para responder às consultas. Uma consulta pode ser associada a vários snippets, desde que cada um deles tenha informações que respondam à consulta.

Os dados de treinamento também devem conter snippets de texto que não são pareados com consultas, mas são semelhantes às respostas em estilo e comprimento. Esses snippets sem consultas associadas fornecem negativos aleatórios para ajustar o modelo. O Google recomenda que você forneça pelo menos 10.000 desses de vídeo.

Aqui está uma terminologia para descrever os dados de treinamento que você vai precisar fornecem:

  • Consultas de treinamento: consultas que você espera que os usuários finais façam. Concentre-se em consultas com terminologia específica do domínio ou da empresa.

    Informe pelo menos 100.

  • Segmentos extrativos: os snippets (geralmente vários parágrafos) precisam ser extraídos literalmente dos documentos no repositório de dados. Todos os documentos juntos no repositório de dados são chamadas de "o corpus".

    Você precisa fornecer dois tipos de segmentos de extração:

    • Segmentos que contêm informações relevantes necessárias para responder às consultas de treinamento. São segmentos que têm correspondência positiva com consultas.

    • Segmentos que não estão associados a consultas de treinamento. Esses segmentos são usados como negativos aleatórios no ajuste do modelo.

    Uma ou duas frases não são longas o suficiente para serem um segmento extrativo. as precisa conter contexto suficiente para o treinamento. Por exemplo, em resposta a uma consulta como "quem fundou o Google", um trecho curto como "Larry Página" é insuficiente. Para exemplos de segmentos suficientemente longos, consulte a tabela de exemplos a seguir.

    Forneça pelo menos um segmento de extração por consulta e pelo menos 10.000 segmentos de extração adicionais.

  • Pontuações de relevância:são números inteiros não negativos que estimam a relevância do segmento extrativo para a consulta. Você fornece uma o valor da pontuação de cada par de consulta e segmento extrativo. Uma pontuação de 0 significa que o segmento de extração não é relevante para a consulta. Uma pontuação maior do que zero indica alguma relevância. Para uma pontuação simples, o Google recomenda 1 para todos os segmentos relevantes e 0 para os não relevantes. Como alternativa, se você quiser classificar a relevância, atribua pontuações de 0 a 10 (por exemplo), sendo 10 para os segmentos mais relevantes e 0 para os que não são relevantes.

    Forneça pelo menos 100 notas relevantes e, se quiser, outras notas não relevantes.

Exemplos de pares de segmentos de consulta e de extração

A tabela a seguir mostra alguns exemplos de pares de consultas e segmentos extrativos. Esses exemplos gerais foram retirados da Wikipedia. No entanto, Para fazer ajustes úteis, forneça documentos de conjuntos de dados reservados que contêm informações específicas sobre sua empresa e que são encontrados na Web.

O último par nesta tabela é um exemplo de par de pontuação zero, em que o não é relevante para a consulta.

Consulta de treinamento Segmento extrativo Pontuação
quem fundou o Google? O Google foi fundado em 4 de setembro de 1998 pelos cientistas da computação americanos Larry Page e Sergey Brin, quando eles eram estudantes de doutorado na Universidade de Stanford na Califórnia. Juntos, eles são proprietários de cerca de 14% das ações listadas publicamente e controlam 56% do poder de voto dos acionistas por meio de ações com direito a voto extra. O empresa se tornou pública por meio de uma oferta pública inicial (IPO, na sigla em inglês) em 2004. Em 2015, o Google foi reorganizado como uma subsidiária integral da Alphabet Inc. O Google é a maior subsidiária da Alphabet e é uma holding das propriedades e interesses da Alphabet na Internet. Sundar Pichai foi nomeado CEO do Google em outubro 24 de abril de 2015, substituindo Larry Page, CEO da Alphabet. Em 3 de dezembro de 2019, Pichai também se tornou o CEO da Alphabet. [...] Na lista das marcas mais valiosas, o Google está em segundo lugar na Forbes e em quarto lugar na Interbrand. 1
Para onde o sangue é bombeado depois de sair do ventrículo direito? O sangue oxigenado sai dos pulmões pelas veias pulmonares, que o devolvem à parte esquerda do coração, completando o ciclo pulmonar. Esse sangue entra no átrio esquerdo, que o bombeia através da válvula mitral para dentro da ventrículo esquerdo. A partir do ventrículo esquerdo, o sangue passa pela válvula aórtica até a aorta. Depois, o sangue é distribuído para o corpo pela circulação sistêmica antes de voltar novamente à fase pulmonar circulação. Artérias Artigo principal: artéria pulmonar pela direita ventrículo, o sangue é bombeado pela válvula pulmonar semilunar para a esquerda e artéria pulmonar principal direita (uma para cada pulmão), que se ramifica Artérias pulmonares que se espalham por todos os pulmões. [...] A derivação cardíaca é uma conexão artificial entre as partes. do coração que leva ao fluxo sanguíneo que desvia dos pulmões. 1
onde fica o hall da fama do boliche? localizada? O World Bowling Writers ( WBW ) International Bowling Hall of Fame foi criado em 1993 e está localizado no International Bowling Museum and Hall of Fame , no International Bowling Campus em Arlington, Texas. História O International Bowling Museum and Hall of Fame ficava em 11 Stadium Plaza, St. Louis, Missouri, EUA, e compartilhava o mesmo edifício com o St. Louis Cardinals Hall of Fame Museum, até 8 de novembro de 2008. Ele se mudou para Arlington e reabriu no início de 2010. Em 2012, o WBW foi fundido com o Associação Internacional de Mídia Boliche. Após a fusão, o WBW Hall of Os indicados se tornaram parte do IBMA Luby Hall of Fame. oficiais do World Bowling Writers, que formava o Hall's Board.][...] A o homem e a mulher que receberem a maioria dos votos serão eleitos. 1
por que o céu é azul? Uma mensagem de "Hello, World!" normalmente é um programa de computador simples envia (ou exibe) na tela (geralmente o console) uma mensagem semelhante a "Hello World!" ignorando as entradas do usuário. Um pequeno trecho de código na maioria das linguagens de programação de uso geral, esse programa é usado para ilustrar a sintaxe básica de uma linguagem. Um programa "Hello, World!" geralmente é o primeiro escrito por um estudante de uma nova linguagem de programação, mas esse programa também pode ser usado como uma verificação para garantir que o software do computador destinado a compilar ou executar o código-fonte esteja instalado corretamente e que o operador entenda como usá-lo. [...] A versão em C foi precedida pelo próprio tutorial A de Kernighan de 1972 Introdução ao idioma B, em que a primeira versão conhecida do programa é encontrada em um exemplo usado para ilustrar variáveis externas 0

Sobre os testes

Após o treinamento, a pesquisa ajustada é testada para determinar se o ajuste melhorou os resultados. Você pode fornecer explicitamente as consultas que quer testar. Se você não fornecerem consultas de teste, a Vertex AI para Pesquisa usará 20% consultas de treinamento como consultas de teste.

Arquivos de treinamento

É preciso fazer o upload dos dados de treinamento em três (opcional) quatro arquivos:

Os três arquivos de treinamento (arquivo de corpus, arquivo de consulta e arquivo de rótulos de treinamento) e o arquivo de rótulos de teste (opcional) precisam estar no Cloud Storage. Os caminhos dos arquivos são definidos por campos na chamada trainCustomMethod.

Arquivo de corpus

O arquivo de corpus contém segmentos extrativos: segmentos que contêm informações para responder às consultas no arquivo de consulta e muitos outros segmentos para serem usados como negativos aleatórios ao ajustar o modelo. Você deve ter pelo menos 100 segmentos que contêm respostas de consultas; consultas podem ser respondidas por vários segmentos. Você também deve ter pelo menos 10.000 segmentos.

Se os documentos em seu repositório de dados contiverem menos de 500 palavras, você poderá usar documentos inteiros como segmentos. Caso contrário, crie segmentos aleatórios de 250 a 500 palavras dos documentos no repositório de dados e adicione-os ao arquivo de corpus.

O arquivo de corpus é um arquivo JSONL (linhas JSON) em que cada linha tem os campos _id e text com valores de string. Exemplo:

  {"_id": "doc1", "text": "Google was founded on September 4, 1998, by American computer scientists Larry Page and Sergey Brin while they were PhD students at Stanford University in California. Together they own about 14% of its publicly listed shares and control 56% of its stockholder voting power through super-voting stock. The company went public via an initial public offering (IPO) in 2004. In 2015, Google was reorganized as a wholly owned subsidiary of Alphabet Inc. Google is Alphabet's largest subsidiary and is a holding company for Alphabet's internet properties and interests. Sundar Pichai was appointed CEO of Google on October 24, 2015, replacing Larry Page, who became the CEO of Alphabet. On December 3, 2019, Pichai also became the CEO of Alphabet. [...] On the list of most valuable brands, Google is 105 ranked second by Forbes and fourth by Interbrand."}
  {"_id": "doc2", "text": "Oxygenated blood leaves the lungs through pulmonary veins, which return it to the left part of the heart, completing the pulmonary cycle. This blood then enters the left atrium, which pumps it through the mitral valve into the left ventricle. From the left ventricle, the blood passes through the aortic valve to the aorta. The blood is then distributed to the body through the systemic circulation before returning again to the pulmonary circulation. Arteries Main article: Pulmonary artery From the right ventricle, blood is pumped through the semilunar pulmonary valve into the left and right main pulmonary artery (one for each lung), which branch into smaller pulmonary arteries that spread throughout the lungs. [...] Cardiac shunt is an unnatural connection between parts of the heart that leads to blood flow that bypasses the lungs."}
  {"_id": "doc3", "text": "The World Bowling Writers ( WBW ) International Bowling Hall of Fame was established in 1993 and is located in the International Bowling Museum and Hall of Fame , on the International Bowling Campus in Arlington , Texas. History The International Bowling Museum and Hall of Fame was located at 11 Stadium Plaza, St. Louis, Missouri, USA, and shared the same building with the St. Louis Cardinals Hall of Fame Museum, until November 8, 2008. It moved to Arlington and reopened in early 2010. In 2012, the WBW was merged with the International Bowling Media Association. After the merger, the WBW Hall of Fame inductees became part of the IBMA Luby Hall of Fame.  officers of the World Bowling Writers, which formed the Hall's Board.][...] The man and woman who receive the most votes are elected."}
  {"_id": "doc4", "text": "A \"Hello, World!\" program is generally a simple computer program which outputs (or displays) to the screen (often the console) a message similar to "Hello, World!" while ignoring any user input. A small piece of code in most general-purpose programming languages, this program is used to illustrate a language's basic syntax. A "Hello, World!" program is often the first written by a student of a new programming language, but such a program can also be used as a check to ensure that the computer software intended to compile or run source code is correctly installed, and that its operator understands how to use it.  [...] The C-language version was preceded by Kernighan's own 1972 A Tutorial Introduction to the Language B, where the first known version of the program is found in an example used to illustrate external variables."}

O tamanho máximo do arquivo é de 500.000 linhas.

Arquivo de consulta

O arquivo de consulta contém os exemplos de consultas que serão usados para ajustar o modelo. Cada consulta precisa ter um ou mais segmentos extrativos correspondentes no arquivo do corpus. É necessário fornecer pelo menos 100 consultas de correspondência positiva. Você pode também podem fornecer consultas não relevantes: elas correspondem a segmentos extrativos com pontuação de relevância igual a zero.

O arquivo de consulta está no formato JSONL e tem os mesmos campos que o arquivo de corpus.

Exemplo:

  {"_id": "query1", "text": "who founded Google?"}
  {"_id": "query2", "text": "where is blood pumped after it leaves the right ventricle?"}
  {"_id": "query3", "text": "where is the bowling hall of fame located?"}
  {"_id": "query4", "text": "why is the sky blue?"}

O número máximo de consultas permitidas no arquivo é 40.000.

Rótulos de treinamento

O arquivo de rótulos de treinamento conecta as consultas com os segmentos extrativos e pontua cada par de consulta e segmento.

Se o arquivo de rótulos de teste não estiver presente, 20% das consultas no arquivo de rótulos de treinamento serão reservadas para avaliar o modelo ajustado após o treinamento.

O arquivo contém o ID de uma consulta e o ID do segmento de extração correspondente (ou não correspondente) e uma pontuação para a relevância do segmento para a consulta. É necessário ter pelo menos uma linha por consulta. Se uma consulta for respondida por dois segmentos, haverá duas linhas para essa consulta. Score não é negativo um valor inteiro. Qualquer pontuação maior que zero indica que o documento está relacionado à consulta. Números maiores indicam um nível maior de relevância. Se a pontuação for omitida, o valor padrão será 1.

O arquivo de rótulos de treinamento é um arquivo TSV (valores separados por tabulação) com um cabeçalho. O arquivo precisa ter as colunas query-id, corpus-id e score. O query-id é uma string que corresponde à chave _id do arquivo de consulta e o corpus-id é uma string que corresponde a _id no arquivo de corpus.

Exemplo:

  query-id  corpus-id   score
  query1    doc1    1
  query2    doc2    1
  query3    doc3    1
  query3    doc9    1
  query4    doc4    0

O arquivo de rótulos de treinamento precisa incluir pelo menos 100 IDs de consulta exclusivos. O número de IDs de consulta no arquivo de rótulos de treinamento combinado com o número de consultas no arquivo de rótulos de teste precisa ser menor que 500.000.

Rótulos de teste

Assim como o arquivo de rótulos de treinamento, esse arquivo opcional contém os IDs da consulta e pontuações de relevância e segmento extrativo. Ele contém menos consultas e diferentes do arquivo de rótulos de treinamento. Se presentes, os pares de consulta e segmento extrativo no arquivo são usados para avaliar o ajuste. Se os rótulos do teste não estiver presente, consulte os pares de segmentos extrativos do treinamento de rótulos do Google Cloud são usados para avaliação.

Esse arquivo tem o mesmo formato do arquivo de rótulos de treinamento.

Exemplo:

  query-id  corpus-id   score
  query200    doc200    1
  query201    doc201    1
  query202    doc202    1

Embora o arquivo de rótulos de teste seja opcional, se você o fornecer, ele precisará conter pelo menos três IDs de consulta exclusivos.

Antes de começar

Ative os recursos da edição Enterprise para o app.

Para ajustar um modelo de pesquisa com seus próprios dados de treinamento, siga estas etapas.

Console

Para usar o console do Google Cloud para ajustar um modelo, siga estas etapas:

  1. Prepare os dados de treinamento e, opcionalmente, os arquivos de dados de teste. Use o formatos descritos em Arquivos de treinamento.

  2. Faça o upload dos arquivos para o Cloud Storage.

  3. No Console do Google Cloud, acesse a página Criador de agentes.

    Agent Builder.

  4. Na página Apps, clique no nome do app para o qual você quer um modelo treinado.

  5. No menu de navegação, clique em Configurações.

  6. Clique na guia Ajuste.

  7. Clique em Ajustar o modelo base.

  8. Especifique os arquivos de corpus, consulta, treinamento e, opcionalmente, teste que você preparado nas etapas 1 e 2 anteriores.

  9. Clique em Iniciar ajuste.

  10. Atualize a página para conferir o status na tabela Atividade de ajuste recente na guia Ajuste.

REST

Para usar o método trainCustomModel para ajustar um repositório de dados, siga estas etapas:

  1. Prepare os arquivos de dados de treinamento (e, opcionalmente, de teste). Use os formatos descritos em Arquivos de treinamento.

  2. Coloque os arquivos em um bucket do Cloud Storage.

  3. Faça upload dos arquivos do bucket do Cloud Storage para a Vertex AI Search executando o comando curl a seguir:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID:trainCustomModel" \
    -d '{
    "gcsTrainingInput": {
     "corpusDataPath": "CORPUS_JSONL_GCS_PATH",
     "queryDataPath": "QUERY_JSONL_GCS_PATH",
     "trainDataPath": "TRAIN_JSONL_GCS_PATH",
     "testDataPath": "TEST_JSONL_GCS_PATH"
    },
    "modelType": "search-tuning"
    }'
    

    Substitua:

    • PROJECT_ID: o ID do seu projeto do Google Cloud.

    • DATA_STORE_ID: o ID do repositório de dados que você quer ajustar.

    • CORPUS_JSONL_GCS_PATH: o o caminho do arquivo JSONL do corpus no Cloud Storage, por exemplo, gs://my-bucket/corpus.jsonl.

    • QUERY_JSONL_GCS_PATH: o caminho do arquivo JSONL de consulta no Cloud Storage, por exemplo, gs://my-bucket/query.jsonl.

    • TRAIN_JSONL_GCS_PATH: o caminho do arquivo TSV de rótulos de treinamento em Cloud Storage, por exemplo, gs://my-bucket/train.tsv.

    • TEST_JSONL_GCS_PATH: um campo opcional para especificar o caminho do Cloud Storage para o arquivo TSV de rótulos de teste, por exemplo, gs://my-bucket/test.tsv. Se você não tiver um arquivo de rótulos de teste, remova o campo testDataPath ou deixe-o em branco.

    Para informações gerais sobre esse método, consulte trainCustomModel.

    O ajuste começa automaticamente após o upload dos arquivos de dados.

    Clique para conferir um exemplo de comando e resposta do curl.

    curl -X POST
    -H "Authorization: Bearer $(gcloud auth print-access-token)"
    -H "Content-Type: application/json"
    "https://discoveryengine.googleapis.com/v1/projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321:trainCustomModel"
    -d '{
    "dataStore":
    "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321",
    "gcsTrainingInput": {
    "corpusDataPath": "gs://my-bucket/corpus.jsonl",
    "queryDataPath": "gs://my-bucket/query.jsonl",
    "trainDataPath": "gs://my-bucket/train.tsv"
    },
    "modelType": "search-tuning"
    }
    {
    "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/operations/train-custom-model-6071430366161939774",
    "metadata": {
    "@type": "type.googleapis.com/google.cloud.discoveryengine.v1.TrainCustomModelMetadata"
    },
    "response": {
    "@type": "type.googleapis.com/google.cloud.discoveryengine.v1.TrainCustomModelResponse",
    "modelStatus": "in-progress"
    }
  4. Anote o valor name retornado pelo trainCustomModel e siga as instruções em Mais detalhes em uma operação de longa duração ver quando a operação de ajuste de pesquisa for concluída.

Testar a pesquisa ajustada e usá-la para consultas de pesquisa individuais

Depois que o ajuste for concluído, você poderá testá-lo comparando os resultados das consultas com o modelo ajustado e os resultados das mesmas consultas com o modelo de base.

Console

Para usar o console do Google Cloud para visualizar o comportamento de um modelo ajustado, siga estas etapas:

  1. Acesse a guia Ajuste:

    1. No Console do Google Cloud, acesse a página Criador de agentes.

      Agent Builder.

    2. Clique no nome do app que você quer visualizar.

    3. Clique em Configurations.

    4. Clique na guia Ajuste.

  2. Clique em Modelo ajustado e use o painel de visualização à direita para fazer consultas que usam o modelo ajustado.

  3. Clique em Modelo base e use o painel de visualização à direita para fazer consultas usando o modelo original.

  4. Compare a qualidade dos resultados.

REST

Para avaliar o efeito do ajuste, faça consultas com o campo enableSearchAdaptor definido como true e false e compare os resultados. Definir o campo enableSearchAdaptor como true indica que a versão ajustada da pesquisa é usada para essa consulta.

Para fazer consultas de pesquisa que usam o modelo ajustado:

  1. Na chamada do método de consulta, defina o campo enableSearchAdaptor no campo customFineTuningSpec como true.

    Exemplo:

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \
    -d '{
    "query": "QUERY",
    "customFineTuningSpec": { "enableSearchAdaptor": true }
    }'
    

    Substitua:

    • PROJECT_ID: o ID do seu projeto do Google Cloud.
    • APP_ID: o ID do app que você quer consulta.

Para obter informações detalhadas sobre consultas de pesquisa, consulte Obter pesquisa resultados e a servingConfigs.search.

Ativar a pesquisa ajustada

Depois de testar a pesquisa ajustada e decidir que deseja usá-la para todas as consultas de pesquisa, é possível torná-lo o modelo de pesquisa padrão.

Console

Para tornar o modelo ajustado o padrão e aplicá-lo à página de visualização principal, ao widget e às chamadas de API, siga estas etapas:

  1. Acesse a guia Ajuste:

    1. No Console do Google Cloud, acesse a página Criador de agentes.

      Agent Builder.

    2. Clique no nome do app.

    3. Clique em Configurations.

    4. Clique na guia Ajuste.

  2. Clique em Modelo ajustado.

  3. Clique em Publicar.

REST

Ao definir o modelo ajustado como padrão, não é necessário especificar o campo customFineTuningSpec na consulta de pesquisa, como no procedimento anterior.

Para usar a versão ajustada da pesquisa por padrão em todas as consultas de pesquisa, siga estas etapas:

  1. Para definir a pesquisa ajustada como o modelo padrão, execute o seguinte curl: comando:

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search?updateMask=customFineTuningSpec.enableSearchAdaptor" \
    -d '{
    "customFineTuningSpec": {
     "enableSearchAdaptor": true
    }
    }'
    

    Para informações gerais sobre esse método, consulte servingConfigs.patch

Desativar pesquisa ajustada

Se você não quiser mais usar a versão ajustada da pesquisa, por exemplo, se os resultados não forem melhores ou piores do que antes da otimização, você pode desativar a pesquisa ajustada.

Console

Para voltar a usar o modelo base como padrão, siga estas etapas:

  1. Acesse a guia Ajuste:

    1. No Console do Google Cloud, acesse a página Criador de agentes.

      Agent Builder.

    2. Clique no nome do app.

    3. Clique em Configurations.

    4. Clique na guia Ajuste.

  2. Clique em Modelo base.

  3. Clique em Publicar.

REST

Para parar de usar o modelo ajustado, execute uma chamada curl semelhante à anterior. mas defina enableSearchAdaptor como false:

  1. Execute o seguinte comando curl:

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search?updateMask=customFineTuningSpec.enableSearchAdaptor" \
    -d '{
    "customFineTuningSpec": {
     "enableSearchAdaptor": false
    }
    }'
    

    Para informações gerais sobre esse método, consulte servingConfigs.patch.

A seguir