Contextual Retrieval
A recuperação contextual acrescenta a cada bloco uma nota escrita por um LLM indicando sua posição no documento, para que embeddings e BM25 encontrem os trechos certos.
A recuperação contextual é uma técnica de indexação para geração aumentada por recuperação (RAG) na qual um modelo de linguagem de grande porte (LLM) lê cada documento completo e redige uma nota curta, geralmente de 50 a 100 tokens, que situa um trecho dentro do documento. A nota é acrescentada ao início do trecho antes de ele ser convertido em embedding e adicionado a um índice de palavras-chave, permitindo que a pesquisa encontre informações que o trecho, isoladamente, nunca menciona. A Anthropic apresentou a recuperação contextual em setembro de 2024.
O problema que resolve#
Os pipelines de RAG dividem os documentos em trechos pequenos o suficiente para gerar embeddings com precisão e inserir vários deles na janela de contexto de um modelo, e um trecho extraído de seu documento muitas vezes perde os fatos que permitem encontrá-lo. O exemplo da Anthropic é um trecho de um relatório financeiro que diz: "A receita da empresa cresceu 3% em relação ao trimestre anterior." Ele não identifica a empresa nem o trimestre, então uma pergunta sobre a receita da ACME no segundo trimestre de 2023 não encontra correspondência, seja por meio de embeddings, seja por pesquisa de palavras-chave. A recuperação contextual armazena o trecho assim: "Este trecho é de um relatório apresentado à SEC sobre o desempenho da ACME corp no segundo trimestre de 2023; a receita do trimestre anterior foi de US$ 314 milhões. A receita da empresa cresceu 3% em relação ao trimestre anterior."
Os recortes de objetos perdem contexto da mesma forma que os trechos de texto. A solução de recorte de objetos da Ultralytics executa o YOLO26 em imagens ou vídeos e salva cada detecção em seu próprio arquivo, crop_1.jpg, crop_2.jpg e assim por diante; assim, um recorte mostra um caminhão, mas não indica de qual câmera, local ou cena veio. Indexar cada recorte com um prefixo curto que descreva seu quadro de origem, como o nome da câmera, o horário e os outros objetos detectados ao redor, restabelece esse contexto para a pesquisa por palavras-chave e a pesquisa semântica.
Como funciona a recuperação contextual#
Para cada trecho, o LLM recebe o documento completo e o próprio trecho e recebe a instrução: "forneça um contexto curto e conciso que situe este trecho no documento completo, para melhorar a recuperação do trecho pela pesquisa". A Anthropic usou o Claude 3 Haiku com cache de prompts, que processa cada documento uma vez e o reutiliza para todos os seus trechos, e calculou o custo único em US$ 1,02 por milhão de tokens de documento. Os trechos contextualizados são inseridos em um índice de embeddings ("embeddings contextuais") e em um índice de palavras-chave BM25 ("BM25 contextual"). Na hora da consulta, os dois índices são pesquisados e os resultados, combinados como na pesquisa híbrida; em seguida, um reranqueador avalia os 150 melhores candidatos e os 20 melhores trechos são incluídos no prompt.
Incorporar o trecho de exemplo em embedding com e sem o contexto demonstra o efeito na pesquisa vetorial:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")
# Anthropic's example chunk and the context an LLM wrote for it from the full filing
chunk = "The company's revenue grew by 3% over the previous quarter."
context = "This chunk is from an SEC filing on ACME corp's performance in Q2 2023; the previous quarter's revenue was $314 million."
other = "Globex Corporation reported that Q2 2023 revenue fell 2% on weaker demand."
query = "How did ACME's revenue change in Q2 2023?"
candidates = {"plain chunk": chunk, "contextual chunk": f"{context} {chunk}", "Globex chunk": other}
# Cosine similarity of the query to each indexed text
scores = model.similarity(model.encode(query), model.encode(list(candidates.values())))[0]
for name, score in zip(candidates, scores):
print(f"{name}: {score:.2f}")O trecho sem contexto obtém uma pontuação de 0,49 para a pergunta, igual à de um trecho sobre outra empresa. Com o contexto acrescentado ao início, o trecho obtém uma pontuação de 0,83 e fica muito à frente na primeira posição.
Recuperação Contextual vs. Técnicas Relacionadas#
- Fragmentação tardia: Dá à incorporação de cada fragmento o contexto do documento por meio da atenção do modelo de incorporação, sem uma chamada ao LLM por fragmento. O texto armazenado do fragmento permanece inalterado, portanto a busca por palavras-chave não ganha nada.
- Fragmentação semântica: Escolhe onde os fragmentos começam e terminam. Ela se combina com a recuperação contextual, que preenche o que cada fragmento deixa implícito.
- Prefixos de título e cabeçalho: A prática mais antiga e barata de acrescentar o mesmo título do documento ou cabeçalho da seção a cada fragmento. A recuperação contextual escreve uma nota diferente para cada fragmento.
- Engenharia de contexto: A prática mais ampla de decidir o que entra na janela de contexto de um modelo no momento da inferência. A recuperação contextual atua uma etapa antes, sobre o que é indexado.
Ganhos Medidos#
A Anthropic mediu a falha de recuperação como 1 menos recall@20, a proporção de consultas cujo fragmento relevante não estava entre os 20 primeiros resultados. O pipeline de referência falhou em 5,7% das consultas. As incorporações contextuais reduziram essa taxa para 3,7%, uma redução de 35%, e a adição do BM25 contextual a baixou para 2,9%, uma redução de 49%. A reclassificação dos resultados combinados levou a taxa de falha a 1,9%, uma redução de 67% em relação à referência.










