← Voltar ao curso
Nível 3 — Automação e escala · Módulo 3.8 — RAG e busca agêntica

3.8.1 · Chunking, embeddings e vector DB

5 min de vídeo TEC

Objetivo: ao final, o consultor descreve o pipeline de RAG ponta a ponta, sabe que a Anthropic não fornece modelo de embedding, e reconhece os quatro pontos onde a qualidade se perde.

O que você precisa levar desta aula

  1. A Anthropic não fornece modelo de embedding. A recomendação é Voyage AI (família voyage-4), com a orientação explícita de avaliar outros fornecedores — e o parâmetro input_type (document ao indexar, query ao buscar) é obrigatório para retrieval e degrada silenciosamente quando esquecido.
  2. O pedaço isolado perde o contexto do documento. É a maior fonte de perda de qualidade do pipeline: "o limite é de 50 mil" sem dizer de quê é inútil, e às vezes enganoso.
  3. Traga 20 pedaços, não 5. É a recomendação medida da Anthropic; o pedaço certo com frequência não está entre os cinco primeiros.

O pipeline, com código

import voyageai

vo = voyageai.Client()          # lê VOYAGE_API_KEY do ambiente

# 1. Indexação — uma vez, ou quando o acervo mudar
pedacos = fatiar_por_secao(documentos)                       # ver "corte", abaixo
vetores = vo.embed(pedacos, model="voyage-4",
                   input_type="document").embeddings         # input_type = document

guardar(vetores, pedacos)                                    # vector DB

# 2. Consulta — a cada pergunta
import numpy as np

q = vo.embed([pergunta], model="voyage-4",
             input_type="query").embeddings[0]               # input_type = query

# Vetores da Voyage são normalizados: produto escalar == similaridade de cosseno
similaridades = np.dot(vetores, q)
top = np.argsort(similaridades)[-20:][::-1]                  # 20, não 5

contexto = "\n\n".join(pedacos[i] for i in top)
resposta = client.messages.create(
    model="claude-opus-5",
    max_tokens=4000,
    messages=[{"role": "user",
               "content": f"<documentos>\n{contexto}\n</documentos>\n\n{pergunta}"}],
)

Repare que o passo 2 monta o contexto em tag XML e põe os documentos antes da pergunta — as duas técnicas da aula 3.6.1, aplicadas aqui.

Os modelos de embedding

Modelo Contexto Dimensões Quando
voyage-4-large 32.000 1024 (padrão), 256, 512, 2048 Melhor qualidade geral e multilíngue
voyage-4 32.000 idem Equilíbrio entre qualidade e custo
voyage-4-lite 32.000 idem Latência e custo baixos
voyage-code-3 32.000 idem Código — relevante para ABAP e CDS
voyage-finance-2 32.000 1024 Domínio financeiro
voyage-law-2 16.000 1024 Jurídico e contexto longo
voyage-context-4 120.000 idem Embedding de pedaço com contexto do documento (aula 3.8.2)

preview — pode mudar · Modelos e limites conferidos em julho de 2026. Voyage é um fornecedor terceiro: preço, disponibilidade e termos são dele, não da Anthropic.

Dois detalhes que valem dinheiro:

Onde a qualidade se perde

Ponto O que dá errado O que fazer
Corte Fatiar por número de caracteres corta tabela, separa título do conteúdo Fatiar pela estrutura: seção, título, item. Sobreposição de 10–20% entre pedaços vizinhos
Perda de contexto "O limite é de 50 mil" — de quê? Contextual retrieval ou voyage-context-4 (aula 3.8.2)
Vão de vocabulário Pergunta e documento não compartilham palavra É o que a busca semântica resolve — na maior parte dos casos
Quantos trazer 5 pedaços é o padrão dos tutoriais, e é pouco 20, conforme a medição da Anthropic
input_type omitido Busca pior, sem erro nenhum document ao indexar, query ao buscar. Sempre

A linha do corte merece um exemplo de projeto: uma FS com tabela de alçada fatiada a cada 800 caracteres pode produzir um pedaço com os valores e outro com os cargos. Nenhum dos dois responde "quem aprova acima de 50 mil", e os dois parecem relevantes na busca.

Tamanho do pedaço

Não há número universal, mas há um raciocínio:

Pedaço Efeito
Muito pequeno (< 200 tokens) Preciso, mas sem contexto — muitos pedaços para reconstruir uma resposta
Médio (300–800 tokens) A faixa usual
Grande (> 1500 tokens) Traz contexto junto, mas dilui: o pedaço casa com muita coisa e discrimina pouco

E a regra que dispensa a discussão em metade dos casos: fatie pela estrutura antes de pensar em tamanho. Documento de projeto tem seção, título e item. Respeitar isso resolve mais que qualquer ajuste de número.

Regra Wayon Índice construído sobre documentação de cliente é infraestrutura que hospeda dado de cliente — vale a mesma classificação do módulo 3.9 aplicada ao vector DB e ao fornecedor de embedding, incluindo onde os vetores ficam armazenados e por quanto tempo. Vetorizar documento de cliente com fornecedor terceiro é envio de dado a terceiro, e passa pela política da aula 1.1.4 como qualquer outro envio.

📖 Embeddings · Técnicas de prompt — aula 3.6.1

Quiz — 4 questões

1.Qual modelo de embedding a Anthropic disponibiliza para uso com o Claude?
  • a)claude-embed-1, otimizado para uso conjunto com os modelos Claude

    Não existe; é o tipo de suposição que só a leitura da documentação desfaz.

  • b)Nenhum — a Anthropic não tem modelo de embedding e recomenda a Voyage AI, sugerindo avaliar outros fornecedores

    Correto, e tem consequência prática: o embedding é contrato com terceiro.

  • c)O próprio Opus 5, através de um parâmetro output_config específico para vetores

    A Messages API não devolve vetores de embedding.

Ver resposta e por quê
a) Não existe; é o tipo de suposição que só a leitura da documentação desfaz.
b) Correto, e tem consequência prática: o embedding é contrato com terceiro.
c) A Messages API não devolve vetores de embedding.
2.Um pipeline de RAG sobre FS do Meridiano indexa e busca sem passar input_type. Qual é o efeito?
  • a)A API da Voyage rejeita a chamada por falta de parâmetro obrigatório

    A chamada passa — é justamente por isso que o erro sobrevive em produção.

  • b)Nenhum: input_type só afeta modelos multimodais

    Afeta os modelos de texto usados em retrieval, que são o caso aqui.

  • c)A busca fica pior sem nenhum erro — documento e pergunta precisam ser vetorizados de formas diferentes

    Correto. É degradação silenciosa, o tipo mais difícil de encontrar depois.

Ver resposta e por quê
a) A chamada passa — é justamente por isso que o erro sobrevive em produção.
b) Afeta os modelos de texto usados em retrieval, que são o caso aqui.
c) Correto. É degradação silenciosa, o tipo mais difícil de encontrar depois.
3.Uma FS com tabela de alçada foi fatiada a cada 800 caracteres, e a tabela ficou partida em dois pedaços. Qual é a consequência?
  • a)Nenhum dos dois pedaços responde "quem aprova acima de 50 mil", e os dois parecem relevantes na busca

    Correto. É o argumento para fatiar pela estrutura do documento antes de pensar em tamanho.

  • b)O sistema junta automaticamente pedaços vizinhos quando ambos são recuperados

    Não há junção automática: o que vai ao modelo é o que a busca devolveu.

  • c)A tabela é descartada do índice por ser conteúdo estruturado

    Tabela é texto como qualquer outro e entra no índice normalmente.

Ver resposta e por quê
a) Correto. É o argumento para fatiar pela estrutura do documento antes de pensar em tamanho.
b) Não há junção automática: o que vai ao modelo é o que a busca devolveu.
c) Tabela é texto como qualquer outro e entra no índice normalmente.
4.Quantos pedaços recuperar por consulta, segundo a medição publicada pela Anthropic? ---
  • a)Cerca de 20 — o pedaço certo frequentemente não está entre os cinco primeiros

    Correto. É recomendação medida, não regra de bolso.

  • b)5 — mais que isso enche o contexto e piora a resposta

    É o padrão da maioria dos tutoriais e está abaixo do recomendado.

  • c)Quantos couberem na janela de contexto do modelo

    Encher a janela não é estratégia de recuperação e desperdiça tokens.

Ver resposta e por quê
a) Correto. É recomendação medida, não regra de bolso.
b) É o padrão da maioria dos tutoriais e está abaixo do recomendado.
c) Encher a janela não é estratégia de recuperação e desperdiça tokens.