Embeddings
Embeddings de texto são representações numéricas de texto que permitem medir a similaridade semântica. Este guia apresenta embeddings, suas aplicações e como usar modelos de embedding para tarefas como busca, recomendações e detecção de anomalias.
Antes de implementar embeddings
Ao selecionar um provedor de embeddings, existem vários fatores que você pode considerar dependendo das suas necessidades e preferências:
- Tamanho do conjunto de dados e especificidade do domínio: tamanho do conjunto de dados de treinamento do modelo e sua relevância para o domínio que você deseja incorporar. Dados maiores ou mais específicos do domínio geralmente produzem melhores embeddings no domínio
- Desempenho de inferência: velocidade de busca de embeddings e latência de ponta a ponta. Esta é uma consideração particularmente importante para implantações de produção em larga escala
- Personalização: opções para treinamento contínuo em dados privados ou especialização de modelos para domínios muito específicos. Isso pode melhorar o desempenho em vocabulários exclusivos
Como obter embeddings com a Anthropic
A Anthropic não oferece seu próprio modelo de embeddings. Um provedor de embeddings que possui uma grande variedade de opções e recursos que abrangem todas as considerações acima é a Voyage AI.
A Voyage AI cria modelos de embeddings state-of-the-art e oferece modelos personalizados para domínios específicos da indústria, como finanças e saúde, ou modelos sob medida ajustados para clientes individuais.
O restante deste guia é para a Voyage AI, mas encorajamos você a avaliar uma variedade de fornecedores de embeddings para encontrar a melhor opção para o seu caso de uso específico.
Começando com a Voyage AI
Para acessar os embeddings da Voyage:
- Inscreva-se no site da Voyage AI
- Obtenha uma chave de API
- Defina a chave de API como uma variável de ambiente para conveniência:
export VOYAGE_API_KEY="<sua chave secreta>"
Você pode executar os embeddings usando o pacote Python oficial da voyageai ou solicitações HTTP, conforme descrito abaixo.
Pacote Python da Voyage
O pacote voyageai
pode ser instalado usando o seguinte comando:
pip install -U voyageai
Em seguida, você pode criar um objeto cliente e começar a usá-lo para incorporar seus textos:
import voyageai
vo = voyageai.Client()
# Isso usará automaticamente a variável de ambiente VOYAGE_API_KEY.
# Alternativamente, você pode usar vo = voyageai.Client(api_key="<sua chave secreta>")
texts = ["Texto de exemplo 1", "Texto de exemplo 2"]
result = vo.embed(texts, model="voyage-2", input_type="document")
print(result.embeddings[0])
print(result.embeddings[1])
result.embeddings
será uma lista de dois vetores de embeddings, cada um contendo 1024 números de ponto flutuante.
Após executar o código acima, os dois embeddings serão impressos na tela:
[0.02012746, 0.01957859, ...] # embedding para "Texto de exemplo 1"
[0.01429677, 0.03077182, ...] # embedding para "Texto de exemplo 2"
Ao criar os embeddings, você pode especificar alguns outros argumentos para a função embed()
. Aqui está a especificação:
voyageai.Client.embed(texts : List[str], model : str, input_type : Optional[str] = None, truncation : Optional[bool] = None)
- texts (List[str]) - Uma lista de textos como uma lista de strings, como
["Eu gosto de gatos", "Eu também gosto de cachorros"]
. Atualmente, o comprimento máximo da lista é 128 e o número total de tokens na lista é no máximo 320K paravoyage-2
e 120K paravoyage-large-2
/voyage-code-2
. - model (str) - Nome do modelo. Opções recomendadas:
voyage-2
,voyage-large-2
,voyage-code-2
. - input_type (str, opcional, padrão
None
) - Tipo do texto de entrada. O padrão éNone
. Outras opções:query
,document
- Quando o input_type é definido como
None
, o texto de entrada será codificado diretamente pelo modelo de embeddings da Voyage. Alternativamente, quando as entradas são documentos ou consultas, os usuários podem especificarinput_type
comoquery
oudocument
, respectivamente. Nesses casos, a Voyage irá adicionar um prompt especial ao texto de entrada e enviar as entradas estendidas para o modelo de embeddings - Para casos de uso de recuperação/busca, recomendamos especificar esse argumento ao codificar consultas ou documentos para melhorar a qualidade da recuperação. Embeddings gerados com e sem o argumento
input_type
são compatíveis
- Quando o input_type é definido como
- truncation (bool, opcional, padrão
None
) - Se deve truncar os textos de entrada para caber dentro do comprimento do contexto.- Se
True
, textos de entrada muito longos serão truncados para caber dentro do comprimento do contexto, antes de serem vetorizados pelo modelo de embeddings - Se
False
, um erro será lançado se qualquer texto fornecido exceder o comprimento do contexto - Se não for especificado (padrão
None
), a Voyage irá truncar o texto de entrada antes de enviá-lo para o modelo de embeddings se ele exceder ligeiramente o comprimento da janela de contexto. Se exceder significativamente o comprimento da janela de contexto, um erro será lançado
- Se
API HTTP da Voyage
Você também pode obter embeddings solicitando a API HTTP da Voyage. Por exemplo, você pode enviar uma solicitação HTTP através do comando curl
em um terminal:
curl https://api.voyageai.com/v1/embeddings \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $VOYAGE_API_KEY" \
-d '{
"input": ["Texto de exemplo 1", "Texto de exemplo 2"],
"model": "voyage-2"
}'
A resposta que você obteria é um objeto JSON contendo os embeddings e o uso de tokens:
{
"object": "list",
"data": [
{
"embedding": [0.02012746, 0.01957859, ...],
"index": 0
},
{
"embedding": [0.01429677, 0.03077182, ...],
"index": 1
}
],
"model": "voyage-2",
"usage": {
"total_tokens": 10
}
}
O endpoint de embeddings da Voyage AI é https://api.voyageai.com/v1/embeddings
(POST). O cabeçalho da solicitação deve conter a chave de API. O corpo da solicitação é um objeto JSON contendo os seguintes argumentos:
- input (str, List[str]) - Uma única string de texto ou uma lista de textos como uma lista de strings. Atualmente, o comprimento máximo da lista é 128 e o número total de tokens na lista é no máximo 320K para
voyage-2
e 120K paravoyage-large-2
/voyage-code-2
. - model (str) - Nome do modelo. Opções recomendadas:
voyage-2
,voyage-large-2
,voyage-code-2
. - input_type (str, opcional, padrão
None
) - Tipo do texto de entrada. O padrão éNone
. Outras opções:query
,document
- truncation (bool, opcional, padrão
None
) - Se deve truncar os textos de entrada para caber dentro do comprimento do contexto- Se
True
, textos de entrada muito longos serão truncados para caber dentro do comprimento do contexto antes de serem vetorizados pelo modelo de embeddings - Se
False
, um erro será lançado se qualquer texto fornecido exceder o comprimento do contexto - Se não for especificado (padrão
None
), a Voyage irá truncar o texto de entrada antes de enviá-lo para o modelo de embeddings se ele exceder ligeiramente o comprimento da janela de contexto. Se exceder significativamente o comprimento da janela de contexto, um erro será lançado
- Se
- encoding_format (str, opcional, padrão
None
) - Formato no qual os embeddings são codificados. A Voyage atualmente suporta duas opções:- Se não for especificado (padrão
None
): os embeddings são representados como listas de números de ponto flutuante "base64"
: os embeddings são compactados em codificações Base64
- Se não for especificado (padrão
Exemplo de embedding da Voyage
Agora que sabemos como obter embeddings com a Voyage, vamos ver isso em ação com um breve exemplo.
Suponha que temos um pequeno corpus de seis documentos para recuperar
documents = [
"A dieta mediterrânea enfatiza peixes, azeite e vegetais, acreditando-se que reduz doenças crônicas.",
"A fotossíntese nas plantas converte energia luminosa em glicose e produz oxigênio essencial.",
"Inovações do século 20, de rádios a smartphones, centraram-se em avanços eletrônicos.",
"Os rios fornecem água, irrigação e habitat para espécies aquáticas, vitais para os ecossistemas.",
"A teleconferência da Apple para discutir os resultados do quarto trimestre fiscal e atualizações de negócios está programada para quinta-feira, 2 de novembro de 2023, às 14h PT / 17h ET.",
"As obras de Shakespeare, como 'Hamlet' e 'Sonho de uma Noite de Verão', perduram na literatura."
]
Primeiro, usaremos a Voyage para converter cada um deles em um vetor de embedding
import voyageai
vo = voyageai.Client()
# Incorporar os documentos
doc_embds = vo.embed(
documents, model="voyage-2", input_type="document"
).embeddings
Os embeddings nos permitirão fazer busca/recuperação semântica no espaço vetorial. Podemos então converter uma consulta de exemplo,
query = "Quando está programada a teleconferência da Apple?"
em um embedding e, em seguida, realizar uma busca de vizinho mais próximo para encontrar o documento mais relevante com base na distância no espaço de embedding.
import numpy as np
# Incorporar a consulta
query_embd = vo.embed(
[query], model="voyage-2", input_type="query"
).embeddings[0]
# Calcular a similaridade
# Os embeddings da Voyage são normalizados para comprimento 1, portanto, o produto escalar
# e a similaridade do cosseno são iguais.
similarities = np.dot(doc_embds, query_embd)
retrieved_id = np.argmax(similarities)
print(documents[retrieved_id])
Observe que usamos input_type="document"
e input_type="query"
para incorporar o documento e a consulta, respectivamente. Mais especificações podem ser encontradas aqui.
A saída seria o 5º documento, que de fato é o mais relevante para a consulta:
A teleconferência da Apple para discutir os resultados do quarto trimestre fiscal e atualizações de negócios está programada para quinta-feira, 2 de novembro de 2023, às 14h PT / 17h ET.
Modelos Voyage disponíveis
A Voyage recomenda o uso dos seguintes modelos de embeddings:
Modelo | Comprimento do Contexto | Dimensão do Embedding | Descrição |
---|---|---|---|
voyage-large-2 | 16000 | 1536 | O modelo de embedding generalista mais poderoso da Voyage AI. |
voyage-code-2 | 16000 | 1536 | Otimizado para recuperação de código (17% melhor que as alternativas) e também SoTA em corpora de propósito geral. Veja este post no blog da Voyage para detalhes. |
voyage-2 | 4000 | 1024 | Modelo de embedding generalista base otimizado para latência e qualidade. |
voyage-lite-02-instruct | 4000 | 1024 | Ajustado por instrução para tarefas de classificação, agrupamento e similaridade textual de sentenças, que são os únicos casos de uso recomendados para este modelo. |
voyage-2
e voyage-large-2
são modelos de embeddings generalistas, que alcançam desempenho state-of-the-art em todos os domínios e mantêm alta eficiência. voyage-code-2
é otimizado para o campo de código, oferecendo 4 vezes o comprimento do contexto para uso mais flexível, embora com uma latência relativamente maior.
A Voyage está desenvolvendo ativamente modelos mais avançados e especializados, e também oferece serviços de ajuste fino para personalizar modelos sob medida para clientes individuais. Envie um e-mail para seu gerente de conta da Anthropic ou entre em contato com o suporte da Anthropic para obter mais informações sobre modelos sob medida.
voyage-finance-2
: em brevevoyage-law-2
: em brevevoyage-multilingual-2
: em brevevoyage-healthcare-2
: em breve
Voyage no AWS Marketplace
Os embeddings da Voyage também estão disponíveis no AWS Marketplace. Aqui estão as instruções para acessar a Voyage na AWS:
- Assine o pacote do modelo
- Navegue até a página de listagem do pacote do modelo e selecione o modelo a ser implantado
- Clique no botão
Continue to subscribe
- Revise cuidadosamente os detalhes na página
Subscribe to this software
. Se você concordar com o Contrato de Licença de Usuário Final (EULA) padrão, preços e termos de suporte, clique em “Accept Offer” - Após selecionar
Continue to configuration
e escolher uma região, você receberá um Product Arn. Este é o ARN do pacote do modelo necessário para criar um modelo implantável usando Boto3- Copie o ARN que corresponde à sua região selecionada e use-o na célula subsequente
- Implante o pacote do modelo
A partir daqui, crie um espaço JupyterLab no Sagemaker Studio, faça upload do notebook da Voyage e siga as instruções dentro dele.
Perguntas frequentes
Preços
Visite a página de preços da Voyage para obter os detalhes de preços mais atualizados.