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.
- 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 XPDivida 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
- #1Política de devolução. Queremos que você adore o que comprou. A maioria dos itens pode ser devolvida em até 30
- #2dias após a entrega, com reembolso integral. Os itens precisam estar sem uso e na embalagem original. Os eletrônicos são
- #3diferentes. Eletrônicos abertos só podem ser devolvidos em até 14 dias, e é cobrada uma taxa de reposição de 10
- #4por cento. Eletrônicos fechados seguem o prazo normal de 30 dias. Itens em liquidação são venda final e não podem
- #5ser devolvidos. Vale-presentes também não podem ser devolvidos. Os reembolsos voltam para a forma de pagamento original em até 5
- #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.”
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.
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"])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.
Chunks de tamanho fixo com sobreposição
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
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.
Chunks conscientes da estrutura, com caminhos de cabeçalhos
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
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…