Chroma to aplikacja bazy danych wbudowana w nasz kod w formie pakietu. Zaletą Chroma jest jej prostota. Jeśli potrzebujesz bazy danych wektorowej do implementacji pamięci LLM w tworzeniu aplikacji LLM, która obsługuje wyszukiwanie języka podobieństwa tekstu i nie chcesz instalować niezależnej bazy danych wektorowej, Chroma jest dobrym wyborem. Obecnie biblioteka Chroma obsługuje dwa języki: Python i JavaScript. Ten samouczek oparty jest głównie na języku Python.

1. Instalacja Chromadb

pip install chromadb

Uwaga: Obecna wersja chromadb nie jest kompatybilna z Pythonem 3.11. Zaleca się wycofanie wersji Pythona.

2. Inicjalizacja klienta Chroma

import chromadb
chroma_client = chromadb.Client()

3. Utwórz kolekcję

Kolekcja jest podobna do tabeli w bazie danych Chroma, gdzie przechowywane są dane wektorowe (w tym dokumenty i inne dane źródłowe). Utwórz kolekcję w następujący sposób:

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

4. Dodaj dane

Po zdefiniowaniu kolekcji dodaj dane do kolekcji. Chroma przechowa nasze dane i utworzy specjalny indeks wektorowy na podstawie wektora danych tekstowych, co ułatwi późniejsze zapytania.

4.1. Oblicz wektory za pomocą wbudowanego modelu osadzania

collection.add(
    documents=["To jest dokument", "To jest kolejny dokument"],
    metadatas=[{"źródło": "moje_źródło"}, {"źródło": "moje_źródło"}],
    ids=["id1", "id2"]
)

4.2. Określ wartości wektorów podczas dodawania danych

collection.add(
    embeddings=[[1.2, 2.3, 4.5], [6.7, 8.2, 9.2]],
    documents=["To jest dokument", "To jest kolejny dokument"],
    metadatas=[{"źródło": "moje_źródło"}, {"źródło": "moje_źródło"}],
    ids=["id1", "id2"]
)

5. Zapytaj o dane

Teraz możesz wyszukać podobną zawartość tekstu, a Chroma zwróci "n" najbardziej podobnych wyników. Poniżej przedstawiono przykład wyszukiwania podobnej zawartości dokumentu na podstawie parametru zapytania_texts:

results = collection.query(
    query_texts=["To jest dokument z zapytaniem"],
    n_results=2
)

Domyślnie dane w Chroma są przechowywane w pamięci, więc dane zostaną utracone po ponownym uruchomieniu programu. Oczywiście możesz ustawić Chroma, aby zachowywała dane na dysku twardym, dzięki czemu program będzie ładował dane z dysku podczas uruchamiania.