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