Chroma es una base de datos de código abierto para aplicaciones de IA, diseñada específicamente para almacenar y recuperar incrustaciones vectoriales (embeddings). Es una base de datos de incrustaciones (también conocida como base de datos vectorial) que puede encontrar datos mediante la búsqueda de vecinos más cercanos en lugar de la búsqueda de subcadenas de texto tradicional de las bases de datos.
Dirección de GitHub: https://github.com/chroma-core/chroma
Chroma integra múltiples funciones, incluyendo incrustación, búsqueda vectorial, almacenamiento de documentos, búsqueda de texto completo, filtrado de metadatos y recuperación multimodal, todo integrado en una sola plataforma.
Por defecto, Chroma utiliza Sentence Transformers para la incrustación, pero también puede utilizar otras incrustaciones como OpenAI embeddings, Cohere (multilingüe), etc.
Soporta múltiples modos de despliegue, incluyendo modo en memoria, modo de almacenamiento de archivos y modo servidor.
Soporta diferentes backends de almacenamiento, como DuckDB para uso local y ClickHouse para escalar aplicaciones grandes.
En los sistemas RAG, primero se incrustan los documentos y se almacenan en una colección ChromaDB, y luego se ejecutan consultas a través de ChromaDB para encontrar contenido semánticamente relevante.
En la búsqueda semántica, ChromaDB puede encontrar puntos de datos similares entre sí basándose en incrustaciones vectoriales, lo cual es muy útil para identificar documentos, imágenes u otros tipos de datos comparables analizando su contenido o significado.
A través del cálculo de la distancia en el espacio vectorial, se encuentra rápidamente el contenido más similar a la consulta.
pip install chromadb
import chromadb
client = chromadb.Client()
collection = client.create_collection("my_collection")
collection.add(
documents=["This is document 1", "This is document 2"],
metadatas=[{"source": "doc1"}, {"source": "doc2"}],
ids=["id1", "id2"]
)
results = collection.query(
query_texts=["search query"],
n_results=2
)
Chroma ya está profundamente integrado con LangChain y puede utilizarse como un componente de almacenamiento vectorial.
Chroma ya está integrado con las funciones de incrustación de OpenAI, soportando el almacenamiento y filtrado de metadatos arbitrarios.
Chroma es un componente de infraestructura indispensable en el desarrollo moderno de aplicaciones de IA, especialmente adecuado para escenarios de aplicación que requieren búsqueda semántica, sistemas RAG y coincidencia de similitud vectorial. Su API concisa, sus potentes funciones y su buena integración con el ecosistema la convierten en la solución de base de datos vectorial preferida por los desarrolladores.