Verifique a validação com RAG

Como parte da sua experiência de geração aumentada de obtenção (RAG) na Pesquisa do Vertex AI, pode verificar a fundamentação para determinar o grau de fundamentação de um fragmento de texto (denominado candidato a resposta) num determinado conjunto de textos de referência (denominados factos).

A API de verificação da fundamentação devolve uma pontuação de apoio geral de 0 a 1, que indica o grau de concordância do candidato a resposta com os factos fornecidos. A resposta também inclui citações dos factos que fundamentam cada afirmação no candidato a resposta.

A fundamentação perfeita requer que todas as afirmações na resposta candidata sejam suportadas por um ou mais factos fornecidos. Por outras palavras, a afirmação é totalmente implicada pelos factos. Se a reivindicação for apenas parcialmente implícita, não é considerada fundamentada. Por exemplo, a afirmação "O Google foi fundado por Larry Page e Sergey Brin em 1975" só está parcialmente correta. Os nomes dos fundadores estão corretos, mas a data está errada. Como tal, toda a afirmação é considerada infundada. Nesta versão da API de fundamentação de verificações, uma frase é considerada uma única reivindicação.

Pode usar a API de verificação de base para verificar qualquer fragmento de texto. Pode ser um breve texto gerado por humanos ou uma resposta gerada automaticamente. Um exemplo de utilização típico é verificar uma resposta gerada por um GML com base num determinado conjunto de factos. A API check grounding foi concebida para ser rápida, com uma latência inferior a 500 ms. Esta velocidade permite que os bots de chat chamem a API de verificação de fundamentação durante cada inferência, sem incorrer numa desaceleração significativa. A API de verificação de base também pode fornecer referências para apoiar as respetivas conclusões, para que os utilizadores possam saber que partes da resposta gerada são fiáveis. A API também fornece uma pontuação de apoio técnico para indicar a precisão geral da resposta. Ao definir um limite de citações, os bots de chat podem filtrar respostas no momento da inferência que provavelmente contêm afirmações inventadas.

Esta página descreve como verificar a fundamentação através da API check grounding.

Termos definidos e explicados

Antes de usar a API check grounding, é útil compreender as entradas e as saídas, bem como a forma de estruturar os factos de fundamentação para obter os melhores resultados.

Dados de entrada

A API de fundamentação de verificação requer as seguintes entradas no pedido.

  • Candidato a resposta: um candidato a resposta pode ser qualquer parte do texto cuja base quer verificar. Por exemplo, no contexto da pesquisa do Vertex AI, o candidato a resposta pode ser o resumo da pesquisa gerado que responde a uma consulta. Em seguida, a API determina o grau de fundamentação do resumo nos factos introduzidos. Um candidato a resposta pode ter um comprimento máximo de 4096 tokens, em que um token é definido como uma palavra numa frase ou um ponto final (um sinal de pontuação usado para terminar a frase). Por exemplo, a frase "They wore off-the-rack clothes in 2024." tem sete tokens, incluindo seis palavras e um ponto final.

  • Factos: um conjunto de segmentos de texto a usar como referências para fundamentação. Pode fornecer um conjunto de atributos de metadados (pares de chave-valor) com cada segmento de texto. Por exemplo, "Autor" e "Título" são chaves de atributos típicas.

    O serviço suporta até 200 factos, cada um com um máximo de 10 mil carateres.

    A Google recomenda que não forneça um facto muito grande que contenha todas as informações. Em alternativa, pode obter melhores resultados dividindo factos grandes em factos mais pequenos e fornecendo atributos adequados para os factos mais pequenos. Por exemplo, pode dividir um facto grande por título, autor ou URL e fornecer estas informações em atributos.

  • Limite de citações: um valor flutuante de 0 a 1 que controla a confiança para as citações que suportam o candidato a resposta. Um limite mais elevado impõe uma confiança mais rigorosa. Por conseguinte, um limite mais elevado gera menos citações, mas mais fortes.

Dados de saída

A API check grounding devolve o seguinte para um candidato a resposta:

  • Pontuação de apoio técnico: a pontuação de apoio técnico é um número de 0 a 1 que indica o quão fundamentado está um candidato a resposta no conjunto de factos fornecido. Aproxima-se da fração de reivindicações no candidato a resposta que se verificou estarem fundamentadas num ou mais factos fornecidos.

  • Fragmentos citados: os fragmentos citados são partes dos factos introduzidos que suportam a resposta candidata.

  • Afirmações e citações: as afirmações e as citações associam uma afirmação (normalmente, uma frase) do candidato a resposta a um ou mais dos fragmentos citados que corroboram a afirmação.

    Uma reivindicação é demarcada através das respetivas posições de início e fim. Estas são as posições de bytes da string de reivindicação codificada em UTF-8. Tenha em atenção que isto não é medido em carateres e, por isso, tem de ser renderizado na interface do utilizador, tendo em atenção que alguns carateres ocupam mais do que um byte. Por exemplo, se o texto da reivindicação contiver carateres não ASCII, as posições inicial e final variam quando medidas em carateres (dependente da linguagem de programação) e quando medidas em bytes (independente da linguagem de programação).

  • Classificação de apoio ao cliente ao nível da reivindicação: quando a classificação ao nível da reivindicação está ativada, com cada reivindicação, é devolvida uma classificação de apoio ao cliente como um número de 0 a 1 que indica o quão fundamentada está a reivindicação no conjunto de factos fornecido. Para mais informações, consulte o artigo Obtenha pontuações ao nível da reivindicação para um candidato a resposta.

  • Verificação de fundamentação necessária: com cada reivindicação, é devolvido um booleano grounding-check-required. Quando isto é devolvido como False, significa que o sistema considera que a reivindicação não requer fundamentação e, por isso, não são devolvidas citações. Por exemplo, uma frase como "Aqui está o que encontrei" não é um facto por si só e, por isso, não requer uma verificação de fundamentação.

    Quando o grounding-check-required é devolvido como true, significa que foi feita uma verificação de fundamentação e são devolvidas pontuações de apoio, citações, se existirem.

Obtenha uma pontuação de apoio técnico para um candidato a resposta

Para saber o quão fundamentada está uma resposta candidata num conjunto de factos, siga estes passos:

  1. Prepare o seu conjunto de factos. Para mais informações e exemplos, consulte o artigo Termos definidos e explicados.

  2. Chame o método check com o seguinte código:

REST

curl -X POST \
-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/groundingConfigs/default_grounding_config:check" \
-d '{
  "answerCandidate": "CANDIDATE",
  "facts": [
  {
    "factText": "TEXT_0",
    "attributes": {"ATTRIBUTE_A": "VALUE_A0","ATTRIBUTE_B": "VALUE_B0"}
  },
  {
    "factText": "TEXT_1",
    "attributes": {"ATTRIBUTE_A": "VALUE_A1","ATTRIBUTE_B": "VALUE_B1"}
  },
  {
    "factText": "TEXT_2",
    "attributes": {"ATTRIBUTE_A": "VALUE_A2","ATTRIBUTE_B": "VALUE_B2"}
  }
  ],
  "groundingSpec": {
    "citationThreshold": "CITATION_THRESHOLD"
  }
}'

Substitua o seguinte:

  • PROJECT_ID: o número ou o ID do projeto do seu projeto do Google Cloud .

  • CANDIDATE: a string candidata a resposta para a qual quer obter uma pontuação de apoio técnico. Por exemplo, Titanic was directed by James Cameron. It was released in 1997. Uma candidata a resposta pode ter um comprimento máximo de 4096 tokens, em que um token é definido como uma palavra numa frase ou um ponto final (um sinal de pontuação usado para terminar a frase). Por exemplo, a frase "They wore off-the-rack clothes in 2024." tem sete tokens, incluindo seis palavras e um ponto final.

  • TEXT: o segmento de texto a usar para fundamentação, por exemplo, Titanic is a 1997 American epic... Academy Awards. (veja o texto completo em Exemplos de factos).

  • ATTRIBUTE: o nome de um atributo de metadados associado ao facto, por exemplo, author ou title. Esta é uma etiqueta definida pelo utilizador para adicionar mais informações ao texto do facto. Por exemplo, se o texto do facto Toronto is the capital of Ontario tiver um atributo author com o valor Wikipedia, as seguintes afirmações são consideradas fundamentadas no facto:

    • Wikipedia cites that Toronto is the capital of Ontario
    • Toronto is the capital of Ontario

      No entanto, a afirmação de que Government of Ontario claims that Toronto is the capital of Ontario não é tão fundamentada como as duas primeiras afirmações.

  • VALUE: o valor do atributo, por exemplo, Simple Wikipedia ou Titanic (1997 film).

  • CITATION_THRESHOLD: um valor flutuante de 0 a 1 que determina se um facto tem de ser citado para uma reivindicação no candidato a resposta. Um limite mais elevado resulta em menos citações, mas mais fortes, e um limite mais baixo resulta em mais citações, mas mais fracas. Se não estiver definido, o valor do limite predefinido é 0.6.

Python

Para mais informações, consulte a documentação de referência da API PythonVertex AI Search.

Para se autenticar no Vertex AI Search, 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 discoveryengine_v1 as discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"

client = discoveryengine.GroundedGenerationServiceClient()

# The full resource name of the grounding config.
# Format: projects/{project_id}/locations/{location}/groundingConfigs/default_grounding_config
grounding_config = client.grounding_config_path(
    project=project_id,
    location="global",
    grounding_config="default_grounding_config",
)

request = discoveryengine.CheckGroundingRequest(
    grounding_config=grounding_config,
    answer_candidate="Titanic was directed by James Cameron. It was released in 1997.",
    facts=[
        discoveryengine.GroundingFact(
            fact_text=(
                "Titanic is a 1997 American epic romantic disaster movie. It was directed, written,"
                " and co-produced by James Cameron. The movie is about the 1912 sinking of the"
                " RMS Titanic. It stars Kate Winslet and Leonardo DiCaprio. The movie was released"
                " on December 19, 1997. It received positive critical reviews. The movie won 11 Academy"
                " Awards, and was nominated for fourteen total Academy Awards."
            ),
            attributes={"author": "Simple Wikipedia"},
        ),
        discoveryengine.GroundingFact(
            fact_text=(
                'James Cameron\'s "Titanic" is an epic, action-packed romance'
                "set against the ill-fated maiden voyage of the R.M.S. Titanic;"
                "the pride and joy of the White Star Line and, at the time,"
                "the largest moving object ever built. "
                'She was the most luxurious liner of her era -- the "ship of dreams" -- '
                "which ultimately carried over 1,500 people to their death in the "
                "ice cold waters of the North Atlantic in the early hours of April 15, 1912."
            ),
            attributes={"author": "Simple Wikipedia"},
        ),
    ],
    grounding_spec=discoveryengine.CheckGroundingSpec(citation_threshold=0.6),
)

response = client.check_grounding(request=request)

# Handle the response
print(response)

Exemplos de factos

Seguem-se alguns exemplos de factos e dos respetivos atributos. Estes exemplos destinam-se a ajudar a compreender a resposta de fundamentação e o formato do comando curl.

  • Facto 0

    • Texto: "Titanic is a 1997 American epic romantic disaster movie. It was directed, written, and co-produced by James Cameron. The movie is about the 1912 sinking of the RMS Titanic. It stars Kate Winslet and Leonardo DiCaprio. The movie was released on December 19, 1997. It received positive critical reviews. The movie won 11 Academy Awards, and was nominated for fourteen total Academy Awards."

    • Atributos: {"Author": "Simple Wikipedia"}

  • Facto 1

    • Texto: "James Cameron's "Titanic" is an epic, action-packed romance set against the ill-fated maiden voyage of the R.M.S. Titanic; the pride and joy of the White Star Line and, at the time, the largest moving object ever built. She was the most luxurious liner of her era -- the "ship of dreams" -- which ultimately carried over 1,500 people to their death in the ice cold waters of the North Atlantic in the early hours of April 15, 1912."

    • Atributos: {"Author": "Rotten Tomatoes"}

Exemplo de pedido

Depois de preparar os factos, pode enviar o seguinte pedido, substituindo o campo CANDIDATE por diferentes strings cuja base quer verificar.

    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/groundingConfigs/default_grounding_config:check" \
    -d '{
    "answerCandidate": "CANDIDATE",
    "facts": [
     {
      "factText": "Titanic is a 1997 American epic romantic disaster movie. It was directed, written, and co-produced by James Cameron. The movie is about the 1912 sinking of the RMS Titanic. It stars Kate Winslet and Leonardo DiCaprio. The movie was released on December 19, 1997. It received positive critical reviews. The movie won 11 Academy Awards, and was nominated for fourteen total Academy Awards.",
      "attributes": {"author":"Simple Wikipedia"}
     },
     {
      "factText": "James Cameron's \"Titanic\" is an epic, action-packed romance set against the ill-fated maiden voyage of the R.M.S. Titanic; the pride and joy of the White Star Line and, at the time, the largest moving object ever built. She was the most luxurious liner of her era -- the \"ship of dreams\" -- which ultimately carried over 1,500 people to their death in the ice cold waters of the North Atlantic in the early hours of April 15, 1912.",
      "attributes": {"author":"Simple Wikipedia"}
     }
    ],
    "groundingSpec": {
      "citationThreshold": "0.6"
    }
    }'

Exemplos de candidatos a respostas e respostas fundamentadas

A tabela seguinte mostra exemplos de diferentes candidatos a respostas e respostas quando envia o pedido de exemplo, com base nos factos de exemplo.

Candidato a resposta Verifique a resposta de fundamentação
Here is what I found. Titanic was directed by James Cameron. Pontuação de apoio técnico: 0.99

Fragmentos citados:
  1. [From FACT 0]....Titanic is a 1997 American epic romantic disaster movie. It was directed, written, and co-produced by James Cameron. It stars Kate Winslet and Leonardo DiCaprio. The movie was released on December 19, 1997. It received positive critical reviews. The movie won 11 Academy Awards, and was nominated for fourteen total Academy Awards.....
Afirmações e citações:
  • 0. Here is what I found.
    Verificação de fundamentação necessária: false
  • 1. Titanic was directed by James Cameron.
    Citações: [0]
    Verificação de fundamentação necessária: true
Titanic was directed by James Cameron. It was released in 1997. Pontuação de apoio técnico: 0.99

Fragmentos citados:
  1. [From FACT 0]....Titanic is a 1997 American epic romantic disaster movie. It was directed, written, and co-produced by James Cameron. It stars Kate Winslet and Leonardo DiCaprio. The movie was released on December 19, 1997. It received positive critical reviews. The movie won 11 Academy Awards, and was nominated for fourteen total Academy Awards.....
  2. [From FACT 1]...Titanic is an epic, action-packed romance set against the ill-fated maiden voyage of the R.M.S. Titanic; the pride and joy of the White Star Line and, at the time, the largest moving object ever built. She was the most luxurious liner of her era which ultimately carried over 1,500 people to their death in the ice cold waters of the North Atlantic in the early hours of April 15, 1912....
Afirmações e citações:
  • 0. Titanic was directed by James Cameron.
    Citações: [0]
    Verificação de fundamentação necessária: true
  • 1. It was released in 1997.
    Citações: [1]
    Verificação de fundamentação necessária: true
Titanic was directed by James Cameron. It was based on the sinking of the RMS Titanic that led to the death of 1500 people. Pontuação de apoio técnico: 0.95

Fragmentos citados:
  1. [From FACT 0]....Titanic is a 1997 American epic romantic disaster movie. It was directed, written, and co-produced by James Cameron. It stars Kate Winslet and Leonardo DiCaprio. The movie was released on December 19, 1997. It received positive critical reviews. The movie won 11 Academy Awards, and was nominated for fourteen total Academy Awards.....
  2. [From FACT 1]...Titanic is an epic, action-packed romance set against the ill-fated maiden voyage of the R.M.S. Titanic; the pride and joy of the White Star Line and, at the time, the largest moving object ever built. She was the most luxurious liner of her era which ultimately carried over 1,500 people to their death in the ice cold waters of the North Atlantic in the early hours of April 15, 1912....
Afirmações e citações:
  • 0. Cited chunks: Titanic was directed by James Cameron.
    Citações: [0]
    Verificação de fundamentação necessária: true
  • 1. Cited chunks: It was based on the sinking of the RMS Titanic that led to the death of 1500 people.
    Citações: [1]
    Verificação de fundamentação necessária: true
Titanic was directed by James Cameron. It starred Brad Pitt and Kate Winslet Pontuação de apoio técnico: 0.54

Fragmentos citados:
  1. [From FACT 0]....Titanic is a 1997 American epic romantic disaster movie. It was directed, written, and co-produced by James Cameron. It stars Kate Winslet and Leonardo DiCaprio. The movie was released on December 19, 1997. It received positive critical reviews. The movie won 11 Academy Awards, and was nominated for fourteen total Academy Awards.....
  2. [From FACT 1]...Titanic is an epic, action-packed romance set against the ill-fated maiden voyage of the R.M.S. Titanic; the pride and joy of the White Star Line and, at the time, the largest moving object ever built. She was the most luxurious liner of her era which ultimately carried over 1,500 people to their death in the ice cold waters of the North Atlantic in the early hours of April 15, 1912....
Afirmações e citações:
  • 0. Titanic was directed by James Cameron.
    Citações: [0]
    Verificação de fundamentação necessária: true
  • 1. It starred Brad Pitt and Kate Winslet
    Citações: []
    Verificação de fundamentação necessária: true
Nota: embora Kate Winslet tenha participado no filme, como a afirmação "It starred Brad Pitt and Kate Winslet" não é totalmente verdadeira, não recebe citações.

Obtenha pontuações ao nível da reivindicação para uma resposta candidata

Além da pontuação de apoio técnico ao nível da resposta, pode obter uma pontuação de apoio técnico ao nível da reivindicação para cada reivindicação num candidato a resposta.

Para obter as classificações ao nível da reivindicação, siga estes passos:

  1. Prepare o seu conjunto de factos. Para mais informações e exemplos, consulte o artigo Termos definidos e explicados.

  2. Chame o método check através do seguinte comando curl:

    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/groundingConfigs/default_grounding_config:check" \
    -d '{
    "answerCandidate": "CANDIDATE",
    "facts": [
     {
      "factText": "TEXT_0",
      "attributes": {"ATTRIBUTE_A": "VALUE_A0","ATTRIBUTE_B": "VALUE_B0"}
     },
     {
      "factText": "TEXT_1",
      "attributes": {"ATTRIBUTE_A": "VALUE_A1","ATTRIBUTE_B": "VALUE_B1"}
     },
     {
      "factText": "TEXT_2",
      "attributes": {"ATTRIBUTE_A": "VALUE_A2","ATTRIBUTE_B": "VALUE_B2"}
     },
    ],
    "groundingSpec": {
      "citationThreshold": "CITATION_THRESHOLD",
      "enableClaimLevelScore": "ENABLE_CLAIM_LEVEL_SCORE",
    }
    }'
    

    Substitua o seguinte:

    • PROJECT_ID: o número ou o ID do projeto do seu Google Cloud projeto.

    • CANDIDATE: a string candidata à resposta para a qual quer obter uma pontuação de apoio técnico. Por exemplo, Titanic was directed by James Cameron. It was released in 1997. Uma candidata à resposta pode ter um comprimento máximo de 4096 tokens, em que um token é definido como uma palavra numa frase ou um ponto final (um sinal de pontuação usado para terminar a frase). Por exemplo, a frase "They wore off-the-rack clothes in 2024." tem sete tokens, incluindo seis palavras e um ponto final.

    • TEXT: o segmento de texto a usar para fundamentação, por exemplo, Titanic is a 1997 American epic... Academy Awards. (veja o texto completo em Exemplos de factos).

    • ATTRIBUTE: o nome de um atributo de metadados associado ao facto, por exemplo, author ou title. É uma etiqueta definida pelo utilizador para adicionar mais informações ao texto do facto. Por exemplo, se o texto do facto Toronto is the capital of Ontario tiver um atributo author com o valor Wikipedia, as seguintes reivindicações são bem fundamentadas:

      • Wikipedia cites that Toronto is the capital of Ontario
      • Toronto is the capital of Ontario

      No entanto, a afirmação de que Government of Ontario claims that Toronto is the capital of Ontario não está tão bem fundamentada.

    • VALUE: o valor do atributo, por exemplo, Simple Wikipedia ou Titanic (1997 film).

    • CITATION_THRESHOLD: um valor flutuante de 0 a 1 que determina se um facto tem de ser citado para uma reivindicação no candidato a resposta. Um limite mais elevado resulta em citações mais fortes, mas em menor número, para apoiar a afirmação, e um limite mais baixo resulta em citações mais fracas, mas em maior número. Se não estiver definido, o valor do limite predefinido é 0,6.

    • ENABLE_CLAIM_LEVEL_SCORE: um valor booleano. Defina este campo como true para ativar a funcionalidade de pontuação ao nível da reivindicação. Para desativar esta funcionalidade, remova este campo ou defina este campo como false.

Exemplo de pedido

Usando os factos de exemplo da secção anterior, pode enviar o seguinte pedido. Substitua o campo CANDIDATE por diferentes strings cuja fundamentação por reivindicação quer verificar.

    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/groundingConfigs/default_grounding_config:check" \
    -d '{
    "answerCandidate": "CANDIDATE",
    "facts": [
     {
      "factText": "Titanic is a 1997 American epic romantic disaster movie. It was directed, written, and co-produced by James Cameron. The movie is about the 1912 sinking of the RMS Titanic. It stars Kate Winslet and Leonardo DiCaprio. The movie was released on December 19, 1997. It received positive critical reviews. The movie won 11 Academy Awards, and was nominated for fourteen total Academy Awards.",
      "attributes": {"author":"Simple Wikipedia"}
     },
     {
      "factText": "James Cameron's \"Titanic\" is an epic, action-packed romance set against the ill-fated maiden voyage of the R.M.S. Titanic; the pride and joy of the White Star Line and, at the time, the largest moving object ever built. She was the most luxurious liner of her era -- the \"ship of dreams\" -- which ultimately carried over 1,500 people to their death in the ice cold waters of the North Atlantic in the early hours of April 15, 1912.",
      "attributes": {"author":"Simple Wikipedia"}
     }
    ],
    "groundingSpec": {
      "citationThreshold": "0.6",
      "enableClaimLevelScore": true,
    }
    }'

Exemplo de respostas com classificações ao nível da reivindicação

A tabela seguinte mostra um exemplo de candidato a resposta e a respetiva resposta quando envia o pedido de exemplo, com base nos factos de exemplo.

Candidato a resposta Verifique a resposta de fundamentação
Here is what I found. Titanic was directed by James Cameron. It starred Kate Winslet and Leonardo DiCaprio. Pontuação de apoio técnico: 0.99

Fragmentos citados:
  1. [From FACT 0]....Titanic is a 1997 American epic romantic disaster movie. It was directed, written, and co-produced by James Cameron. It stars Kate Winslet and Leonardo DiCaprio. The movie was released on December 19, 1997. It received positive critical reviews. The movie won 11 Academy Awards, and was nominated for fourteen total Academy Awards.....
Afirmações e citações:
  • 0. Here is what I found.
    Verificação de fundamentação necessária: false
  • 1. Titanic was directed by James Cameron.
    Citações: [0]
    Verificação de fundamentação necessária: true
    Pontuação: 0.99
  • 2. It starred Kate Winslet and Leonardo DiCaprio.
    Citações: [0]
    Verificação de fundamentação necessária: true
    Pontuação: 0.99