Weaviate este o bază de date vectorială open-source cu integrare de modele: poate vectoriza datele și interogările și poate trimite rezultatele căutării la un model generativ (RAG) în aceeași cerere. Modelul generativ se configurează implicit pe colecție sau se dă la interogare cu generative_provider (de la v1.30).
Interfața collection.generate din clientul Python v4 are aceleași metode de căutare ca collection.query (near_text, hybrid, bm25 etc.), plus single_prompt (un răspuns generat pentru fiecare obiect, cu proprietăți inserate ca {nume_proprietate}) și grouped_task (un singur răspuns pentru toate rezultatele). Rezultatele sunt în obiect.generative.text și raspuns.generative.text.
API-ul GraphQL este depreciat și va fi oprit în Weaviate Cloud la 1 mai 2027; clienții actuali folosesc gRPC. La căutarea hibridă, alpha = 1 înseamnă doar vectori și 0 doar BM25; valoarea implicită pe server este 0,75, dar documentația avertizează că efectul implicit depinde de client și de versiune, deci recomandă setarea explicită.
Concepte cheie și caracteristici
| Concept / Parametru | Descriere practică |
|---|---|
client.collections.use("Nume") |
Obiectul colecției în clientul v4 actual. |
generate.near_text / hybrid / bm25 |
Căutare plus generare în aceeași cerere. |
single_prompt |
Prompt aplicat fiecărui obiect; proprietățile se inserează cu {proprietate}. |
grouped_task |
Sarcină aplicată tuturor rezultatelor împreună (RAG clasic). |
generative_provider=GenerativeConfig.openai() |
Alege modelul generativ la interogare, în locul celui configurat pe colecție. |
alpha |
Ponderea vectorilor în hybrid (0–1). |
fusion_type |
HybridFusion.RELATIVE_SCORE (implicit de la v1.24) sau RANKED. |
Exemple practice și scenarii reale
Exemplul 1: Conectare locală cu cheia furnizorului generativ
import os
import weaviate
headers = {"X-OpenAI-Api-Key": os.environ["OPENAI_API_KEY"]}
with weaviate.connect_to_local(headers=headers) as client:
articole = client.collections.use("ArticolTehnic")
Exemplul 2: Răspuns per obiect și răspuns de grup
from weaviate.classes.generate import GenerativeConfig
raspuns = articole.generate.near_text(
query="securitate containere",
limit=3,
single_prompt="Rezumă într-o frază: {continut}",
grouped_task="Ce recomandări au în comun aceste articole?",
generative_provider=GenerativeConfig.openai(),
)
for o in raspuns.objects:
print(o.generative.text)
print(raspuns.generative.text)
Exemplul 3: Căutare hibridă fără generare, cu scorurile explicate
from weaviate.classes.query import MetadataQuery
r = articole.query.hybrid(query="docker", alpha=0.5, limit=3,
return_metadata=MetadataQuery(score=True, explain_score=True))
Greșeli frecvente și capcane
- Folosești
raspuns.generatedsauclient.collections.get()din exemplele mai vechi. Documentația actuală folosește.generative.textșicollections.use(). - Lași
alphanesetat și te bazezi pe valoarea implicită. Setează-l explicit și testează mai multe valori pe datele tale. - Uiți cheia API a furnizorului generativ în antetele conexiunii; pasul de generare eșuează, chiar dacă căutarea merge.