Esplorare GraphRAG con Database di Azure per PostgreSQL
Man mano che i dati aumentano, molti documenti o righe iniziano a suonare allo stesso modo. Questa unità illustra come mantenere il flusso di recupero completo all'interno di Database di Azure per PostgreSQL tenendo conto anche delle relazioni. I documenti rimangono nelle tabelle. Le relazioni si trovano in un grafico delle proprietà con Apache AGE (A Graph Extension) e vengono sottoposte a query con openCypher. Quando la domanda viene valutata, si combinano corrispondenze basate sul significato da pgvector (con riclassificazione facoltativa) a un punteggio di relazione dal grafico. Poiché l'intero flusso viene eseguito in SQL, il sistema è più facile da usare e più facile da comprendere.
Grafici in Database di Azure per PostgreSQL
Apache AGE aggiunge funzionalità del grafo a Database di Azure per PostgreSQL. Le entità vengono modellate come nodi e relazioni come archi, con proprietà su entrambi. Questo metodo consente di eseguire query di grafi insieme al tuo normale SQL, in modo da poter combinare tabelle strutturate e strutture grafiche in un unico luogo. Si adatta a casi d'uso come social network, sistemi di raccomandazione e grafici delle conoscenze. Si ottengono i punti di forza dei modelli relazionali e a grafo senza eseguire un secondo database.
Dove la somiglianza non è sufficiente
La somiglianza del testo è valida per le risposte "questo è simile", ma grandi set di testo simile o vicino duplicato possono nascondere le risposte migliori. Il reranking migliora l'ordinamento, ma valuta ancora i passaggi uno per uno. Molte domande dipendono da connessioni come citazioni, co-appartenenza, riferimenti ripetuti e schemi di vicinato. Nell'esempio di database dei criteri aziendali, potrebbero essere presenti due sezioni relative al rimborso dei taxi. Una risiede nella 2025 Travel Policy e diverse regole vi fanno riferimento. L'altra è una sezione del 2023 tenuta per scopi storici, senza alcun collegamento attuale. Una semplice ricerca di somiglianza li tratta allo stesso modo. Tuttavia, quando si esamina anche il modo in cui le regole si connettono ai criteri usando il grafico, la sezione 2025 sale fino alla parte superiore. Il risultato è quella restituita.
GraphRAG
Quando la somiglianza da sola non è sufficiente, GraphRAG è un metodo di Microsoft Research che migliora RAG estraendo un grafo delle conoscenze dai dati di origine e usando tale struttura per fornire un contesto migliore al modello LLM (Large Language Model). Ha tre passaggi principali:
Estrazione di grafi
Nell'esempio di database dei criteri aziendali, usare la
company_policiestabella come origine. Ogni riga diventaPolicynodo conpolicy_id,title,policy_text,departmentecategorycome proprietà. CreareEntitynodi dai valori già presenti (uno per reparto e uno per categoria). Facoltativamente, aggiungereEntitynodi per termini importanti trovati inpolicy_text(ad esempio "rimborso taxi" o "aeroporto"). Connetterle con bordi:(:Policy)-[:BELONGS_TO]->(:Entity {type: 'Department', name: department})(:Policy)-[:HAS_CATEGORY]->(:Entity {type: 'Category', name: category})-
(:Policy)-[:MENTIONS]->(:Entity {type: 'Topic', name: <term>})(facoltativo, derivato dall'estrazione del testo)
Archiviare questo grafico nella stessa istanza di Postgres con Apache AGE , in modo da poter unire nuovamente i risultati del grafico a
company_policiessenza la necessità di un database a grafo separato.Riepilogo entità
Creare brevi riepiloghi per ogni criterio e, se utile, per gruppi di piccole dimensioni, ad esempio per categoria o reparto. La libreria GraphRAG può creare riepiloghi a più livelli. Mantenere questi riepiloghi come proprietà del nodo in modo che siano facili da recuperare durante la classificazione e durante la preparazione del contesto del modello.Generazione di query grafiche al momento della query
Durante il question time, esegui la ricerca vettoriale sucompany_policies.embeddingper ottenere un set iniziale di candidati in base alla somiglianza semantica. In parallelo, eseguire una query openCypher che assegna un punteggio al livello di connessione di ogni candidato a ciò che riguarda la domanda. Per l'esempio "rimborso dei taxi dall'aeroporto", il punteggio del grafico può premiare le politiche che appartengono alla categoria Viaggi, rientrano sotto il reparto Finanziario (o un altro rilevante) e menzionano entità come il rimborso taxi e l'aeroporto.
La somiglianza da sola spesso collega sezioni vicine a sezioni duplicate. La fase del grafico promuove sezioni che corrispondono alla domanda e si trovano nella parte corretta della rete. Il contesto finale inviato al modello è più piccolo, più chiaro e più semplice da giustificare. La pipeline completa, la ricerca vettoriale, la riclassificazione semantica facoltativa, la query del grafico openCypher e la funzione RRF (Fusione di rango reciproco) vengono eseguite all'interno di Postgres.
Dalla sola similitudine alla classificazione GraphRAG
Con la sola similitudine, un testo simile può oscurare il passaggio corretto. Nell'esempio di rimborso dei taxi, i segnali di relazione evidenziano gli elementi che corrispondono alla domanda e si trovano nella categoria, reparto o argomento più rilevanti. Il contesto passato al modello è più stretto e più facile da difendere ed è possibile puntare a percorsi e punteggi esatti per spiegare ogni rango.
Usare GraphRAG in Database di Azure per PostgreSQL per mantenere i dati e le relazioni in un'unica posizione, classificare i risultati sia in base al significato che alle connessioni e citare l'origine esatta per ogni risposta. L'acceleratore di soluzioni GraphRAG mostra la pipeline completa. Include ricerca vettoriale, reranking semantico, punteggio grafico openCypher e fusione di classifiche. Viene eseguito all'interno di Postgres ed è scritto in SQL e offre miglioramenti chiari rispetto al recupero solo vettoriale.
È possibile continuare a eseguire il reranking all'interno del database con operatori semantici SQL. L'operatore rank() degli azure_ai operatori semantici consente di riordinare i primi candidati con modelli all'avanguardia direttamente in una query, in modo da poter combinare la classificazione semantica con l'assegnazione dei punteggi dei grafi senza uscire da Postgres. Man mano che i dati aumentano, associa la fase del grafo con l'indice vettoriale adatto.
DiskANN In Database di Azure per PostgreSQL supporta incorporamenti dimensionali elevati (fino a 16.000 dimensioni), compilazioni di indici più veloci e quantizzazione del prodotto che consente di ridurre la memoria e i costi mantenendo un'accuratezza elevata. I miglioramenti segnalati includono prestazioni fino a 10 volte superiori e riduzioni dei costi quasi quadruplicate rispetto a un indice HNSW (Hierarchical Navigable Small Worlds).
Punti chiave
Una ricerca per affinità spesso non è sufficiente per rispondere alle esigenze reali.
GraphRAG con Apache AGE aggiunge un grafico delle conoscenze in modo che il modello ottenga la struttura e il significato. Si estraggono relazioni in un grafico AGE, si mantengono brevi riepiloghi sui nodi e, al momento delle domande, si esegue una ricerca vettoriale e una query openCypher per vedere come si connettono i candidati. In Database di Azure per PostgreSQL questo processo rimane in un'unica posizione. Le tabelle contengono il contenuto, Apache AGE gestisce il grafo, pgvector estrae i passaggi probabili e un leggero riordinamento con una fusione semplice restringe l'ordine. Il risultato è un contesto più piccolo e più chiaro che punta alle origini corrette e produce risposte che è possibile verificare.