Chunking
Introducción
Los documentos extensos no caben en un modelo de lenguaje. Por eso es necesario dividirlos en secciones más pequeñas antes de procesarlos. Este paso se llama Chunking. Un chunking bien realizado es uno de los mecanismos más importantes para mejorar la calidad de una pipeline RAG.
Chunking - En Pocas Palabras
Chunking significa descomponer un documento en secciones de una longitud determinada. Cada sección se transforma posteriormente en un vector de embedding y se almacena en la base de datos de vectores. La búsqueda no encuentra entonces el documento completo, sino la sección que coincide.
Lo fundamental es que las secciones tengan sentido en sí mismas. Un texto cortado a mitad de una oración produce resultados deficientes. Un buen chunk contiene una idea, una unidad de información o un párrafo que es comprensible por sí solo.
Términos y Componentes Importantes
| Término | Significado |
|---|---|
| Chunk | Sección de texto individual |
| Chunk Size | Tamaño máximo de un chunk en caracteres o tokens |
| Chunk Overlap | Número de caracteres o tokens que comparten dos chunks adyacentes |
| Token | Unidad de procesamiento del modelo de lenguaje |
| Semantic Chunking | División según significado en lugar de tamaño fijo |
Relevancia Práctica
¿Por qué es tan importante el chunking?
Un chunking deficiente conduce a respuestas deficientes. Si una sección termina a mitad del contexto, al modelo le faltan información importante. Si un chunk es demasiado largo, la búsqueda se pierde en pasajes genéricos. Si es demasiado corto, faltan las conexiones.
Un buen ejemplo es un contrato. Si un chunk termina al final del párrafo 2.1 y el párrafo 2.2 comienza en el siguiente, el modelo podría perder la conexión. Una superposición o una división por párrafos ayuda aquí.
Estrategias Comunes de Chunking
| Estrategia | Descripción | Cuándo es útil |
|---|---|---|
| Tamaño fijo | Cada chunk tiene una longitud específica | Primera versión rápida |
| Superposición | Los chunks se superponen en algunas oraciones | Preservar conexiones |
| Por párrafos | División según párrafos | Documentos estructurados |
| Semántico | División según límites de significado | Alta calidad, más esfuerzo |
| Recursivo | Comienza con unidades grandes, divide según sea necesario | Adaptación flexible |
Ejemplo: Python con LangChain
from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=500,
chunk_overlap=50,
separators=["\n\n", "\n", ". ", " ", ""]
)
chunks = text_splitter.split_text(document)
Este ejemplo divide un texto en secciones de aproximadamente 500 caracteres. Prefiere separar por párrafos, saltos de línea y oraciones. La superposición de 50 caracteres asegura que las conexiones no se pierdan en la transición entre chunks.
Selección del Tamaño
Un tamaño de chunk típico oscila entre 200 y 1.000 tokens. Los chunks pequeños son más precisos en la búsqueda, pero proporcionan menos contexto. Los chunks grandes ofrecen más contexto, pero pueden contener información irrelevante.
Para textos en español con palabras compuestas más largas, suelen funcionar bien entre 400 y 800 caracteres. Para documentación técnica o textos legales, los chunks estructurados por encabezados son mejores.
Consideraciones de Hardware, Costos y Seguridad
El chunking en sí consume pocos recursos. Modifica los requisitos de almacenamiento de la base de datos de vectores, ya que se guardan más chunks pequeños. El número de entradas aumenta, pero el tamaño de los embeddings por entrada permanece igual. Los costos son mínimos. Desde el punto de vista de la seguridad, todo es local mientras los embeddings y la base de datos permanezcan en tu máquina.
Más Información e Temas sobre IA
- Chunking divide documentos en secciones significativas.
- Las superposiciones preservan las conexiones en la transición entre chunks.
- El chunking estructurado por párrafos suele ser mejor que la división por longitud pura.
- El tamaño correcto del chunk depende del tipo de documento.
Más información sobre embeddings la encuentras en Embedding-Modelle y sobre bases de datos de vectores en Vektordatenbanken.
FAQ - Preguntas Típicas sobre Chunking
¿Cuál es el mejor tamaño de chunk?
No existe un tamaño universal mejor. Para textos en español, suelen funcionar bien entre 400 y 800 tokens. Es importante probar con tus propias preguntas.
¿Debería usar siempre superposición?
Sí, una pequeña superposición del 10 al 20 por ciento ayuda a no perder conexiones en la transición entre secciones.
¿Puedo crear chunks por encabezados?
Sí, suele ser mejor que la división por longitud pura. Las estructuras Markdown o HTML son ideales para esto.
¿Qué ocurre con chunks demasiado grandes?
La búsqueda podría encontrar secciones largas y genéricas. El modelo recibe demasiado contexto y las respuestas son menos precisas.
Herramientas y Recursos Adicionales
LangChain, LlamaIndex y unstructured ofrecen funciones potentes de chunking. Para casos simples, también funcionan bien scripts Python con expresiones regulares.
Fuentes
- LangChain Text Splitter
- LlamaIndex Chunking-Dokumentation
- Unstructured Library


