¿Cómo crear una base de datos en Chroma sin embeddings predefinidos?
Cuando te enfrentas al manejo de datos, es común trabajar con embeddings, que son representaciones matemáticas de tus documentos. Sin embargo, ¿qué sucede si no cuentas con estos embeddings previamente calculados? Chroma, una herramienta poderosa para la gestión de bases de datos vectoriales, te permite procesar documentos directamente y generar estas representaciones automáticamente.
¿Cómo instanciar una nueva base de datos en Chroma?
Para crear una nueva base de datos en Chroma, primero debes instanciar una nueva base con el cliente que hayas generado previamente. En este caso, estamos trabajando con el cliente Persistent. Así, puedes crear una nueva colección o base de datos. Digamos que la llamamos MoviesDB.noEmbeddings.
Usaremos la función de embeddings previamente configurada, Sentence Transformer, para que, al procesar documentos, Chroma pueda generar automáticamente los embeddings al recibir textos.
# Instanciamos una nueva base de datosDB_noEmbeddings = client.Persistent.create_database('MoviesDB.noEmbeddings', embedding_function=SentenceTransformerEF)
¿Cómo enviar documentos en lugar de embeddings?
Después de crear la base de datos, el paso siguiente es enviar los datos necesarios. Aun cuando no tengas embeddings predefinidos, puedes enviar los documentos que desees convertir en embeddings. El proceso es simple:
IDs: Los identificadores únicos son esenciales.
Documentos: Estos son los textos que deseas procesar; por ejemplo, reseñas o descripciones.
Metadata: Puedes enviarla tal cual la tenías previamente, lo que facilita contextualizar los datos.
# Enviamos los datos a la base de datosDB_noEmbeddings.write_documents( ids=df_ids.to_list(), documents=text_column, metadatas=predefined_metadata
)
Chroma detecta que no has enviado embeddings e internamente aplica Sentence Transformer al texto proporcionado, generando así los embeddings automáticamente.
¿Cómo gestionar y examinar los datos en la base de datos?
Una vez que los documentos se han cargado, puedes explorar y administrar el contenido de tu base de datos. Con comandos básicos, es posible seleccionar, eliminar y consultar registros.
Selección: Para examinar registros, puedes utilizar Pick, que te ayudará a verificar los embeddings generados.
Eliminación: Asegúrate de tener identificadores únicos para gestionar adecuadamente los datos.
Por ejemplo, para eliminar un registro en particular:
# Eliminando un registro con un ID específicoDB_noEmbeddings.delete_document(id='unique_id_of_record_to_delete')
Con estas acciones, puedes no solo verificar que los embeddings se generaron correctamente, sino también gestionar tus datos de manera eficaz.
Motivación para seguir explorando
Entender y gestionar bases de datos vectoriales y embeddings es crucial en muchos ámbitos del análisis de datos. Aunque inicialmente desafiante, con herramientas como Chroma, los procesos se hacen más accesibles. Sigue explorando, experimenta con diferentes tipos de datos y funciones de embeddings, y seguro encontrarás nuevas y sorprendentes maneras de optimizar tus proyectos. ¡No pierdas el entusiasmo por aprender algo nuevo cada día!
En chroma tenemso la ventaja de que podemos subir docuemntos directamente para que sean procesados por debajo como vectores, es útil cuando el método de embebido solo precisamos texto, es importante entender que cada método de embebido:
- Es tan bueno como los datos con los que se entrena. Datos variados, ricos semánticamente y representativos del lenguaje son mucho mejor.
- Una alta dimensionalidad conlleva a sobre ajustes, poca dimensionalidad puede que no facilite la captuar la riqueza de los datos.
- Cada método tiene un poder de inferencia e inclusive podrías comparar con métricas los métodos de embebidos.
_____
Nota:
- Recordemos que cada método en otras palabras es una representación numérica de la distribución de las palabras en una frase, o el conteo, o el grafo, es decir, el cómo modelamos matemáticamente el significado de las palabras es la clave para crear el método de embebido, esto sin contar con el procesamiento de datos que todo proceso debería tener.
En Chroma, tanto con documentos, o embeddings, podemos pasarlos como parámetros y serán almacenados como embeddings.