În arhitectura clasică de RAG, dezvoltatorul trebuie să realizeze cel puțin trei pași distincți: calculează embedding-ul întrebării, interoghează baza de date vectorială, extrage fragmentele de text și le trimite separat către un API de LLM (OpenAI sau Anthropic). Acest du-te-vino adaugă latență de rețea și fragilitate în cod.
Weaviate a integrat conceptul de Generative Search direct în nucleul bazei de date. Folosind module precum generative-openai, generative-cohere sau generative-ollama, Weaviate execută căutarea hibridă (combinând căutarea cuvintelor cheie BM25 cu similitudinea vectorială densă) și trimite automat cele mai bune fragmente către modelul LLM configurat.
Dezvoltatorul primește înapoi dintr-o singură cerere GraphQL sau din noul client Python v4 atât obiectele originale cu scorurile de relevanță, cât și răspunsul gata sintetizat sau rezumatul per-obiect generat de inteligența artificială.
Sintaxă, opțiuni și concepte cheie
| Opțiune / Concept | Descriere practică |
|---|---|
near_text(query=...) |
Căutarea semantică automată bazată pe vectorizarea promptului în fundal. |
hybrid(query=..., alpha=0.5) |
Căutarea hibridă: alpha=1.0 este pur vectorial, alpha=0.0 este pur BM25 lexical. |
generate.near_text(single_prompt=...) |
Generarea unui rezumat sau analize individuale pentru fiecare obiect returnat. |
generate.near_text(grouped_task=...) |
Sinteza globală (RAG tradițional) peste întregul set de documente regăsite. |
Exemple practice și configurații
Exemplul 1: Căutare hibridă cu sinteză RAG dintr-un singur apel cu Weaviate v4
Codul Python curat folosind noua interfață declarativă a Weaviate.
import weaviate
client = weaviate.connect_to_local()
articole = client.collections.get("ArticolTehnic")
# Interogare hibridă cu sarcină generativă combinată:
raspuns = articole.generate.hybrid(
query="arhitectură microservicii securitate",
alpha=0.7, # 70% semantic, 30% cuvinte cheie BM25
grouped_task="Explică principalele trei vulnerabilități descrise în aceste articole și cum se pot remedia.",
limit=4
)
print("Răspuns RAG generat direct de Weaviate:")
print(raspuns.generated)
Rezultat & Impact
Răspuns structurat generat instant fără a fi nevoie de orchestrare manuală prin LangChain.
Greșeli frecvente și bune practici
- Setarea `alpha=0.5` fără a testa dacă setul de date este mai bine deservit de căutarea semantică pură pe concepte abstracte.
- Uitarea configurării cheii de API a furnizorului generativ în antetele clientului Weaviate, cauzând eșecul la pasul de sinteză.