Skip to main content

chunkingman

Biblioteca en Python para segmentar textos con múltiples estrategias: por tokens, semántica, LLM y métodos híbridos.

PyPI version
Python
License

chunkingman facilita dividir textos largos en fragmentos semánticamente coherentes usando varias técnicas escalables.


Contenido


Instalación

pip install chunkingman

Recomendado usar un entorno virtual (venv, conda, etc.).


Requisitos

  • Python 3.12 o superior
  • Dependencias runtime (instaladas automáticamente): rapidfuzz, chromadb, tiktoken, sentence-transformers, numpy, backoff, tqdm, openai, anthropic, attrs

Requisitos adicionales según funciones usadas:

  • Embeddings o LLM OpenAI: exporta OPENAI_API_KEY
  • LLMs Anthropic: exporta ANTHROPIC_API_KEY

Configuración de credenciales

Puedes usar un archivo .env:

OPENAI_API_KEY=TU_CLAVE_OPENAI
ANTHROPIC_API_KEY=TU_CLAVE_ANTHROPIC

O exportarlas directamente en tu entorno:

export OPENAI_API_KEY="tu-clave"
export ANTHROPIC_API_KEY="tu-clave"

Si utilizas .env, asegúrate de cargarlo (por ejemplo, con python-dotenv) antes de usar la librería.


Ejemplos de uso

1. FixedTokenChunker

Corta los textos estrictamente según cantidad de tokens (útil para cumplir límites de contexto).

from chunkingman.fixed_token_chunker import FixedTokenChunker

text = "Esto es un texto largo..."
chunker = FixedTokenChunker(chunk_size=800, chunk_overlap=100)
chunks = chunker.split_text(text)

2. RecursiveTokenChunker

Usa divisores jerárquicos (párrafos → líneas → oraciones → palabras) para preservar coherencia.

from chunkingman.recursive_token_chunker import RecursiveTokenChunker

chunker = RecursiveTokenChunker(chunk_size=300, chunk_overlap=0)
chunks = chunker.split_text(text)

3. ClusterSemanticChunker

Convierten fragmentos en embeddings, calculan similitud y aplican DP con penalización optimizada.

from chunkingman.cluster_semantic_chunker import ClusterSemanticChunker
from chunkingman.utils import get_embedding_function

emb_fn = get_embedding_function(
    model_name="BAAI/bge-m3",  # puedes cambiar por gte-large, e5-large-v2, etc.
    device="cpu"               # o "cuda" si tienes GPU
)

chunker = ClusterSemanticChunker(
    embedding_function=emb_fn,
    max_chunk_size=800,
    min_chunk_size=140,
    lambda_penalty=5.0,
    similarity_band=200,
)

chunks = chunker.split_text(text)

4. KamradtModifiedChunker

Agrupa por semántica para alcanzar un tamaño medio de chunk especificado.

from chunkingman.kamradt_modified_chunker import KamradtModifiedChunker

chunker = KamradtModifiedChunker(avg_chunk_size=400, min_chunk_size=50)
chunks = chunker.split_text(text)

5. LLMSemanticChunker

Delega en un LLM (OpenAI / Anthropic) la sugerencia de cortes temáticos.

from chunkingman.llm_semantic_chunker import LLMSemanticChunker

chunker = LLMSemanticChunker(organisation="openai", model_name="gpt-4o")
chunks = chunker.split_text(text)

¿Cómo elegir la estrategia correcta?

Estrategia Cuándo usarla
FixedTokenChunker Necesitas límites de tokens estrictos.
RecursiveTokenChunker Quieres cortes naturales sin embeddings.
ClusterSemanticChunker Buscas cohesión semántica con embeddings.
KamradtModifiedChunker Prefieres chunks de tamaño medio optimizado.
LLMSemanticChunker Deseas cortes temáticos propuestos por un LLM.

Buenas prácticas

  • Cuenta tokens con tiktoken para garantizar validez frente a modelos LLM.
  • Usa rapidfuzz por rendimiento y compatibilidad API con fuzzywuzzy.
  • Carga tus credenciales desde entorno o .env (no hardcodeadas).
  • Usa tamaño de chunk acorde al modelo de embeddings o LLM que uses.

Roadmap

  • Benchmarks entre distintos chunkers.
  • Configuración de Trusted Publishers para publicación CI/CD.
  • Plugins de visualización e integración (CLI, exportación, metadatos, etc.).

Contribuir

¡Tu ayuda es bienvenida!

  1. Fork del repo
  2. Crea una rama (git checkout -b mi-feature)
  3. Añade tests y documentación
  4. Abre un pull request
git clone https://github.com/romanpert/chunkingman
cd chunkingman
pip install -e ".[dev]"
pytest -q

Licencia

Licenciado bajo Apache License 2.0 — consulta el archivo LICENSE para más información.

Release files for chunkingman 0.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for chunkingman 0.0.3
File Size Uploaded
chunkingman-0.0.3.tar.gz 21.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for chunkingman 0.0.3
File Interpreter ABI Platform
chunkingman-0.0.3-py3-none-any.whl Python 3 none any Details

Total release size:43.1 kB

Release files / chunkingman-0.0.3.tar.gz

Download URL chunkingman-0.0.3.tar.gz
Size 21.3 kB
Tags Source
SHA-256 checksum
How to use checksums
bb8dd2c9ddd9e61e91bea4708fea463d06b9c7db05f09d386e8c979ea2e42b12
BLAKE2b-256 checksum
How to use checksums
49510db3369ba19b87337ff70f27c941f7c3e4a9162be2f5d4d2200442e62923
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.10

Release files / chunkingman-0.0.3-py3-none-any.whl

Download URL chunkingman-0.0.3-py3-none-any.whl
Size 21.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
85ca0a369e5eb282609f93f4fc694035dfd1fd8256a6422d60ca0abfb74e99f6
BLAKE2b-256 checksum
How to use checksums
0760f6c2570d73fcdd063c97824df3f0b4de586a325f14615c45918b0054b3e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.10

Release history Release notifications | RSS feed

This release

0.0.3 This release

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page