Skip to Content

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(chunks: GraphChunk[], embeddings: GraphEmbedding[]): void

パラメータ

chunks:

GraphChunk[]
テキストとメタデータを含むドキュメントチャンクの配列

embeddings:

GraphEmbedding[]
チャンクに対応する埋め込みの配列

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

関連