Modelos de embedding são redes neurais baseadas em transformadores que transformam partes de documentos (ou seja, trechos de texto) em uma representação numérica ou vetor. O conteúdo com significado ou semântica semelhante será mapeado para uma representação semelhante no espaço latente, como vemos na imagem abaixo.
A vetorização da linguagem possibilita aplicações impulsionadas por IA como "chat com documentos" ou busca semântica, em vez da busca tradicional por palavras-chave (lexical).
O modelo de embedding escolhido afetará significativamente a precisão da recuperação, a latência e o custo computacional do seu sistema RAG. A escolha do modelo de embedding será em grande parte influenciada pelo tamanho, que depende de duas características: a dimensão do embedding e o número de parâmetros do modelo.
Modelos de embedding maiores normalmente aumentam o desempenho de recuperação, porém geram maior latência, necessidade de armazenamento e custo computacional (financeiro). Por outro lado, um modelo de embedding menor geralmente oferece desempenho de recuperação reduzido, mas ocupa menos memória, exige menos poder de computação e é mais rápido em termos de tempo de execução. Escolha um modelo de embedding que equilibre os requisitos de desempenho com os recursos disponíveis.
Certos modelos de embedding são específicos de idioma (por exemplo, modelos de embedding em espanhol desenvolvidos para clientes espanhóis) e específicos de domínio (por exemplo, um modelo treinado com terminologia de oncologia para permitir RAG em arquivos médicos).
É recomendado o uso de modelos de embedding implementados no watsonx, como os modelos Slate da IBM ou os modelos de terceiros indicados a seguir. Leia esta documentação para obter detalhes sobre cada modelo. Para obter mais informações sobre classes de cobrança, consulte os planos de cobrança do watsonx.
Modelos IBM Slate
| Nome do modelo | API model_id | Classes de cobrança | Máximo de tokens de entrada | Número de dimensões | Mais informações |
|---|---|---|---|---|---|
| slate-125m-english-rtrvr | ibm/slate-125m-english-rtrvr | Classe C1 | 512 | 768 | Ficha do modelo |
| slate-30m-english-rtrvr | ibm/slate-30m-english-rtrvr | Classe C1 | 512 | 384 | Ficha do modelo |
O modelo de base slate-125m-english-rtrvr é fornecido pela IBM. O modelo de base slate-125m-english-rtrvr gera embeddings para várias entradas, como consultas, trechos ou documentos. O objetivo de treinamento é maximizar a similaridade cosseno entre uma consulta e um trecho. Esse processo produz dois embeddings de sentenças, um que representa a pergunta e outro que representa o trecho, permitindo a comparação entre os dois por meio da similaridade cosseno.
Utilização: duas a três vezes mais lento, mas com desempenho ligeiramente melhor do que o modelo slate-30m-english-rtrvr. Idiomas suportados: inglês
O modelo de base slate-30m-english-rtrvr é uma versão simplificada do slate-125m-english-rtrvr, ambos fornecidos pela IBM. O modelo de embedding slate-30m-english-rtrvr é treinado para maximizar a similaridade cosseno entre dois inputs de texto, de modo que os embeddings possam ser avaliados com base na similaridade posteriormente.
Utilização: duas a três vezes mais rápido e com pontuações de desempenho ligeiramente inferiores ao modelo slate-125m-english-rtrvr. Idiomas suportados: inglês
Modelos de embedding de terceiros disponíveis com o watsonx
| Nome do modelo | API model_id | Fornecedor | Classes de cobrança | Máximo de tokens de entrada | Número de dimensões | Mais informações |
|---|---|---|---|---|---|---|
| all-minilm-l12-v2 | sentence-transformers/all-minilm-l12-v2 | Comunidade de processamento de linguagem natural (PLN) e visão computacional (CV) de código aberto | Classe C1 | 256 | 384 | Ficha do modelo |
| multilingual-e5-large | intfloat/multilingual-e5-large | Microsoft | Classe C1 | 512 | 1024 | Ficha do modelo, artigo de pesquisa |
O modelo de embedding all-minilm-l12-v2 é desenvolvido pela comunidade de processamento de linguagem natural (PLN) e computer vision (CV) de código aberto, fornecido pela HuggingFace.
Idiomas suportados: inglês
Utilização: para casos de uso em que você deseja gerar embeddings de texto para texto em um idioma diferente do inglês.
Idiomas naturais compatíveis: até 100 idiomas. Consulte a ficha do modelo para ver os detalhes.
Para obter mais informações sobre os modelos de embedding compatíveis, consulte a documentação do watsonx.
Instale a biblioteca Python ibm-watsonx-ai
pip install -U ibm-watsonx-ai
Use a API de embeddings do watsonx e os modelos disponíveis para gerar embeddings de texto.
from ibm_watsonx_ai.metanames import EmbedTextParamsMetaNames as EmbedParams
from ibm_watsonx_ai.foundation_models.utils.enums import EmbeddingTypes
from ibm_watsonx_ai.foundation_models import Embeddings
# Defina truncate_input_tokens como um valor que seja igual ou menor que o máximo permitido de tokens para o modelo de embedding que você está usando. Se você não especificar esse valor e a entrada tiver mais tokens do que o modelo pode processar, um erro será gerado.
embed_params = {
EmbedParams.TRUNCATE_INPUT_TOKENS: 128,
EmbedParams.RETURN_OPTIONS: {
'input_text': True
}
}
embedding = Embeddings(
model_id=EmbeddingTypes.IBM_SLATE_30M_ENG,
credentials=credentials,
params=embed_params,
project_id=project_id,
space_id=None,
verify=False
)
q = [
"Um modelo de base é um modelo de IA generativa em larga escala que pode ser adaptado a uma ampla gama de tarefas subsequentes.",
"A IA generativa é uma classe de algoritmos de IA que pode produzir vários tipos de conteúdo, como texto, código-fonte, imagens, áudio e dados sintéticos."
]
embedding_vectors = embedding.embed_documents(texts=q)
print(embedding_vectors)
Use o watsonx Granite Model Series e embeddings, Chroma e LangChain para responder a perguntas (RAG) e LangChain
Atualizado: 15 de novembro de 2024