Skip to content
BotServBotServ
ChunkingRAGBase de datos vectorialDivisión de textoEmbeddingsIA local

Chunking

Chunking para RAG: divide textos significativamente, aprovecha superposiciones y mejora calidad.

S

schutzgeist

3 min read
Chunking

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érminoSignificado
ChunkSección de texto individual
Chunk SizeTamaño máximo de un chunk en caracteres o tokens
Chunk OverlapNúmero de caracteres o tokens que comparten dos chunks adyacentes
TokenUnidad de procesamiento del modelo de lenguaje
Semantic ChunkingDivisió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

EstrategiaDescripciónCuándo es útil
Tamaño fijoCada chunk tiene una longitud específicaPrimera versión rápida
SuperposiciónLos chunks se superponen en algunas oracionesPreservar conexiones
Por párrafosDivisión según párrafosDocumentos estructurados
SemánticoDivisión según límites de significadoAlta calidad, más esfuerzo
RecursivoComienza con unidades grandes, divide según sea necesarioAdaptació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
Volver al blog
Share:

Nächster Artikel in IA Local

Weiterlesen
Fundamentos de RAG

Entradas relacionadas