> Discover all available pages from the documentation index: https://mastra.zisheng.pro/zh-TW/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[]`): 包含文字與中繼資料的文件區塊陣列 **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`): 與區塊相關聯的其他中繼資料 **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-TW/reference/tools/graph-rag-tool)