Além do RAG: compressão de conhecimento orientada a tarefas para IA empresarial na AWS

O limite do RAG em tarefas analíticas complexas

Se você já usou Geração Aumentada por Recuperação (RAG) para analisar centenas de documentos ao mesmo tempo — como em processos de due diligence financeira ou revisões de conformidade regulatória — provavelmente já esbarrou nas suas limitações. A busca por similaridade consegue recuperar fragmentos relevantes, mas frequentemente perde as conexões que existem entre documentos diferentes.

Para ilustrar o problema, imagine uma firma de private equity avaliando uma aquisição de R$ 500 milhões. A equipe de due diligence precisa analisar demonstrações financeiras de 12 subsidiárias ao longo de 5 anos, mais de 200 contratos com fornecedores, relatórios de conformidade ambiental de 8 instalações e mais de 50 casos jurídicos. Quando um analista pergunta sobre os riscos financeiros consolidados considerando os termos atuais com fornecedores e os litígios pendentes, a busca por similaridade do RAG simplesmente não consegue montar essa resposta — as informações relevantes estão espalhadas por centenas de documentos sem nenhuma similaridade lexical entre elas.

É exatamente esse tipo de problema que a técnica TAKC (Task-Aware Knowledge Compression — Compressão de Conhecimento Orientada a Tarefas) se propõe a resolver.

O que é TAKC e como funciona

A ideia central do TAKC é usar um LLM (Modelo de Linguagem de Grande Escala) para produzir resumos mais curtos e focados em tarefas específicas — com resumos diferentes para tarefas diferentes. O ponto-chave é que documentos diferentes exigem informações diferentes dependendo do contexto de uso.

Um relatório anual comprimido para análise financeira precisa preservar receitas, margens e dados de fluxo de caixa. O mesmo relatório comprimido para uma revisão de conformidade precisa reter citações regulatórias e históricos de violações. Uma sumarização genérica tenta cobrir tudo e acaba diluindo a densidade de informação para qualquer caso de uso específico.

O TAKC comprime os documentos pela lente de uma tarefa específica: mantém o que importa e descarta o resto. Essa compressão acontece offline, uma vez por documento por tipo de tarefa. No momento da consulta, o sistema recupera a representação já comprimida em vez do documento original e responde com base nessa versão. Se a representação comprimida não tiver detalhes suficientes, um analisador de complexidade de consulta redireciona a pergunta para um nível de compressão menor, que retém mais contexto.

Diferente do RAG, o TAKC dá acesso a toda a base de conhecimento em forma comprimida — não apenas aos top-k fragmentos retornados por uma busca por similaridade. Isso preserva as conexões entre documentos, porque a compressão processa os documentos de forma integrada. A redução de tokens varia de 8x a 64x, sempre priorizando as informações relevantes para a tarefa.

Compressão em múltiplos níveis

Nem toda consulta exige o mesmo nível de detalhe. Uma pergunta como “Qual foi a receita do terceiro trimestre?” precisa de muito menos contexto do que um pedido para analisar as relações entre prazos de pagamento a fornecedores e o fluxo de caixa trimestral entre subsidiárias.

O TAKC resolve isso mantendo quatro níveis de compressão para cada tipo de tarefa:

  • Leve (8x): reduz aproximadamente 87,5% do contexto. Preserva detalhes suficientes para raciocínio em múltiplas etapas e síntese entre documentos.
  • Médio (16x): redução de aproximadamente 93,8%. Adequado para consultas analíticas de complexidade moderada.
  • Alto (32x): redução de aproximadamente 96,9%. Atende buscas factuais e perguntas bem definidas.
  • Ultra (64x): redução de aproximadamente 98,4%. Indicado para tarefas de classificação e buscas por palavras-chave.

Um analisador de complexidade de consulta roteia automaticamente cada pergunta para o nível adequado, com base em sinais como o comprimento da consulta, o tipo de pergunta e a presença de linguagem analítica. Perguntas factuais simples chegam ao cache mais comprimido; consultas analíticas complexas usam o cache menos comprimido. Tudo isso acontece de forma transparente para o usuário.

Na prática, a maioria das consultas empresariais são buscas simples que podem ser atendidas pelos níveis de maior compressão com custo mínimo. As consultas complexas, menos frequentes, consomem orçamentos maiores de contexto apenas quando necessário.

Arquitetura na AWS

A implementação roda na AWS como dois pipelines serverless desacoplados: um para ingestão e outro para consultas.

Imagem original — fonte: Aws

O AWS Lambda foi escolhido para computação porque cada invocação é de curta duração e orientada a eventos. O Amazon API Gateway expõe a interface de consulta como um endpoint REST. O Amazon ElastiCache Serverless cuida do cache com leituras em chaves compostas (takc:{task}:{rate}) sem necessidade de gerenciamento de shards. O Amazon Cognito gerencia emissão e renovação de tokens JWT sem código de autenticação customizado.

Pipeline de ingestão

Quando um documento chega ao Amazon S3 sob um prefixo de tipo de tarefa (por exemplo, raw-data/financial/), uma notificação de evento S3 aciona uma função AWS Lambda. Essa função divide o documento em segmentos de 256 tokens com sobreposição de 50 tokens para evitar perda de informação nas bordas. Em seguida, invoca de forma assíncrona uma função Lambda de compressão para cada segmento, permitindo processamento paralelo.

A segunda função chama o Amazon Bedrock para comprimir os segmentos nos quatro níveis de compressão. Cada chamada de compressão inclui um prompt orientado à tarefa que instrui o modelo sobre quais informações preservar. Veja um exemplo de prompt para análise financeira:

TASK: Financial analysis. Preserve revenue metrics, margins, cash flow, debt obligations, and financial risk indicators.
COMPRESSION TARGET: Reduce to approximately 1/16 of original length.
INSTRUCTIONS:
- Focus on facts and relationships relevant to the task
- Preserve numerical data and metrics
- Maintain entities and their attributes
- Keep causal relationships and dependencies
- Remove redundant or irrelevant information

O modelo sabe o que preservar porque o prompt especifica exatamente o que importa para aquela tarefa — é isso que torna a abordagem orientada à tarefa, em vez de uma compressão genérica.

As saídas comprimidas são armazenadas no Amazon ElastiCache Serverless com chaves como takc:financial:medium e têm backup no S3 para durabilidade. As entradas de cache usam TTL de 24 horas. Se uma entrada for removida ou expirar, a função de consulta recorre ao backup no S3 e repovoа o cache na leitura.

Pipeline de consulta

O usuário se autentica pelo Amazon Cognito, recebe um JWT (JSON Web Token) e envia a consulta pelo Amazon API Gateway. O AWS WAF (Firewall de Aplicação Web) fica na frente da API para limitação de taxa e proteção contra ameaças. Uma função Lambda analisa a complexidade da consulta por heurísticas, recupera o cache comprimido adequado do ElastiCache e envia o contexto comprimido junto com a consulta ao Amazon Bedrock para inferência.

As chamadas de compressão ao Bedrock — que são mais custosas — acontecem apenas uma vez durante a ingestão. O caminho de consulta é apenas uma busca no cache mais a inferência sobre o contexto comprimido.

Stack completo de serviços

O stack utiliza o Amazon Bedrock (Anthropic Claude 3 Haiku, Claude 3 Sonnet e Amazon Titan Text) para compressão e inferência. A seleção de modelo é configurável via valores de contexto do CDK sem alterações de código. O AWS Lambda (Python 3.12+) trata o processamento de dados e a lógica de consulta. O Amazon ElastiCache Serverless armazena o cache comprimido, enquanto o Amazon S3 guarda dados brutos, segmentos e backups do cache (criptografados com KMS). O Amazon API Gateway expõe os endpoints REST, e o Amazon Cognito fornece autenticação baseada em JWT. O AWS WAF protege a API com limitação de taxa e regras de segurança gerenciadas. O Amazon CloudWatch oferece monitoramento e métricas, e o AWS Key Management Service (AWS KMS) gerencia as chaves de criptografia.

Toda a infraestrutura é definida como um único stack do AWS Cloud Development Kit (AWS CDK) e implantada com um único comando.

Comparativo de custos

A tabela abaixo mostra o consumo de tokens de entrada para uma base de conhecimento de 100.000 tokens consultada 1.000 vezes por dia (tokens de saída são excluídos porque o tamanho da resposta é independente do tamanho do contexto):

  • Contexto completo: 100.000 tokens por consulta → 100.000.000 tokens/dia → 100% do custo
  • RAG (top-10 fragmentos): ~10.000 tokens → 10.000.000/dia → 10%
  • TAKC Leve (8x): ~12.500 tokens → 12.500.000/dia → 12,5%
  • TAKC Médio (16x): ~6.250 tokens → 6.250.000/dia → 6,25%
  • TAKC Alto (32x): ~3.125 tokens → 3.125.000/dia → 3,1%
  • TAKC Ultra (64x): ~1.563 tokens → 1.563.000/dia → 1,6%

O TAKC exige um custo inicial de compressão — chamadas únicas ao Bedrock durante a ingestão. Esse custo se amortiza em bases de conhecimento que mudam com pouca frequência e são consultadas repetidamente. Para bases de conhecimento que mudam a cada hora, o modelo de recuperação por consulta do RAG pode ser mais prático.

Quando escolher TAKC, RAG ou ambos

Cada abordagem tem seu cenário ideal:

  • TAKC é mais indicado quando: as consultas exigem raciocínio entre documentos e síntese; a base de conhecimento muda diariamente ou menos; os tipos de tarefa são bem definidos; é necessário considerar o corpus completo; e a rastreabilidade da fonte não é obrigatória.
  • RAG é mais indicado quando: as consultas são buscas factuais pontuais; a base de conhecimento muda a cada hora ou mais; os padrões de consulta são imprevisíveis; apenas alguns documentos são relevantes; e o usuário precisa rastrear a resposta até o documento-fonte.

Na prática, sistemas em produção frequentemente se beneficiam das duas abordagens. O RAG trata buscas rápidas com eficiência. O TAKC trata consultas analíticas onde abordagens baseadas em recuperação perdem conexões importantes. Um analisador de complexidade de consulta pode rotear entre eles. Para cargas de trabalho reguladas que exigem tanto raciocínio entre documentos quanto auditabilidade, é possível combinar TAKC para a resposta analítica e RAG para recuperar os documentos-fonte de suporte na trilha de auditoria.

Como implantar a implementação de referência

Para implantar a implementação de referência, são necessários: uma conta AWS com acesso a modelos do Amazon Bedrock, a CLI do AWS CDK, Python 3.12 ou superior e Node.js 18 ou superior.

Clone o repositório aws-samples/sample-bedrock-takc-compression e implante o stack CDK:

git clone https://github.com/aws-samples/sample-bedrock-takc-compression
cd sample-bedrock-takc-compression/cdk
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cdk deploy

Após a implantação, faça o upload de um documento para o bucket S3:

aws s3 cp your-document.pdf s3://$(aws cloudformation describe-stacks --stack-name TakcStack \
  --query 'Stacks[0].Outputs[?OutputKey==`DataBucketName`].OutputValue' \
  --output text)/raw-data/financial/

Aguarde 2 a 3 minutos para que o pipeline de ingestão segmente e comprima o documento nos quatro níveis. Em seguida, consulte o endpoint da API:

curl -X POST $(aws cloudformation describe-stacks --stack-name TakcStack \
  --query 'Stacks[0].Outputs[?OutputKey==`ApiEndpoint`].OutputValue' \
  --output text)/query \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"question": "What are the key financial risks?"}'

O sistema cuida automaticamente da segmentação, compressão em múltiplos níveis, cache e roteamento de consultas sem configuração adicional.

Para evitar cobranças contínuas após os testes, esvazie o bucket S3 e destrua o stack CDK:

aws s3 rm s3://$(aws cloudformation describe-stacks --stack-name TakcStack \
  --query 'Stacks[0].Outputs[?OutputKey==`DataBucketName`].OutputValue' \
  --output text) --recursive
cd sample-bedrock-takc-compression/cdk
source .venv/bin/activate
cdk destroy

A chave KMS é retida com uma janela de exclusão pendente de 30 dias. Para agendar sua exclusão imediatamente:

aws kms schedule-key-deletion --key-id <key-id> --pending-window-in-days 7

Conclusão

Tarefas analíticas complexas que abrangem centenas de documentos exigem mais do que recuperação de fragmentos. O TAKC oferece uma abordagem construída para esse cenário: comprima a base de conhecimento completa offline pela lente de tarefas específicas, armazene essas representações em múltiplos níveis de fidelidade e direcione o nível de compressão adequado para a complexidade de cada consulta.

A implementação na AWS usa o Amazon Bedrock para compressão e inferência, o Amazon ElastiCache Serverless para cache e uma arquitetura totalmente serverless que escala conforme a demanda. O código de referência, a infraestrutura CDK e os scripts de implantação estão disponíveis em aws-samples/sample-bedrock-takc-compression.

Referências

Fonte

Beyond RAG: Task-aware knowledge compression for enterprise AI on AWS (https://aws.amazon.com/blogs/machine-learning/beyond-rag-task-aware-knowledge-compression-for-enterprise-ai-on-aws/)

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *