Contextual Text Splitter
El Contextual Text Splitter es una herramienta diseñada para hacer que tu texto sea más fácil de entender y buscar para el sistema. Imagina que tienes un documento muy largo; en lugar de buscar una palabra específica en todo el texto de golpe, este componente corta el texto en trozos más pequeños (como capítulos o párrafos) y escribe un breve resumen para cada uno de ellos.
Esto es muy útil porque, cuando luego busques información, el sistema no solo buscará en el texto del trozo, sino también en ese resumen inteligente, lo que ayuda a encontrar respuestas más precisas y relacionadas.
¿Cómo funciona?
El proceso funciona en dos pasos principales:
- División del texto: El componente toma tu texto y lo corta en trozos del tamaño que tú quieras.
- Generación de contexto: Para cada trozo que crea, el sistema envía la información a un Modelo de Lenguaje (IA) para que lea el documento completo y escriba un pequeño resumen. Ese resumen es el “contexto” que hará que el trozo sea mucho más útil para futuras búsquedas.
Conexión y Credenciales
Este componente no requiere configurar credenciales directamente en este nodo. Sin embargo, sí requiere que conectes un Language Model (Modelo de Lenguaje). Asegúrate de tener configurado y funcionando un modelo de IA en tu flujo de trabajo antes de conectarlo aquí.
Entradas
Los siguientes campos están disponibles para configurar este componente. Cada campo puede estar visible en diferentes operaciones:
- Data Inputs: Es la lista de textos que quieres dividir. Aquí conectas los documentos o textos que contienen la información que necesitas procesar.
- Language Model: Es el “cerebro” que va a escribir los resúmenes. Debes conectar aquí tu modelo de IA preferido para que pueda generar el contexto de cada fragmento.
- Chunk Size: Define el tamaño máximo de cada trozo de texto (medido en caracteres). El valor predeterminado es 1000. Si pones un número muy pequeño, tendrás muchos trozos; si pones uno muy grande, los trozos serán más largos.
- Chunk Overlap: Indica cuántos caracteres se deben repetir entre un trozo y el siguiente para que no se pierda la continuidad de la lectura.
- Max Sentence Length: Establece un límite para la longitud de las oraciones antes de forzar un corte, útil si tienes frases muy largas.
- Preserve Paragraphs: Al activar esta opción, el sistema intentará no cortar los textos en medio de un párrafo, respetando los bloques de texto ya existentes.
- Separator: Es el carácter utilizado para dividir el texto. Por defecto, usa un doble salto de línea (cuando presionas “Enter” dos veces), lo que es ideal para separar párrafos.
Salidas
El componente devuelve una lista de datos enriquecidos. Para cada trozo de texto original, recibirás una estructura que incluye:
- Chunk: El fragmento de texto original tal cual.
- Context: El resumen o contexto inteligente generado por la IA.
- Text: Una versión combinada que une el contexto y el fragmento original. Este campo es especialmente útil para alimentar bases de datos de búsqueda, ya que le da al sistema más información para entender de qué trata ese texto.
Ejemplo de Respuesta JSON
Cuando el componente funciona correctamente, el resultado para cada fragmento se ve aproximadamente así: json { “chunk”: “Este es el texto original cortado en un fragmento más pequeño…”, “context”: “Resumen generado por la IA que explica de qué trata este fragmento dentro del documento entero…”, “text”: “Resumen generado por la IA… \n\n Este es el texto original cortado en un fragmento más pequeño…” }
Conectividad
Este componente es una pieza clave en la preparación de datos. Generalmente, se conecta después de componentes que traen textos (como un “Loader” de archivos o un componente de “Retrieval”).
La salida (Chunks) se conecta comúnmente a:
- Componentes de Indexación: Para guardar el texto y sus resúmenes en una base de datos.
- Componentes de Búsqueda (Vector Stores): Para que la IA pueda buscar en el “texto combinado” que incluye el contexto inteligente.
- Otros procesadores de texto: Que necesiten datos más pequeños y organizados para generar respuestas.
Ejemplo de Uso
Imagina que tienes un manual de empresa muy largo y quieres que tu asistente de IA pueda responder preguntas sobre la política de vacaciones.
- Conectas el manual al campo Data Inputs.
- Conectas tu modelo de IA al campo Language Model.
- Ajustas el Chunk Size para que los trozos no sean demasiado largos (por ejemplo, 1000 caracteres).
- Conectas la salida a tu base de datos o al asistente.
Ahora, cuando un usuario pregunte “¿Cuáles son las vacaciones?”, el sistema buscará en los resúmenes (contextos) generados, encontrando probablemente una respuesta mucho más precisa que si hubiera buscado en el texto gigante sin dividir.
Componentes Relacionados
- Recursive Text Splitter - Un método básico para dividir texto sin añadir contextos inteligentes, útil cuando no se necesita IA.
- Vector Store - El lugar común donde se guarda la información estructurada y enriquecida que sale de este componente.
- Loaders - Componentes previos que cargan los documentos (PDF, Word, TXT) que luego este componente dividirá.
Notas Importantes
🔒 Sensitive data is sent to the LLM Any text you input is passed to the connected language model for context generation. If the LLM is hosted externally, ensure it complies with your privacy requirements.
⚠️ Chunk overlap parameter is ignored The component does not use the ‘Chunk Overlap’ setting. All chunks are created without any overlapping text, which may affect context continuity if you rely on overlap.
⚠️ Advanced split options not implemented Options such as ‘Split Method’, ‘Preserve Paragraphs’, and ‘Max Sentence Length’ are present in the UI but have no effect on how the text is split. The component always splits on the chosen separator.
📋 LangFlow workflow must support async execution This component performs asynchronous calls to the LLM. It will only work within a LangFlow workflow that is configured to run async functions.
📋 Dependencies on LangChain and LangFlow The component uses LangChain’s PromptTemplate and LangFlow’s custom component framework. Ensure these packages are installed in your environment.
⚠️ Component marked as in development The component is flagged as ‘is_development = True’, meaning it may contain bugs or incomplete features. Use it with caution in production workflows.
⚙️ Separator defaults to double newline The default separator is a blank line. If your source text uses single newlines to separate paragraphs, the splitter may produce unexpectedly large chunks.
⚙️ Set chunk size relative to model limits Choose a chunk size that balances context depth with the token limits of your language model. Very large chunks may exceed model capacity, while very small chunks might lose meaningful context.
💡 Provide a functioning language model The component relies on a language model to generate contextual summaries. If no LLM or an unsupported LLM is connected, the context field will contain an error message.
Consejos y Mejores Prácticas
- Prueba con textos cortos primero: Antes de procesar documentos muy largos, prueba el componente con un párrafo para ver cómo genera el contexto.
- Revisa los límites de tokens: Si tu modelo de IA tiene un límite estricto de caracteres, asegúrate de que el Chunk Size no sea demasiado grande, o el proceso podría fallar.
- Verifica la calidad del contexto: Asegúrate de que el resumen generado (el “context”) tenga sentido. Si ves errores, revisa que el modelo de IA conectado esté funcionando bien.
- Cuidado con los datos sensibles: Recuerda que el texto se envía a la IA para generar el resumen. Si tus datos son confidenciales, usa modelos locales o asegurados.
Consideraciones de Seguridad
Ten en cuenta que este componente envía el texto de tus documentos a un modelo de lenguaje externo (si usas un LLM de la nube) para generar los resúmenes. Asegúrate de cumplir con las políticas de privacidad de tu empresa y verificar que el modelo de IA seleccionado tenga los permisos adecuados para procesar ese tipo de información.