ChromaDB: Colecții & Persistență (PersistentClient) în Baze de Date Vectoriale & Căutare Semantică

Configurarea bazei de date ChromaDB în Python: diferența dintre modul Ephemeral și PersistentClient pe disc, plus integrarea automată a funcțiilor de embedding.

Sintaxă & interogare
import chromadb
from chromadb.utils import embedding_functions

# Inițializare bază locală persistentă pe disc:
client = chromadb.PersistentClient(path="./chroma_data")

# Colecție cu funcție de embedding inclusă:
fn_emb = embedding_functions.DefaultEmbeddingFunction()
colectie = client.get_or_create_collection(name="articole", embedding_function=fn_emb)

Descriere & Utilizare

ChromaDB este cea mai populară bază de date vectorială open-source pentru prototipare rapidă și aplicații locale bazate pe Python și JavaScript, fiind motorul implicit utilizat de framework-uri precum LangChain și CrewAI.

Designul său se remarcă prin simplitate absolută: nu necesită containere Docker sau configurări de rețea. Cu chromadb.PersistentClient(path="./cale"), toate datele, vectorii și indecșii HNSW sunt salvați automat pe disc într-o structură SQLite + fișiere binare.

O caracteristică unică a lui ChromaDB este că vine cu funcții de embedding încorporate: dacă nu specifici un vector numeric la inserare, ChromaDB poate apela automat modelul integrat (sau API-ul OpenAI/HuggingFace) pentru a converti textul în vector în mod transparent.

Cum să o reții ușor

💡 ChromaDB este ca SQLite pentru lumea AI: un fișier pe care îl ții direct în proiectul tău, fără bătăi de cap cu servere, dar gata să ofere căutare vectorială la milisecundă.

Opțiuni și parametri tehnici

  • PersistentClient(path="..."): calea pe disc unde sunt salvate colecțiile.
  • EphemeralClient(): client în memorie RAM, ideal pentru rularea testelor unitare automate.
  • metadata={"hnsw:space": "cosine"}: specifică metrica spațiului vectorial ("cosine", "l2" sau "ip").
  • embedding_function: funcția care convertește automat stringurile în vectori dacă nu trimiți vectori precalculați.

Exemple practice și cazuri de utilizare

  • Instalare rapidă: pip install chromadb.
  • Ștergerea unei colecții la resetare: client.delete_collection("articole_vechi").
  • Numărarea elementelor dintr-o colecție: print(colectie.count()).

Sfaturi de configurare & capcane

Dacă folosești propriul tău pipeline de embeddings (de exemplu un model SentenceTransformers sau OpenAI v3), lasă embedding_function=None și trimite întotdeauna vectorii gata calculați în parametrul embeddings=[...].

Comenzi și ghiduri înrudite