← VOLVER AL BLOG

Chonkie y Docling: dos enfoques complementarios para procesar documentos en pipelines RAG

Chonkie y Docling: dos enfoques complementarios para procesar documentos en pipelines RAG

En el mundo del orden y la recuperación inteligente de textos (por ejemplo, en arquitecturas RAG, retrieval-augmented generation), uno de los retos fundamentales es preparar los documentos para que sean “digeribles” por los componentes de recuperación y generación. Aquí entra en juego el chunking, es decir, fragmentar el texto en pedazos coherentes, pero también la correcta interpretación del documento en sí (estructura, tablas, diseño, etc.).

Dos herramientas recientes destacan por sus enfoques distintos, pero potencialmente complementarios:

A continuación exploramos cómo funcionan, sus diferencias clave y cómo combinarlas para construir pipelines RAG más potentes.


Chonkie: el hipopótamo ligero que trocea tus textos con elegancia

“CHONK your texts with Chonkie” es el lema simpático de esta librería, que pretende ser “no-nonsense” (sin florituras inútiles) y ultra-ligera. 👉 https://github.com/chonkie-inc/chonkie

¿Por qué existe Chonkie?

En el desarrollo de sistemas RAG o motores de búsqueda semántica, suele repetirse un mismo problema: la fragmentación del texto. Dividir documentos grandes en trozos coherentes sin perder contexto es un equilibrio delicado.

Muchas librerías ofrecen soluciones, pero a menudo incluyen dependencias innecesarias o un tamaño excesivo. Chonkie se centra solo en lo esencial: chunking eficiente, refinamiento y exportación modular.

En sus benchmarks propios, indican que su instalación base ocupa unos 15 MB, frente a los 80–170 MB de librerías alternativas, y que su chunking por tokens puede ser hasta 33 × más rápido.


Características principales


Ejemplo básico

from chonkie import TokenChunker

chunker = TokenChunker()
chunks = chunker("Este es un texto de ejemplo que quiero fragmentar en pedazos útiles.")
for c in chunks:
    print(c.text, c.token_count)

Ejemplo de pipeline más complejo:

    from chonkie import Pipeline

    pipe = (
        Pipeline()
        .chunk_with("recursive", tokenizer="gpt2", chunk_size=2048, recipe="markdown")
        .chunk_with("semantic", chunk_size=512)
        .refine_with("overlap", context_size=128)
        .refine_with("embeddings", embedding_model="sentence-transformers/all-MiniLM-L6-v2")
    )

    doc = pipe.run(texts="Tu texto largo aquí...")
    for ch in doc.chunks:
        print(ch.text)

Este sistema modular permite personalizar cada paso según las necesidades del proyecto.


Limitaciones actuales


Docling: comprensión estructural profunda de documentos

“From document chaos to structured knowledge” 👉 https://github.com/docling-project/docling

¿Qué es Docling?

Desarrollada por el equipo Deep Search de IBM, Docling es una herramienta open source centrada en convertir documentos complejos (PDF, DOCX, PPTX, HTML, imágenes, etc.) en una representación estructurada lista para IA.

Su meta no es solo extraer texto, sino entender la estructura visual y semántica del documento: tablas, encabezados, columnas, jerarquía, imágenes, etc.


Capacidades principales

Ejemplo de uso con LangChain:

    from langchain_community.document_loaders import DoclingLoader

    loader = DoclingLoader(file_path="documento.pdf", output_format="MARKDOWN")
    docs = loader.load()

Casos de uso

⚖ Comparativa: Chonkie vs Docling

AspectoChonkieDocling
PropósitoFragmentar texto para pipelines RAGConvertir documentos complejos en texto estructurado
Nivel de entradaTexto plano (ya preprocesado)Formatos crudos (PDF, DOCX, imágenes, etc.)
Conciencia de estructuraNo analiza diseño o layoutComprende tablas, columnas, jerarquía, layout
ChunkingMúltiples estrategias (tokens, oraciones, semántico)Dispone de un módulo básico, pero su foco es estructural
RendimientoMuy rápido y ligeroMás pesado debido al uso de modelos de visión / OCR
Integración IA / RAGNativa con bases vectoriales y embeddingsCompatible con LangChain y otros loaders
MantenimientoProyecto joven con comunidad emergenteRespaldado por IBM, documentación y publicación académica
Uso idealProcesar texto limpio y fragmentarlo óptimamenteIngesta y estructuración previa de documentos complejos

Cómo combinarlas para maximizar resultados

En realidad, Chonkie y Docling no son competidores, sino aliados naturales.

Una estrategia híbrida ideal podría ser:

  1. Usar Docling para convertir PDFs, DOCX o escaneos en una representación estructurada (DoclingDocument).
  2. Extraer los textos de secciones o párrafos relevantes.
  3. Aplicar Chonkie sobre esos fragmentos para optimizar el chunking (por tokens, semántico o recursivo).
  4. Indexar los chunks resultantes en una base vectorial para búsqueda o recuperación aumentada.
    from docling import DocumentConverter
    from chonkie import TextChunker
    from langchain_community.vectorstores import FAISS
    from chonkie import OpenAIEmbeddings

    # 1. Convertir un PDF a estructura con Docling
    converter = DocumentConverter()
    doc = converter.convert("informe.pdf")
    docling_doc = doc.to_docling_document()

    # 2. Extraer secciones relevantes (por ejemplo, solo el cuerpo del texto)
    textos_relevantes = [section.text for section in docling_doc.sections if section.title != "Anexos"]

    # 3. Aplicar Chonkie sobre los fragmentos para un chunking semántico
    chunker = TextChunker(mode="semantic", chunk_size=512)
    chunks = []
    for texto in textos_relevantes:
        chunks.extend(chunker.chunk(texto))

    # 4. Indexar los chunks en una base vectorial para recuperación aumentada
    embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
    vector_store = FAISS.from_texts(chunks, embedding=embeddings)

    # 5. Ejemplo de búsqueda
    query = "principales conclusiones del informe"
    results = vector_store.similarity_search(query, k=3)

    for r in results:
        print(r.page_content)

Qué consigue esta combinación:

Así obtienes lo mejor de ambos mundos: comprensión profunda de estructura documental y fragmentación eficiente optimizada para modelos de lenguaje.


Conclusión

Combinarlas permite construir pipelines RAG más precisas, rápidas y robustas, especialmente cuando se trabaja con documentos complejos y multiformato. Si quieres profundizar más sobre Docling tengo este artículo donde lo explico en detalle o también el propio artículo de Chonkie.

Consejo: si estás construyendo tu propio sistema RAG, prueba usar Docling para ingestión y Chonkie para chunking. Tu modelo te lo agradecerá.