Embeddings
Antes de implementar embeddings
Ao selecionar um provedor de embeddings, há vários fatores que você pode considerar dependendo de 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 embedding 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 continuado 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 capacidades abrangendo todas as considerações acima é a Voyage AI.
A Voyage AI cria modelos de embedding de última geração e oferece modelos personalizados para domínios industriais específicos como finanças e saúde, ou modelos ajustados sob medida para clientes individuais.
O restante deste guia é para Voyage AI, mas encorajamos você a avaliar uma variedade de fornecedores de embeddings para encontrar o melhor ajuste para seu caso de uso específico.
Modelos Disponíveis
A Voyage recomenda usar os seguintes modelos de embedding de texto:
| Modelo | Comprimento do Contexto | Dimensão do Embedding | Descrição |
|---|---|---|---|
voyage-3-large | 32,000 | 1024 (padrão), 256, 512, 2048 | A melhor qualidade de recuperação geral e multilíngue. Veja post do blog para detalhes. |
voyage-3.5 | 32,000 | 1024 (padrão), 256, 512, 2048 | Otimizado para qualidade de recuperação geral e multilíngue. Veja post do blog para detalhes. |
voyage-3.5-lite | 32,000 | 1024 (padrão), 256, 512, 2048 | Otimizado para latência e custo. Veja post do blog para detalhes. |
voyage-code-3 | 32,000 | 1024 (padrão), 256, 512, 2048 | Otimizado para recuperação de código. Veja post do blog para detalhes. |
voyage-finance-2 | 32,000 | 1024 | Otimizado para recuperação e RAG de finanças. Veja post do blog para detalhes. |
voyage-law-2 | 16,000 | 1024 | Otimizado para recuperação e RAG jurídico e de contexto longo. Também melhorou o desempenho em todos os domínios. Veja post do blog para detalhes. |
Além disso, os seguintes modelos de embedding multimodal são recomendados:
| Modelo | Comprimento do Contexto | Dimensão do Embedding | Descrição |
|---|---|---|---|
voyage-multimodal-3 | 32000 | 1024 | Modelo de embedding multimodal rico que pode vetorizar texto intercalado e imagens ricas em conteúdo, como capturas de tela de PDFs, slides, tabelas, figuras e muito mais. Veja post do blog para detalhes. |
Precisa de ajuda para decidir qual modelo de embedding de texto usar? Confira o FAQ.
Começando com Voyage AI
Para acessar embeddings 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 obter os embeddings usando o pacote Python oficial voyageai ou solicitações HTTP, conforme descrito abaixo.
Biblioteca Python Voyage
O pacote voyageai pode ser instalado usando o seguinte comando:
pip install -U voyageaiEm 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-3.5", input_type="document")
print(result.embeddings[0])
print(result.embeddings[1])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:
[-0.013131560757756233, 0.019828535616397858, ...] # embedding para "Texto de exemplo 1"
[-0.0069352793507277966, 0.020878976210951805, ...] # embedding para "Texto de exemplo 2"Ao criar os embeddings, você pode especificar alguns outros argumentos para a função embed().
Para mais informações sobre o pacote python Voyage, veja a documentação Voyage.
API HTTP Voyage
Você também pode obter embeddings solicitando a API HTTP 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-3.5"
}'A resposta que você obteria é um objeto JSON contendo os embeddings e o uso de tokens:
{
"object": "list",
"data": [
{
"embedding": [-0.013131560757756233, 0.019828535616397858, ...],
"index": 0
},
{
"embedding": [-0.0069352793507277966, 0.020878976210951805, ...],
"index": 1
}
],
"model": "voyage-3.5",
"usage": {
"total_tokens": 10
}
}
Para mais informações sobre a API HTTP Voyage, veja a documentação Voyage.
AWS Marketplace
Embeddings Voyage estão disponíveis no AWS Marketplace. Instruções para acessar Voyage na AWS estão disponíveis aqui.
Exemplo de início rápido
Agora que sabemos como obter embeddings, vamos ver um exemplo breve.
Suponha que temos um pequeno corpus de seis documentos para recuperar
documents = [
"A dieta mediterrânea enfatiza peixe, azeite de oliva e vegetais, acreditada para reduzir 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.",
"Rios fornecem água, irrigação e habitat para espécies aquáticas, vitais para ecossistemas.",
"A conferência telefônica da Apple para discutir os resultados do quarto trimestre fiscal e atualizações de negócios está agendada para quinta-feira, 2 de novembro de 2023 às 14:00 PT / 17:00 ET.",
"As obras de Shakespeare, como 'Hamlet' e 'Sonho de uma Noite de Verão,' perduram na literatura."
]
Primeiro usaremos 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-3.5", input_type="document"
).embeddingsOs embeddings nos permitirão fazer busca semântica / recuperação no espaço vetorial. Dada uma consulta de exemplo,
query = "Quando está agendada a conferência telefônica da Apple?"nós a convertemos em um embedding, e conduzimos uma busca de vizinho mais próximo para encontrar o documento mais relevante baseado na distância no espaço de embedding.
import numpy as np
# Incorporar a consulta
query_embd = vo.embed(
[query], model="voyage-3.5", input_type="query"
).embeddings[0]
# Calcular a similaridade
# Embeddings Voyage são normalizados para comprimento 1, portanto produto escalar
# e similaridade de cosseno são os mesmos.
similarities = np.dot(doc_embds, query_embd)
retrieved_id = np.argmax(similarities)
print(documents[retrieved_id])Note que usamos input_type="document" e input_type="query" para incorporar o documento e consulta, respectivamente. Mais especificação pode ser encontrada aqui.
A saída seria o 5º documento, que é de fato o mais relevante para a consulta:
A conferência telefônica da Apple para discutir os resultados do quarto trimestre fiscal e atualizações de negócios está agendada para quinta-feira, 2 de novembro de 2023 às 14:00 PT / 17:00 ET.Se você está procurando por um conjunto detalhado de livros de receitas sobre como fazer RAG com embeddings, incluindo bancos de dados vetoriais, confira nosso livro de receitas RAG.
FAQ
Preços
Visite a página de preços da Voyage para os detalhes de preços mais atualizados.