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 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 ponta a ponta. 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

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 desenvolve modelos de embedding de última geração 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 Voyage AI, mas incentivamos 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:

ModeloComprimento do ContextoDimensão do EmbeddingDescrição
voyage-3-large32.0001024 (padrão), 256, 512, 2048A melhor qualidade de recuperação para propósito geral e multilíngue.
voyage-332.0001024Otimizado para qualidade de recuperação de propósito geral e multilíngue. Veja o post do blog para detalhes.
voyage-3-lite32.000512Otimizado para latência e custo. Veja o post do blog para detalhes.
voyage-code-332.0001024 (padrão), 256, 512, 2048Otimizado para recuperação de código. Veja o post do blog para detalhes.
voyage-finance-232.0001024Otimizado para recuperação e RAG em finanças. Veja o post do blog para detalhes.
voyage-law-216.0001024Otimizado para recuperação e RAG jurídico e de contexto longo. Também melhorou o desempenho em todos os domínios. Veja o post do blog para detalhes.

Adicionalmente, os seguintes modelos de embedding multimodal são recomendados:

ModeloComprimento do ContextoDimensão do EmbeddingDescrição
voyage-multimodal-3320001024Modelo 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 mais. Veja o 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 os embeddings da Voyage:

  1. Cadastre-se no site da Voyage AI
  2. Obtenha uma chave de API
  3. Configure 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 requisições HTTP, como descrito abaixo.

Pacote Python 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-3", 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.02012746, 0.01957859, ...]  # embedding para "Texto de exemplo 1"
[0.01429677, 0.03077182, ...]  # embedding para "Texto de exemplo 2"

Ao criar os embeddings, você também pode especificar alguns outros argumentos para a função embed(). Você pode ler mais sobre a especificação aqui

API HTTP Voyage

Você também pode obter embeddings solicitando a API HTTP da Voyage. Por exemplo, você pode enviar uma requisiçã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"
  }'

A resposta que você receberia é 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-3",
  "usage": {
    "total_tokens": 10
  }
}

Você pode ler mais sobre o endpoint de embedding na documentação da Voyage

AWS Marketplace

Os embeddings da Voyage também estão disponíveis no AWS Marketplace. As instruções para acessar a Voyage na AWS estão disponíveis aqui.

Exemplo de Início Rápido

Agora que sabemos como obter embeddings, vamos ver um breve exemplo.

Suponha que temos um pequeno corpus de seis documentos para recuperar

documents = [
    "A dieta mediterrânea enfatiza peixe, azeite e vegetais, acreditando-se 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, do rádio aos 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á agendada 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-3", input_type="document"
).embeddings

Os embeddings nos permitirão fazer busca semântica / recuperação no espaço vetorial. Dado um exemplo de consulta,

query = "Quando está agendada a teleconferência da Apple?"

convertemos em um embedding e realizamos uma busca do 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-3", 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á agendada para quinta-feira, 2 de novembro de 2023 às 14h PT / 17h ET.

Se você está procurando um conjunto detalhado de guias sobre como fazer RAG com embeddings, incluindo bancos de dados vetoriais, confira nosso cookbook RAG.

FAQ

Preços

Visite a página de preços da Voyage para os detalhes de preços mais atualizados.