Property Graphs (GraphRAG Nativ) în LlamaIndex în LlamaIndex & Data RAG

Indici și Căutare Avansată LlamaIndex 0.10.50+

Combinarea căutării semantice vectoriale cu grafuri structurate de cunoștințe (Knowledge Graphs) pentru raționament pe relații complexe.

Sintaxă & invocare Python
PropertyGraphIndex.from_documents(documents, ...)

Baza de date vectorială clasică este excelentă pentru căutări de similitudine semantică (‘Găsește fragmente despre securitatea rețelelor’), dar eșuează lamentabil când interogarea necesită navigarea pe relații de tip multi-hop (‘Ce produse create de companiile achiziționate de fondatorul X au fost lansate în 2024?’).

Property Graph Index din LlamaIndex unifică puterea grafurilor de cunoștințe cu eficiența căutării vectoriale. Documentele sunt analizate de un LLM care extrage automat entitățile (noduri) și relațiile dintre ele (muchii cu proprietăți), construind un graf de proprietăți bogat.

La interogare, motorul de căutare hibrid combină traversarea grafului de relații (SynonymPathExtractor / ImplicitPathExtractor) cu căutarea vectorială pe textul fragmentelor, oferind un răspuns fundamentat pe structura completă a legăturilor dintre entități.

Sintaxă, opțiuni și concepte cheie

Opțiune / Concept Descriere practică
PropertyGraphIndex Clasa principală de indexare hibridă graf-vector.
SchemaLLMPathExtractor Extractorul ghidat de o schemă predefinită de entități și relații (ex. Person -> FOUNDED -> Company).
SimpleLLMPathExtractor Extractor deschis care deduce dinamic relațiile fără schemă rigidă.
VectorContextRetriever Recuperatorul care caută simultan nodurile de graf și fragmentele de text originale.

Exemple practice și configurații

Exemplul 1: Construirea și interogarea unui index de tip Property Graph din documente PDF

Cod Python complet pentru extragerea relațiilor de afaceri dintr-un set de documente.

from llama_index.core import SimpleDirectoryReader, PropertyGraphIndex
from llama_index.llms.openai import OpenAI

# 1. Încărcăm documentele interne de achiziții
documente = SimpleDirectoryReader("date_fuziuni/").load_data()

# 2. Construim indexul de graf (extrage entități și leagă relațiile)
index = PropertyGraphIndex.from_documents(
    documente,
    llm=OpenAI(model="gpt-4o", temperature=0.1),
    embed_model="local:BAAI/bge-large-en-v1.5"
)

# 3. Interogare multi-hop:
query_engine = index.as_query_engine(include_text=True)
raspuns = query_engine.query("Ce subsidiare deținute de consorțiu operează în Europa de Est?")
print(raspuns)

Rezultat & Impact

Răspuns sintetizat prin traversarea muchiilor de proprietate din graful relațional.

Greșeli frecvente și bune practici

  • Rularea extractorului de graf pe mii de pagini cu modele LLM foarte scumpe fără caching, generând costuri enorme de indexare.
  • Ne-definirea unei scheme stricte de relații pe domenii tehnice specializate, lăsând modelul să creeze zeci de sinonime pentru aceeași relație (ex. ‘created_by’, ‘authored_by’, ‘written_by’).

Ghiduri și noțiuni înrudite