Files
AI-Frente-Corretora-Assistente/docs/bedrock-knowledge-base-guide.md

8.2 KiB

Guia de Adicao de Documentos ao Bedrock Knowledge Base

Este guia explica como adicionar documentos a uma Knowledge Base do Amazon Bedrock utilizando S3 como fonte de dados com armazenamento vetorial.

Indice

Visao Geral

O Amazon Bedrock Knowledge Bases permite criar aplicacoes RAG (Retrieval-Augmented Generation) conectando modelos de fundacao a fontes de dados da sua organizacao. O fluxo basico e:

┌─────────────────┐     ┌──────────────────┐     ┌─────────────────┐
│  Documentos S3  │────▶│   Processamento  │────▶│  Vector Store   │
└─────────────────┘     │   (Chunking +    │     │   (Embeddings)  │
                        │    Embedding)    │     └─────────────────┘
                        └──────────────────┘              │
                                                          ▼
                                                 ┌─────────────────┐
                                                 │  Knowledge Base │
                                                 │    Retriever    │
                                                 └─────────────────┘

Quando voce adiciona documentos ao bucket S3 e sincroniza a Knowledge Base:

  1. Os documentos sao divididos em chunks (pedacos menores)
  2. Cada chunk e convertido em um embedding vetorial
  3. Os vetores sao armazenados para busca semantica

Pre-requisitos

Recursos AWS Necessarios

  1. Bucket S3 - Para armazenar os documentos fonte
  2. Knowledge Base do Bedrock - Ja configurada com data source S3
  3. Permissoes IAM - Acesso ao S3 e Bedrock

Permissoes IAM Minimas

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::SEU-BUCKET-NAME",
                "arn:aws:s3:::SEU-BUCKET-NAME/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "bedrock:StartIngestionJob",
                "bedrock:GetIngestionJob",
                "bedrock:ListIngestionJobs"
            ],
            "Resource": "*"
        }
    ]
}

Estrutura do S3

Organizacao Recomendada

Organize os documentos de forma logica no bucket S3:

s3://seu-bucket-knowledge-base/
├── produtos/
│   ├── comm-pix/
│   │   ├── manual-usuario.pdf
│   │   ├── faq.md
│   │   └── especificacoes-tecnicas.docx
│   └── outros-produtos/
│       └── ...
├── suporte/
│   ├── troubleshooting.md
│   └── procedimentos-operacionais.pdf
└── regulatorio/
    ├── termos-de-uso.pdf
    └── politica-privacidade.pdf

Metadados (Opcional)

Voce pode adicionar metadados aos documentos criando um arquivo .metadata.json no mesmo diretorio:

{
    "metadataAttributes": {
        "categoria": "produtos",
        "produto": "comm-pix",
        "versao": "2.0",
        "data_atualizacao": "2024-01-15"
    }
}

Formatos de Documentos Suportados

O Bedrock Knowledge Base suporta os seguintes formatos:

Formato Extensao Observacoes
PDF .pdf Texto e imagens (OCR disponivel)
Texto Plano .txt Encoding UTF-8 recomendado
Markdown .md Preserva estrutura de titulos
HTML .html Tags sao processadas
Microsoft Word .docx Versoes recentes
CSV .csv Cada linha como chunk separado
Excel .xlsx Planilhas convertidas para texto

Limitacoes

  • Tamanho maximo por arquivo: 50 MB
  • Numero maximo de arquivos por data source: 10.000
  • Caracteres maximos por documento: 20.000 (para chunking padrao)

Adicionando Documentos

Via AWS CLI

# Upload de um unico arquivo
aws s3 cp documento.pdf s3://seu-bucket-knowledge-base/produtos/

# Upload de um diretorio inteiro
aws s3 cp ./docs/ s3://seu-bucket-knowledge-base/produtos/ --recursive

# Upload com exclusao de arquivos desnecessarios
aws s3 sync ./docs/ s3://seu-bucket-knowledge-base/produtos/ \
    --exclude "*.tmp" \
    --exclude ".git/*"

Sincronizacao da Knowledge Base

Apos adicionar documentos ao S3, e necessario sincronizar (ingest) a Knowledge Base para processar os novos arquivos.

Via Console AWS

  1. Acesse o Amazon Bedrock no console AWS
  2. Navegue ate Knowledge bases no menu lateral
  3. Selecione sua Knowledge Base
  4. Na aba Data source, clique em Sync
  5. Aguarde o processamento completar

Via AWS CLI

# Iniciar sincronizacao
aws bedrock-agent start-ingestion-job \
    --knowledge-base-id SEU_KB_ID \
    --data-source-id SEU_DS_ID

# Verificar status do job
aws bedrock-agent get-ingestion-job \
    --knowledge-base-id SEU_KB_ID \
    --data-source-id SEU_DS_ID \
    --ingestion-job-id JOB_ID

Boas Praticas

1. Organizacao de Documentos

# BOM - Estrutura clara e organizada
produtos/
├── comm-pix/
│   ├── v2.0/
│   │   └── manual.pdf
│   └── v1.0/
│       └── manual.pdf

# EVITAR - Arquivos soltos e desorganizados
manual_v1.pdf
manual_v2.pdf
manual_novo_final_v3.pdf

2. Nomenclatura de Arquivos

# BOM - Nomes descritivos
manual-usuario-comm-pix-v2.pdf
faq-integracao-api.md
troubleshooting-erros-comuns.pdf

# EVITAR - Nomes vagos
doc1.pdf
novo.pdf
final.pdf

3. Atualizacao de Documentos

Ao atualizar um documento existente:

# Sobrescrever o arquivo existente (mesmo nome/caminho)
# O Bedrock detecta a mudanca e reprocessa na proxima sincronizacao

aws s3 cp manual-atualizado.pdf s3://bucket/produtos/manual.pdf

# Sincronizar para aplicar mudancas
aws bedrock-agent start-ingestion-job ...

4. Remocao de Documentos

# Remover do S3
aws s3 rm s3://bucket/produtos/documento-obsoleto.pdf

# Sincronizar para remover do indice
aws bedrock-agent start-ingestion-job ...

5. Versionamento

Considere usar versionamento de bucket S3 para manter historico:

# Habilitar versionamento
aws s3api put-bucket-versioning \
    --bucket seu-bucket-knowledge-base \
    --versioning-configuration Status=Enabled

Troubleshooting

Erro: "Access Denied" no Upload

Causa: Permissoes IAM insuficientes.

Solucao: Verifique se a role/usuario tem permissoes s3:PutObject no bucket.

Documentos Nao Aparecem nas Buscas

Causas possiveis:

  1. Sincronizacao nao foi executada
  2. Formato do arquivo nao suportado
  3. Arquivo muito grande (>50MB)

Solucao:

# Verificar status do ultimo job
aws bedrock-agent list-ingestion-jobs \
    --knowledge-base-id PETAZDUOFZ \
    --data-source-id SEU_DS_ID

Conteudo Recuperado Incompleto

Causa: Chunking pode ter dividido informacoes importantes.

Solucao: Considere ajustar a estrategia de chunking na configuracao da Knowledge Base (via console ou API).

Latencia Alta nas Buscas

Possiveis solucoes:

  1. Reduzir numero de documentos desnecessarios
  2. Otimizar tamanho dos chunks
  3. Usar filtros de metadados para buscas mais direcionadas

Referencias