Semantic Text Splitter
El Semantic Text Splitter es una herramienta que toma textos largos y los divide en partes más pequeñas, manteniendo el significado y la coherencia de cada sección. Esto facilita que otras partes del sistema de Nappai, como los modelos de IA o los motores de búsqueda, trabajen con fragmentos manejables y relevantes.
¿Cómo funciona?
El componente recibe una lista de objetos Data que contienen el texto y su metadato. Utiliza un modelo de Embeddings para convertir cada oración en un vector numérico que representa su significado. Luego, compara estos vectores para encontrar puntos donde el contenido cambia de tema o tono. En esos puntos, crea un “breakpoint” y divide el texto en chunks (trozos) que son semánticamente coherentes. Los parámetros de configuración (tipo y cantidad de breakpoints, número de chunks, etc.) permiten ajustar la granularidad según la necesidad del flujo de trabajo.
Entradas
Data Inputs
Una lista de objetos Data que contienen el texto y su metadato a dividir.
El componente necesita al menos un objeto Data para funcionar.
Embeddings
El modelo de embeddings que se usará para medir la similitud semántica entre oraciones.
Este input es obligatorio.
Breakpoint Threshold Amount
Cantidad numérica que define el umbral de similitud para crear un breakpoint.
Un valor más bajo genera más trozos.
Breakpoint Threshold Type
Método para determinar los breakpoints.
Opciones:
percentile
standard_deviation
interquartile
El valor por defecto espercentile
.
Buffer Size
Tamaño del buffer que se mantiene al procesar el texto.
Este parámetro es avanzado y suele dejarse en 0.
Number of Chunks
Número de trozos en los que se dividirá el texto.
El valor por defecto es 5.
Sentence Split Regex
Expresión regular opcional para dividir el texto en oraciones antes de aplicar los embeddings.
Si se deja vacío, se usa la configuración por defecto.
Salidas
Data
Devuelve una lista de objetos Data que contienen los fragmentos resultantes.
Cada fragmento conserva el metadato original y se etiqueta con su posición dentro del texto original.
Ejemplo de Uso
- Conecta un componente de carga de documentos que envíe un objeto Data con el texto completo.
- Añade un componente de embeddings (por ejemplo, OpenAI Embeddings) y conéctalo al input Embeddings.
- Configura Number of Chunks a 10 y deja el resto de parámetros con sus valores por defecto.
- Ejecuta el flujo.
- El Semantic Text Splitter devolverá 10 fragmentos coherentes que puedes pasar a un motor de búsqueda o a un modelo de generación de texto.
Componentes Relacionados
- Text Splitter – Divide textos por longitud o delimitadores simples.
- Embeddings – Genera vectores semánticos que el splitter necesita.
- Document Loader – Carga documentos desde archivos o bases de datos.
- Search Engine – Busca dentro de los fragmentos generados.
Consejos y Mejores Prácticas
- Usa embeddings de alta calidad: Modelos como OpenAI o Hugging Face suelen producir mejores resultados.
- Ajusta el número de chunks según la longitud del documento: textos muy largos pueden necesitar más trozos.
- Prueba diferentes tipos de breakpoint (
percentile
,standard_deviation
,interquartile
) para ver cuál mantiene mejor el contexto. - Evita usar expresiones regulares complejas a menos que el texto tenga un formato muy específico.
- Revisa los metadatos: asegúrate de que cada fragmento conserve la información necesaria (autor, fecha, etc.).
Consideraciones de Seguridad
- Protege las credenciales de los modelos de embeddings: si usas APIs externas, guarda las claves en variables de entorno o en el gestor de secretos de Nappai.
- Controla el tamaño de los datos: evita enviar textos extremadamente grandes que puedan exceder los límites de la API de embeddings.
- Valida los datos de entrada: asegúrate de que los objetos Data no contengan información sensible sin cifrar.
- Monitorea el uso: registra cuántos fragmentos se generan para evitar sobrecargar los recursos de procesamiento.