Chroma es una aplicación de base de datos incrustada que se integra en nuestro código en forma de paquete. La ventaja de Chroma es su simplicidad. Si necesita una base de datos de vectores para implementar la memoria LLM en el desarrollo de aplicaciones LLM, admite la búsqueda de similitud de texto y no desea instalar una base de datos de vectores independiente, Chroma es una buena elección. Actualmente, la biblioteca Chroma admite dos lenguajes: Python y JavaScript. Este tutorial se basa principalmente en Python.

1. Instalar Chromadb

pip install chromadb

Nota: La versión actual de chromadb no es compatible con Python 3.11. Se recomienda reducir la versión de Python.

2. Inicializar el cliente de Chroma

import chromadb
chroma_client = chromadb.Client()

3. Crear una colección

Una colección es similar a una tabla en la base de datos de chroma, donde se almacenan datos vectoriales (incluidos documentos y otros datos fuente). Cree una colección de la siguiente manera:

collection = chroma_client.create_collection(name="tizi365")

4. Agregar datos

Después de definir una colección, agregue datos a la colección. Chroma almacenará nuestros datos y creará un índice vectorial especial basado en el vector de los datos de texto para facilitar consultas posteriores.

4.1. Calcular vectores usando el modelo de incrustación incorporado

collection.add(
    documents=["Este es un documento", "Este es otro documento"],
    metadatas=[{"fuente": "mi_fuente"}, {"fuente": "mi_fuente"}],
    ids=["id1", "id2"]
)

4.2. Especificar valores vectoriales al agregar datos

collection.add(
    embeddings=[[1.2, 2.3, 4.5], [6.7, 8.2, 9.2]],
    documents=["Este es un documento", "Este es otro documento"],
    metadatas=[{"fuente": "mi_fuente"}, {"fuente": "mi_fuente"}],
    ids=["id1", "id2"]
)

5. Consultar datos

Ahora puede consultar contenido de texto similar, y Chroma devolverá "n" resultados más similares. A continuación se muestra un ejemplo de consulta de contenido de documento similar basado en el parámetro de consulta query_texts:

results = collection.query(
    query_texts=["Este es un documento de consulta"],
    n_results=2
)

De forma predeterminada, los datos en Chroma se almacenan en la memoria, por lo que se pierden cuando se reinicia el programa. Por supuesto, puede configurar Chroma para persistir datos en el disco duro, de modo que el programa cargue datos desde el disco cuando se inicie.