跳至主要內容

GraphRAG

GraphRAG 類別實作以圖為基礎的檢索增強生成方法。它會從文件區塊建立知識圖,其中節點代表文件、邊代表語意關係,讓你既能直接比對相似度,也能透過圖遍歷探索相關內容。

基本用法
「基本用法」的直接連結

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,
})

建構函式參數
「建構函式參數」的直接連結

dimension?:

number
= 1536
嵌入向量的維度

threshold?:

number
= 0.7
在節點之間建立邊的相似度門檻(0–1)

方法
「方法」的直接連結

createGraph
「creategraph」的直接連結

從文件區塊及其嵌入建立知識圖。

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

參數
「參數」的直接連結

chunks:

GraphChunk[]
包含文字與中繼資料的文件區塊陣列

embeddings:

GraphEmbedding[]
與區塊相對應的嵌入陣列

query
「query」的直接連結

結合向量相似度與圖遍歷,執行以圖為基礎的搜尋。

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

參數
「參數」的直接連結

query:

number[]
查詢的嵌入向量

topK?:

number
= 10
要傳回的結果數量

randomWalkSteps?:

number
= 100
隨機漫步的步數

restartProb?:

number
= 0.15
從查詢節點重新開始漫步的機率

傳回值
「傳回值」的直接連結

傳回 RankedNode 物件陣列,每個節點包含:

id:

string
節點的唯一識別碼

content:

string
文件區塊的文字內容

metadata:

Record<string, any>
與區塊相關聯的其他中繼資料

score:

number
圖遍歷所得的綜合相關性分數

進階範例
「進階範例」的直接連結

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,
})