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)
方法方法 的直接連結
createGraphcreategraph 的直接連結
從文件分塊及其嵌入建立知識圖譜。
createGraph(chunks: GraphChunk[], embeddings: GraphEmbedding[]): void
參數參數 的直接連結
chunks:
GraphChunk[]
包含文字及 metadata 的文件分塊陣列
embeddings:
GraphEmbedding[]
與分塊對應的嵌入陣列
queryquery 的直接連結
執行結合向量相似度及圖形遍歷的圖形搜尋。
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>
與分塊相關的額外 metadata
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,
})