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.