Integrações

Use modelos de incorporação para criar incorporação de texto que capturem o significado de uma frase ou passagem. Você pode usar esses modelos com classificadores, como máquinas de vetores de suporte. Os modelos de incorporação também podem ajudá-lo com tarefas de geração aumentada por recuperação.

O diagrama a seguir ilustra o padrão de geração aumentado por recuperação com suporte de incorporação.

Diagrama que mostra a adição de resultados de pesquisa derivados de um armazenamento de vetores à entrada para a geração aumentada por recuperação

O padrão de geração aumentada por recuperação com suporte de incorporação envolve as seguintes etapas:

  1. Converta seu conteúdo em incorporações de texto e armazene-as em um armazenamento de dados vetoriais.
  2. Use o mesmo modelo de incorporação para converter a entrada do usuário em incorporação de texto.
  3. Execute uma pesquisa de similaridade ou semântica em sua base de conhecimento para obter conteúdo relacionado à pergunta de um usuário.
  4. Inclua os resultados de pesquisa mais relevantes em seu prompt como contexto e adicione uma instrução, como "Responda à pergunta a seguir usando somente as informações das passagens a seguir"
  5. Envie o texto combinado do prompt (instrução + resultados da pesquisa + pergunta) para o modelo de base.
  6. O modelo básico usa informações contextuais do prompt para gerar uma resposta factual.

Para obter mais informações, consulte:

Incorporação de USO

Os embeddings do USE são envoltórios dos embeddings do Google Universal Sentence Encoder que estão disponíveis no TFHub. Essas integrações são usadas no algoritmo SVM de classificação de documentos. Para obter uma lista de incorporações pré-treinadas de USE e seus idiomas compatíveis, consulte Inclusão de incorporações pré-treinadas de USE

Ao utilizar as integrações USE, considere o seguinte:

  • Escolha embedding_use_en_stock se a sua tarefa envolve texto em inglês.

  • Escolha uma das integrações USE multilíngues se sua tarefa envolver texto em uma língua não inglesa ou se você deseja treinar modelos multilíngues.

  • As integrações USE exibem diferentes trade-offs entre qualidade do modelo treinado e rendimento no tempo de inferência, conforme descrito a seguir. Experimente integrações diferentes para decidir o trade-off entre qualidade de resultado e rendimento de inferência que sejam apropriados para o seu caso de uso.

    • O embedding_use_multi_small tem qualidade razoável, mas é rápido no tempo de inferência
    • O embedding_use_en_stock é uma versão apenas em inglês do embedding_embedding_use_multi_small, portanto, é menor e apresenta maior rendimento de inferência
    • O embedding_use_multi_large baseia-se na arquitetura do Transformer e, portanto, proporciona maior qualidade de resultado, com rendimento inferior no tempo de inferência

Código de amostra

import watson_nlp

syntax_model = watson_nlp.load("syntax_izumo_en_stock")
embeddings_model = watson_nlp.load("embedding_use_en_stock")

text = "python"
syntax_doc = syntax_model.run(text)
embedding = embeddings_model.run(syntax_doc)
print(embedding)

Saída do exemplo de código:

{
  "data": {
    "data": [
      -0.01909315399825573,
      -0.009827353060245514,
...
      0.008978910744190216,
      -0.0702751949429512
    ],
    "rows": 1,
    "cols": 512,
    "dtype": "float32"
  },
  "offsets": null,
  "producer_id": null
}

Incluiu embeddings de USE pré-treinados

A tabela a seguir lista os blocos pré-treinados para integrações USE que estão disponíveis e os idiomas que são suportados. Para obter uma lista dos códigos de idioma e dos idiomas correspondentes, consulte Códigos de idiomas.

Lista de embeddings de USE pré-treinados com seus idiomas suportados
Nome do Bloco Nome do modelo Idiomas suportados
use embedding_use_en_stock Inglês apenas
use embedding_use_multi_small ar, de, el, en, es, fr, it, ja, ko, nb, nl, pl, pt, ru, th, tr, zh_tw, zh
use embedding_use_multi_large ar, de, el, en, es, fr, it, ja, ko, nb, nl, pl, pt, ru, th, tr, zh_tw, zh

Embeddings GloVe

Os embeddings GloVe são usados pelo classificador CNN.

Nome do bloco: ' embedding_glove__stock

Idiomas suportados: ar, de, en, es, fr, it, ja, ko, nl, pt, zh-cn

Código de amostra

import watson_nlp

syntax_model = watson_nlp.load("syntax_izumo_en_stock")
embeddings_model = watson_nlp.load("embedding_glove_en_stock")

text = "python"
syntax_doc = syntax_model.run(text)
embedding = embeddings_model.run(syntax_doc)
print(embedding)

Saída do exemplo de código:

{
  "data": {
    "data": [
      -0.01909315399825573,
      -0.009827353060245514,
...
      0.008978910744190216,
      -0.0702751949429512
    ],
    "rows": 1,
    "cols": 512,
    "dtype": "float32"
  },
  "offsets": null,
  "producer_id": null
}

Embeddings de transformadores

Nomes de blocos

  • embedding_transformer_en_slate.125m
  • embedding_transformer_en_slate.30m

Idiomas suportados

Inglês apenas

Código de amostra

import watson_nlp

# embeddings_model = watson_nlp.load("embedding_transformer_en_slate.125m")
embeddings_model = watson_nlp.load("embedding_transformer_en_slate.30m")
text = "python"

embedding = embeddings_model.run(text)
print(embedding)

Saída da amostra de código

{
  "data": {
    "data": [
      -0.055536773055791855,
      0.008286023512482643,
      ...
      -0.3202415108680725,
      5.000295277568512e-05
    ],
    "rows": 1,
    "cols": 384,
    "dtype": "float32"
  },
  "offsets": null,
  "producer_id": {
    "name": "Transformer Embeddings",
    "version": "0.0.1"
  }
}