Chroma è un'applicazione di database integrato che è incorporata nel nostro codice sotto forma di un pacchetto. Il vantaggio di Chroma è la sua semplicità. Se hai bisogno di un database vettoriale per implementare la memoria LLM nello sviluppo di applicazioni LLM, supporta la ricerca del linguaggio di similarità del testo e non vuoi installare un database vettoriale indipendente, Chroma è una buona scelta. Attualmente, la libreria Chroma supporta due linguaggi: Python e JavaScript. Questo tutorial si basa principalmente su Python.

1. Installazione di Chromadb

pip install chromadb

Nota: la versione attuale di chromadb non è compatibile con Python 3.11. Si consiglia di eseguire il rollback della versione di Python.

2. Inizializzare il client di Chroma

import chromadb
chroma_client = chromadb.Client()

3. Creare una collezione

Una collezione è simile a una tabella nel database chroma, dove vengono memorizzati i dati vettoriali (inclusi documenti e altri dati di origine). Creare una collezione come segue:

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

4. Aggiungere dati

Dopo aver definito una collezione, aggiungi dati alla collezione. Chroma memorizzerà i nostri dati e creerà un indice vettoriale speciale basato sul vettore dei dati testuali per una facile interrogazione in seguito.

4.1. Calcolare i vettori utilizzando il modello di embedding incorporato

collection.add(
    documents=["Questo è un documento", "Questo è un altro documento"],
    metadatas=[{"source": "my_source"}, {"source": "my_source"}],
    ids=["id1", "id2"]
)

4.2. Specificare i valori del vettore durante l'aggiunta di dati

collection.add(
    embeddings=[[1.2, 2.3, 4.5], [6.7, 8.2, 9.2]],
    documents=["Questo è un documento", "Questo è un altro documento"],
    metadatas=[{"source": "my_source"}, {"source": "my_source"}],
    ids=["id1", "id2"]
)

5. Interrogare i dati

Ora puoi interrogare contenuti di testo simili e Chroma restituirà "n" risultati più simili. Di seguito è riportato un esempio di interrogazione di contenuti di documento simili basata sul parametro di interrogazione dei testi della query:

results = collection.query(
    query_texts=["Questo è un documento di query"],
    n_results=2
)

Per impostazione predefinita, i dati in Chroma sono memorizzati in memoria, quindi i dati vengono persi quando il programma viene riavviato. Naturalmente, puoi impostare Chroma per persistere i dati sul disco rigido, in modo che il programma carichi i dati dal disco quando viene avviato.