Chroma ist eine eingebettete Datenbankanwendung, die in Form eines Pakets in unseren Code eingebettet ist. Der Vorteil von Chroma liegt in seiner Einfachheit. Wenn Sie eine Vektordatenbank benötigen, um LLM-Speicher bei der Entwicklung von LLM-Anwendungen zu implementieren, unterstützt sie die Textähnlichkeitssprachesuche, und Sie möchten keine unabhängige Vektordatenbank installieren, ist Chroma eine gute Wahl. Derzeit unterstützt die Chroma-Bibliothek zwei Sprachen: Python und JavaScript. Dieses Tutorial basiert hauptsächlich auf Python.
1. Chromadb installieren
pip install chromadb
Hinweis: Die aktuelle Version von chromadb ist nicht kompatibel mit Python 3.11. Es wird empfohlen, die Python-Version zu downgraden.
2. Initialisieren des Chroma-Clients
import chromadb
chroma_client = chromadb.Client()
3. Eine Sammlung erstellen
Eine Sammlung ähnelt einer Tabelle in der Chroma-Datenbank, in der Vektordaten (einschließlich Dokumenten und anderer Quelldaten) gespeichert sind. Erstellen Sie eine Sammlung wie folgt:
collection = chroma_client.create_collection(name="tizi365")
4. Daten hinzufügen
Nachdem eine Sammlung definiert wurde, können Daten zur Sammlung hinzugefügt werden. Chroma speichert unsere Daten und erstellt einen speziellen Vektorindex basierend auf dem Vektor der Textdaten für eine spätere einfache Abfrage.
4.1. Vektoren mithilfe des integrierten Einbettungsmodells berechnen
collection.add(
documents=["Dies ist ein Dokument", "Dies ist ein weiteres Dokument"],
metadatas=[{"Quelle": "meine_quelle"}, {"Quelle": "meine_quelle"}],
ids=["id1", "id2"]
)
4.2. Angeben von Vektorwerten beim Hinzufügen von Daten
collection.add(
embeddings=[[1.2, 2.3, 4.5], [6.7, 8.2, 9.2]],
documents=["Dies ist ein Dokument", "Dies ist ein weiteres Dokument"],
metadatas=[{"Quelle": "meine_quelle"}, {"Quelle": "meine_quelle"}],
ids=["id1", "id2"]
)
5. Daten abfragen
Jetzt können Sie ähnliche Textinhalte abfragen, und Chroma gibt "n" ähnlichste Ergebnisse zurück. Im Folgenden ein Beispiel für die Abfrage ähnlicher Dokumentinhalte basierend auf dem Abfrageparameter query_texts:
results = collection.query(
query_texts=["Dies ist ein Abfrage-Dokument"],
n_results=2
)
Standardmäßig werden Daten in Chroma im Speicher gespeichert, sodass die Daten verloren gehen, wenn das Programm neu gestartet wird. Natürlich können Sie Chroma so einstellen, dass die Daten auf die Festplatte persistiert werden, sodass das Programm die Daten beim Start von der Festplatte lädt.