Embeddings
Embeddings de texto são representações numéricas de texto que permitem medir a similaridade semântica. Este guia introduz 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 de suas necessidades e preferências:
- Tamanho do dataset e especificidade do domínio: tamanho do dataset 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 embedding e latência fim a fim. Esta é uma consideração particularmente importante para implantações em 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 únicos
Como obter embeddings com Anthropic
A Anthropic não oferece seu próprio modelo de embedding. Um provedor de embeddings que tem uma ampla variedade de opções e recursos abrangendo todas as considerações acima é a Voyage AI.
A Voyage AI desenvolve modelos de embedding estado da arte e oferece modelos personalizados para domínios específicos da indústria, como finanças e saúde, ou modelos ajustados sob medida para clientes individuais.
O resto deste guia é para a Voyage AI, mas incentivamos você a avaliar uma variedade de fornecedores de embeddings para encontrar a melhor opção para seu caso de uso específico.
Começando com a Voyage AI
Para acessar os embeddings da Voyage:
- Cadastre-se no site da Voyage AI
- Obtenha uma chave de API
- Configure a chave de API como uma variável de ambiente para conveniência:
Você pode executar os embeddings usando o pacote Python voyageai oficial ou requisições HTTP, como descrito abaixo.
Pacote Python Voyage
O pacote voyageai
pode ser instalado usando o seguinte comando:
Em seguida, você pode criar um objeto cliente e começar a usá-lo para incorporar seus textos:
result.embeddings
será uma lista de dois vetores de embedding, cada um contendo 1024 números de ponto flutuante.
Após executar o código acima, os dois embeddings serão impressos na tela:
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
["I like cats", "I also like dogs"]
. 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. 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 embedding 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 embedding - Para casos de uso de recuperação/busca, recomendamos especificar este 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 embedding - Se
False
, um erro será gerado se algum texto dado exceder o comprimento do contexto - Se não especificado (padrão é
None
), a Voyage truncará o texto de entrada antes de enviá-lo ao modelo de embedding se ele exceder ligeiramente o comprimento da janela de contexto. Se exceder significativamente o comprimento da janela de contexto, um erro será gerado
- Se
API HTTP 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:
A resposta que você receberia é um objeto JSON contendo os embeddings e o uso de tokens:
O endpoint de embedding da Voyage AI é https://api.voyageai.com/v1/embeddings
(POST). O cabeçalho da requisição deve conter a chave da API. O corpo da requisiçã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. 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 embedding - Se
False
, um erro será gerado se algum texto dado exceder o comprimento do contexto - Se não especificado (padrão é
None
), a Voyage truncará o texto de entrada antes de enviá-lo ao modelo de embedding se ele exceder ligeiramente o comprimento da janela de contexto. Se exceder significativamente o comprimento da janela de contexto, um erro será gerado
- 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 especificado (padrão é
None
): os embeddings são representados como listas de números de ponto flutuante "base64"
: os embeddings são comprimidos para codificações Base64
- Se não especificado (padrão é
Exemplo de embedding 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
Primeiro usaremos a Voyage para converter cada um deles em um vetor de embedding
Os embeddings nos permitirão fazer busca semântica / recuperação no espaço vetorial. Podemos então converter uma consulta de exemplo,
em um embedding, e então conduzir uma busca do vizinho mais próximo para encontrar o documento mais relevante com base na distância no espaço de embedding.
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:
Modelos Voyage disponíveis
A Voyage recomenda usar os seguintes modelos de embedding:
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 alternativas), e também estado da arte em corpora de propósito geral. Veja este post do 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 | Treinado com instruções 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 embedding generalistas, que alcançam desempenho estado da arte em diversos domínios e mantêm alta eficiência. voyage-code-2
é otimizado para a área de código, oferecendo 4x o comprimento do contexto para uso mais flexível, embora com uma latência relativamente maior.
A Voyage está ativamente desenvolvendo modelos mais avançados e especializados, e também oferece serviços de fine-tuning para personalizar modelos sob medida para clientes individuais. Envie um e-mail para seu gerente de conta Anthropic ou entre em contato com o suporte Anthropic para mais informações sobre modelos personalizados.
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 para implantar
- 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” - Depois de 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 nele contidas.
FAQ
Preços
Visite a página de preços da Voyage para os detalhes de preços mais atualizados.