> Discover all available pages from the documentation index: https://mastra.zisheng.pro/zh-HK/llms.txt # GraphRAG `GraphRAG` 類別實作以圖形為基礎的檢索增強生成方法。它會從文件分塊建立知識圖譜,當中節點代表文件,邊則代表語意關係,既可直接進行相似度配對,亦可透過圖形遍歷找出相關內容。 ## 基本用法 ```typescript 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`): 嵌入向量的維度 (Default: `1536`) **threshold** (`number`): 在節點之間建立邊的相似度閾值(0 至 1) (Default: `0.7`) ## 方法 ### `createGraph` 從文件分塊及其嵌入建立知識圖譜。 ```typescript createGraph(chunks: GraphChunk[], embeddings: GraphEmbedding[]): void ``` #### 參數 **chunks** (`GraphChunk[]`): 包含文字及 metadata 的文件分塊陣列 **embeddings** (`GraphEmbedding[]`): 與分塊對應的嵌入陣列 ### query 執行結合向量相似度及圖形遍歷的圖形搜尋。 ```typescript query({ query, topK = 10, randomWalkSteps = 100, restartProb = 0.15 }: { query: number[]; topK?: number; randomWalkSteps?: number; restartProb?: number; }): RankedNode[] ``` #### 參數 **query** (`number[]`): 查詢嵌入向量 **topK** (`number`): 要傳回的結果數目 (Default: `10`) **randomWalkSteps** (`number`): 隨機遊走的步數 (Default: `100`) **restartProb** (`number`): 從查詢節點重新開始遊走的概率 (Default: `0.15`) #### 傳回值 傳回 `RankedNode` 物件陣列,每個節點包含: **id** (`string`): 節點的唯一識別碼 **content** (`string`): 文件分塊的文字內容 **metadata** (`Record`): 與分塊相關的額外 metadata **score** (`number`): 圖形遍歷得出的綜合相關度分數 ## 進階範例 ```typescript 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, }) ``` ## 相關內容 - [createGraphRAGTool](https://mastra.zisheng.pro/zh-HK/reference/tools/graph-rag-tool)