GraphRAG
GraphRAG
クラスは、検索拡張生成に対するグラフベースのアプローチを実装しています。ノードが文書を表し、エッジが意味的な関係を表す文書チャンクから知識グラフを作成し、直接的な類似性マッチングとグラフトラバーサルを通じた関連コンテンツの発見を可能にします。
基本的な使用法
import { GraphRAG } from "@mastra/rag";
const graphRag = new GraphRAG({
dimension: 1536,
threshold: 0.7,
});
// チャンクと埋め込みからグラフを作成
graphRag.createGraph(documentChunks, embeddings);
// 埋め込みでグラフをクエリ
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, // より厳しい類似性の閾値
});
// チャンクと埋め込みからグラフを作成
graphRag.createGraph(documentChunks, embeddings);
// カスタムパラメータでクエリ
const results = await graphRag.query({
query: queryEmbedding,
topK: 5,
randomWalkSteps: 200,
restartProb: 0.2,
});