Descripción general
Los separadores de texto son un componente crucial en la construcción de aplicaciones de grandes modelos de lenguaje (LLM). Su función principal es dividir textos largos en múltiples segmentos más cortos, que facilita tareas posteriores como incrustaciones de texto, generación aumentada de recuperación (RAG), y sistemas de respuesta a preguntas.
En LLMs, la división de texto se realiza por varias razones principales:
- Optimizando la eficiencia y la precisión: descomponiendo grandes bloques de texto en segmentos más pequeños, la relevancia y precisión de las incrustaciones producidas por el LLM pueden ser optimizadas. Chunking ayuda a asegurar que el contenido incrustado contenga un mínimo de ruido manteniendo la relevancia semántica. Por ejemplo, en la búsqueda semántica, al indexar un cuerpo de documentos, cada documento contiene información valiosa sobre temas específicos. Aplicar una estrategia efectiva de fragmentación garantiza que los resultados de búsqueda capturen con precisión la esencia de la consulta de un usuario.
- Limitando el tamaño de la ventana de contexto: cuando se usan modelos como GPT-4, hay un límite al número de tokens que se pueden procesar. Por ejemplo, GPT-4 tiene un límite de tamaño de ventana contextual de 32K. Si bien este límite generalmente no es un problema, es importante considerar el tamaño de la porción desde el principio. Si los fragmentos de texto son demasiado grandes, la información puede perderse o no todo el contenido puede ser incrustado en el contexto, que puede afectar el desempeño y la salida del modelo.
- Manejar documentos largos: mientras que la incrustación de vectores para documentos largos puede capturar el contexto general, podrían pasar por alto detalles importantes relativos a temas específicos, lo que conduce a salidas imprecisas o incompletas. Chunking permite un mejor control sobre la extracción y la incrustación de información, reduciendo así el riesgo de pérdida de información.
Actualmente, Equipo Casibase ofrece m\u00faltiples m\u00e9todos de divisi\u00f3n, lo que permite a los usuarios aplicar diferentes estrategias de procesamiento para diversos escenarios de texto.
Divisor de Texto Predeterminado
El divisor de texto predeterminado está diseñado para segmentar el texto de manera eficiente basándose en el recuento de tokens y en la estructura textual. Su estrategia de segmentaci\u00f3n incluye:
- Lectura de línea y reconocimiento de párrafos: El texto se lee línea por línea, con líneas consecutivas en blanco utilizadas para determinar con precisión los saltos del párrafo. También identifica con sensibilidad puntos de interrupción naturales a través de marcadores, garantizando una segmentación de texto lógica y precisa.
- Manejo especial para bloques de código: los bloques de código encerrados por símbolos ``` son tratados por separado. El número de líneas dentro de un bloque de código determina si puede ser un segmento solo. Este mecanismo preserva la integridad de los bloques de código al tiempo que evita que cualquier segmento de texto excede el límite de token.
- Manteniendo la integridad de las sentencias: a lo largo del proceso de división, se mantiene la estricta adherencia a la integridad de la sentencia, garantizando que las sentencias nunca se dividan. Esta característica garantiza que cada segmento de texto contenga una unidad completa de información. Independientemente de la complejidad del texto, la segmentación se realiza con precisión en los límites de las oraciones, evitando así la ambigüedad y la pérdida de información debido a sentencias incumplidas.
Divisor de Preguntas y Respuestas
El separador de preguntas y respuestas se centra en la segmentación precisa de los textos con formato de preguntas y respuestas y ofrece las siguientes ventajas principales:
- Dividir con precisión las unidades de Q&A: Utiliza un mecanismo de escaneo línea por línea para identificar inteligentemente la estructura de los textos de Q&A. Determinando si cada línea comienza con “Q:” o “A:”, localiza exactamente los límites entre preguntas y respuestas, asegurando que cada par de preguntas y respuestas esté completamente segmentado. Esto garantiza la independencia y la integridad de cada unidad de preguntas y respuestas, proporcionando datos limpios para su procesamiento y análisis posteriores.
- Implementación clara y lógica: El código es simple e intuitivo, haciéndolo fácil de entender y mantener. Al gestionar el estado del par actual de preguntas y respuestas y una bandera que indica si se está recogiendo una respuesta, el proceso de segmentación de texto está claramente controlado, asegurando el correcto emparejamiento de cada unidad de preguntas y respuestas.