Puedes dividir por oraciones, puedes dividir por párrafos, puedes dividir por caracteres y cuántas oraciones, cuántos párrafos y cuántos caracteres. Hay algunas cosas que serían muy específicas de tu caso de uso que realmente necesitarás probar y testear cuál funciona para ti. En este caso, estoy usando un tamaño de fragmento y caracteres de 15,000 y un solapamiento de fragmento de 150.
Los solapamientos de fragmento son cruciales y básicamente aseguran que no perdamos contexto en cada fragmento. Así que a medida que vamos a fragmentar toda esta información, es importante tener una pequeña vista previa de lo que sigue y también del siguiente capítulo o si estamos hablando de un ejemplo de libros. Así que los solapamientos son muy importantes de tener. Así que lo que estamos haciendo es básicamente pasar por cada una de esta información, caracteres, fragmentar ellos, y luego ahora que tenemos este fragmento de datos, ¿qué sigue? Vamos a pasar por algo llamado incrustación.
Así que la incrustación es una técnica que transforma datos, en este caso texto, para capturar el significado semántico de esto. Así que cada incrustación es esencialmente una lista de números, típicamente entre 700 y 1,000, y posiciona el texto en un espacio de alta dimensión donde significados similares están más cerca. Como mencioné, son 700 y 1,000 dimensiones. Si queremos hacerlo o verlo en un ejemplo muy básico, podemos mirar esta imagen de SuperBase. Así que esto es una dos dimensiones y cómo se va a mapear las cosas. Así que si tengo la oración, el gato persigue al ratón, es muy similar a la siguiente oración. Así que estarán cerca uno del otro. Pero otra oración que no tiene nada que ver con eso, estaría lejos. Y esto es solo en una dos dimensiones. Así que vamos a depender de modelos de incrustación para transformar estos fragmentos de datos y poner en un espacio dimensional para que más tarde podamos recuperar esa información basada en cuán cerca y semánticamente estos significados están.
Así que como mencioné, vamos a usar un modelo de incrustación. En este caso, estoy usando OpenAI Ada. Y voy a ir de cada uno de estos fragmentos y hacer una incrustación. Así que los fragmentos que hice para 15,000, estos se van a transformar en una incrustación. Y son básicamente vectores, un número representacional de dónde están en una dimensión. Y ahora que tengo estos datos, voy a necesitar un lugar para encontrarlos más tarde. Y aquí es donde entran en juego las bases de datos vectoriales. Necesitaré almacenar estos datos en este tipo especial de bases de datos, bases de datos vectoriales. Y se vería algo así. Recuerda, tengo mi contenido de 15,000 caracteres. Así que este es básicamente el contenido. Y en el otro lado, tengo todos los vectores que tienen el significado de ese contenido. Esto se va a usar para recuperar esta información más tarde con algo llamado búsqueda de similitud.
Comments