Pular para o conteúdo principal

AI ContextRetrievalChunker

Utilitário de divisão de texto em blocos (chunks) para recuperação de contexto em pipelines RAG (Retrieval-Augmented Generation).

Permite dividir documentos Markdown em blocos de tamanho controlado, com sobreposição configurável, preservando a estrutura de cabeçalhos e blocos de código para melhor qualidade de recuperação semântica.

Características principais:

  • Preserva a hierarquia de cabeçalhos (H1-H6)
  • Protege blocos de código contra quebras
  • Tamanho de chunk padrão: 512 caracteres
  • Sobreposição padrão: 50 caracteres
  • Quebras inteligentes em limites semânticos (cabeçalhos, parágrafos)
// Exemplo básico
const chunker = _ai.contextRetrievalChunker()
const chunks = chunker.markdown(documentoMD)

for (const chunk of chunks) {
_log.info(`Chunk ${chunk.get('index')}: ${chunk.get('heading')}`)
_log.info(`Texto: ${chunk.get('text')}`)
}


markdown


markdown(markdown: string) : Values

Descrição

Divide um documento Markdown em blocos de texto utilizando os valores predefinidos de tamanho de bloco (512 caracteres) e sobreposição (50 caracteres). Cada bloco preserva o cabeçalho Markdown mais próximo como contexto e respeita os limites de blocos de código.

Como Usar
const chunks = chunker.markdown('# Título\n\nConteúdo do documento...')

for (const chunk of chunks) {
_log.info(chunk.get('text'))
}
Atributos
NOMETIPODESCRIÇÃO
markdownstringTexto em formato Markdown a dividir em blocos.
Retorno

( Values )

Lista de blocos, cada um com os campos: index (posição na sequência), start (posição inicial no texto original), heading (cabeçalho Markdown mais próximo) e text (conteúdo do bloco, com cabeçalho de contexto prefixado se necessário).


markdown(markdown: string, tamanhodoBloco: int, sobreposicao: int) : Values

Descrição

Divide um documento Markdown em blocos de texto com tamanho de bloco e sobreposição configuráveis. Os cortes são feitos preferencialmente em cabeçalhos Markdown, parágrafos ou espaços, evitando sempre cortar dentro de blocos de código. Quando um bloco não começa por um cabeçalho, o cabeçalho mais próximo é automaticamente prefixado para preservar o contexto semântico.

Como Usar
// Blocos de 1024 caracteres com sobreposição de 100
const chunks = chunker.markdown(markdown, 1024, 100)

for (const chunk of chunks) {
_log.info('--- Chunk ' + chunk.get('index'))
_log.info('Heading: ' + chunk.get('heading'))
_log.info(chunk.get('text'))
}
Atributos
NOMETIPODESCRIÇÃO
markdownstringTexto em formato Markdown a dividir em blocos.
tamanhodoBlocointNúmero máximo de caracteres por bloco. Valor predefinido: 512.
sobreposicaointNúmero de caracteres de sobreposição entre blocos consecutivos, para preservar continuidade de contexto. Valor predefinido: 50.
Retorno

( Values )

Lista de blocos, cada um com os campos: index (posição na sequência), start (posição inicial no texto original), heading (cabeçalho Markdown mais próximo) e text (conteúdo do bloco, com cabeçalho de contexto prefixado se necessário).