Carregando
0x10Lição 2 de 11

Prepare e divida os documentos-fonte em chunks

Limpe os documentos, divida-os em chunks recuperáveis e guarde o contexto e os metadados de que cada chunk precisa.

22 min Questionário com 7 perguntas 2 exercícios de código
Ao final desta lição, você saberá
  • Comparar a divisão em chunks fixa, por frases e consciente da estrutura
  • Usar sobreposição e tamanho para manter as respostas inteiras
  • Anexar a cada chunk metadados de fonte, de cabeçalho e de permissão

A busca devolve chunks (trechos), não documentos inteiros, então a forma como você corta os documentos decide o que pode ser encontrado. Antes de dividir, extraia um texto limpo: tire menus de navegação e textos repetitivos, mantenha cabeçalhos e listas, transforme tabelas em linhas legíveis e lembre-se de onde veio cada pedaço.

Depois escolha uma estratégia de divisão:

  • Janelas de tamanho fixo de N palavras ou tokens - simples, mas pode cortar frases ao meio.
  • Agrupamento por frases ou parágrafos - mantém juntas as unidades naturais, com tamanhos desiguais.
  • Consciente da estrutura - divide pelos cabeçalhos e seções, guardando o caminho de cabeçalhos em cada chunk.

A sobreposição (overlap) repete algumas palavras entre chunks vizinhos para que um fato que atravessa uma fronteira ainda apareça inteiro em algum lugar - ao custo de um índice maior.

Experimente

Até 15 XP

Divida a política de devolução em chunks

Experimente cada estratégia e tamanho. O seu objetivo: garantir que a frase que responde à pergunta de teste caia inteira dentro de um chunk. Repare como janelas fixas sem sobreposição podem cortá-la em duas.

6 chunks · cerca de 17 palavras cada

  1. #1Política de devolução. Queremos que você adore o que comprou. A maioria dos itens pode ser devolvida em até 30
  2. #2dias após a entrega, com reembolso integral. Os itens precisam estar sem uso e na embalagem original. Os eletrônicos são
  3. #3diferentes. Eletrônicos abertos só podem ser devolvidos em até 14 dias, e é cobrada uma taxa de reposição de 10
  4. #4por cento. Eletrônicos fechados seguem o prazo normal de 30 dias. Itens em liquidação são venda final e não podem
  5. #5ser devolvidos. Vale-presentes também não podem ser devolvidos. Os reembolsos voltam para a forma de pagamento original em até 5
  6. #6dias úteis.

Pergunta de teste: “Há alguma taxa para devolver eletrônicos abertos?”

Frase da resposta: “Eletrônicos abertos só podem ser devolvidos em até 14 dias, e é cobrada uma taxa de reposição de 10 por cento.”

A resposta foi dividida entre dois chunks, e nenhum deles a contém por inteiro. Tente frases inteiras, outro tamanho ou alguma sobreposição.

Os chunks precisam de contexto

Um chunk que diz “Também não podem ser devolvidos.” é inútil sozinho - o que não pode ser devolvido? Duas correções:

  • Guarde o caminho de cabeçalhos (Returns policy > Sale items) e o título do documento em cada chunk, e inclua isso no que você indexa.
  • A recuperação contextual (contextual retrieval, Anthropic, 2024) usa um modelo para escrever um resumo de uma linha sobre onde cada chunk fica no documento, e o coloca antes do chunk na indexação. Combinada com a busca por palavras-chave, ela reduziu as falhas de recuperação em 49% nos testes deles.

Guarde também metadados: URL da fonte, seção, data, idioma e - o mais importante - quem pode ver. Você vai precisar disso para citar, filtrar e auditar.

chunk_record.py
1chunk = {
2    "id": "returns#3",
3    "text": "Sale items are final sale and cannot be returned.",
4    "heading_path": ["Returns policy", "Sale items"],
5    "source": "https://help.example.com/returns",
6    "allowed_groups": ["customers", "support"],
7}
8print(" > ".join(chunk["heading_path"]) + ": " + chunk["text"])
Saída
Returns policy > Sale items: Sale items are final sale and cannot be returned.

Principais conclusões

  • Limpe o texto primeiro; mantenha a estrutura, como cabeçalhos, listas e tabelas.

  • Divida de forma que as respostas fiquem inteiras: divisões por frases ou conscientes da estrutura, ou sobreposição.

  • Guarde cada chunk com a fonte, o caminho de cabeçalhos e as permissões.

Quiz da aula

7 perguntas · aprovação com 5 acertos · até 50 XP

Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.

Pratique: escreva código em Python

Escreva código Python no editor e execute os testes com exemplos. O Python roda localmente no navegador usando WebAssembly.

Exercício 1

Chunks de tamanho fixo com sobreposição

+25 XP

A primeira linha é size overlap; a segunda é um texto. Divida-o em palavras e imprima janelas de size palavras, cada uma começando size - overlap palavras depois da anterior, como N: words. Pare depois da janela que chegar à última palavra.

  • Tamanho 5, sobreposição 2
main.py
Carregando editor…

O Python é executado em um ambiente isolado no navegador, com limite de 60 segundos. O runtime é carregado pelo CDN do Pyodide; seu código permanece neste navegador.

Exercício 2

Chunks conscientes da estrutura, com caminhos de cabeçalhos

+25 XP

A entrada é um documento Markdown. Linhas que começam com # abrem uma seção de nível superior, e ## , uma subseção. Faça um chunk por seção a partir das linhas que não são cabeçalho (unidas por espaços), pulando as seções sem texto. Imprima cada um como Heading > Subheading: text (só Heading: text para texto de nível superior).

  • Um artigo de ajuda
main.py
Carregando editor…

O Python é executado em um ambiente isolado no navegador, com limite de 60 segundos. O runtime é carregado pelo CDN do Pyodide; seu código permanece neste navegador.

Dúvidas sobre esta lição

Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.

Carregando publicações…