---
name: split_text_into_chunks
kind: function
lang: py
domain: core
version: "1.0.0"
purity: pure
signature: "def split_text_into_chunks(text: str, chunk_size: int = 500, overlap: int = 50) -> list[str]"
description: "Divide texto en chunks de tamaño fijo con overlap, intentando cortar en límites de oración para no romper frases a mitad. Soporta separadores CJK (。！？) y occidentales (. ! ?)."
tags: [text, chunking, nlp, split, overlap, sentence, boundary, rag]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: ""
imports: []
params:
  - name: text
    desc: "Texto a dividir en chunks"
  - name: chunk_size
    desc: "Tamaño objetivo de cada chunk en caracteres"
  - name: overlap
    desc: "Número de caracteres a solapar entre chunks consecutivos"
output: "Lista de strings donde cada uno es un chunk con solapamiento"
tested: true
tests: ["texto corto cabe en 1 chunk", "texto largo con oraciones corta en punto", "texto cjk con separador ideografico", "texto sin separadores corta en chunk size exacto", "overlap funciona", "texto vacio retorna lista vacia"]
test_file_path: "python/functions/core/split_text_into_chunks_test.py"
file_path: "python/functions/core/split_text_into_chunks.py"
---

## Ejemplo

```python
text = "First sentence is here. Second sentence follows. Third ends it."
chunks = split_text_into_chunks(text, chunk_size=40, overlap=10)
# ['First sentence is here.', 'is here. Second sentence follows.', ...]

# Texto vacío
split_text_into_chunks("")  # []

# Texto corto (cabe en un chunk)
split_text_into_chunks("Hello world.", chunk_size=500)  # ['Hello world.']
```

## Notas

Algoritmo de sliding window con detección de límites de oración. Los separadores se evalúan en orden de prioridad:
`。`, `！`, `？`, `.\n`, `!\n`, `?\n`, `\n\n`, `. `, `! `, `? `

Un separador solo se acepta si el corte resultante está después del 30% del chunk (evita chunks muy cortos). Si no se encuentra ningún separador válido, el texto se corta en `chunk_size` exacto.

El siguiente chunk empieza en `end - overlap`, garantizando solapamiento entre chunks consecutivos. Esto es útil para RAG (Retrieval-Augmented Generation) donde el contexto de límite de chunk puede ser crítico.

Diferencia con `page_list_to_groups_py_core`: ese agrupa páginas por tokens con overlap configurable entre grupos de páginas. Este divide texto plano por caracteres con detección de oraciones.
