Aller au contenu principal

GraphRAG

La classe GraphRAG met en œuvre une approche de la génération augmentée par récupération fondée sur un graphe. Elle crée un graphe de connaissances à partir de segments de documents, dans lequel les nœuds représentent les documents et les arêtes leurs relations sémantiques. Elle permet ainsi à la fois la recherche directe de similarités et la découverte de contenus associés par parcours du graphe.

Utilisation de base
Lien direct vers Utilisation de base

import { GraphRAG } from '@mastra/rag'

const graphRag = new GraphRAG({
dimension: 1536,
threshold: 0.7,
})

// Create the graph from chunks and embeddings
graphRag.createGraph(documentChunks, embeddings)

// Query the graph with embedding
const results = await graphRag.query({
query: queryEmbedding,
topK: 10,
randomWalkSteps: 100,
restartProb: 0.15,
})

Paramètres du constructeur
Lien direct vers Paramètres du constructeur

dimension?:

number
= 1536
Dimension des vecteurs d'embedding

threshold?:

number
= 0.7
Seuil de similarité pour la création des arêtes entre les nœuds (0-1)

Méthodes
Lien direct vers Méthodes

createGraph
Lien direct vers creategraph

Crée un graphe de connaissances à partir de segments de documents et de leurs embeddings.

createGraph(chunks: GraphChunk[], embeddings: GraphEmbedding[]): void

Paramètres
Lien direct vers Paramètres

chunks:

GraphChunk[]
Tableau de segments de documents contenant du texte et des métadonnées

embeddings:

GraphEmbedding[]
Tableau des embeddings correspondant aux segments

query
Lien direct vers query

Effectue une recherche fondée sur un graphe en combinant la similarité vectorielle et le parcours du graphe.

query({
query,
topK = 10,
randomWalkSteps = 100,
restartProb = 0.15
}: {
query: number[];
topK?: number;
randomWalkSteps?: number;
restartProb?: number;
}): RankedNode[]

Paramètres
Lien direct vers Paramètres

query:

number[]
Vecteur d'embedding de la requête

topK?:

number
= 10
Nombre de résultats à renvoyer

randomWalkSteps?:

number
= 100
Nombre d'étapes de la marche aléatoire

restartProb?:

number
= 0.15
Probabilité de reprendre la marche à partir du nœud de la requête

Valeur renvoyée
Lien direct vers Valeur renvoyée

Renvoie un tableau d'objets RankedNode, dans lequel chaque nœud contient :

id:

string
Identifiant unique du nœud

content:

string
Contenu textuel du segment de document

metadata:

Record<string, any>
Métadonnées supplémentaires associées au segment

score:

number
Score de pertinence combiné issu du parcours du graphe

Exemple avancé
Lien direct vers Exemple avancé

const graphRag = new GraphRAG({
dimension: 1536,
threshold: 0.8, // Stricter similarity threshold
})

// Create graph from chunks and embeddings
graphRag.createGraph(documentChunks, embeddings)

// Query with custom parameters
const results = await graphRag.query({
query: queryEmbedding,
topK: 5,
randomWalkSteps: 200,
restartProb: 0.2,
})