メインコンテンツへ移動

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への直接リンク

ドキュメントチャンクとその埋め込みからナレッジグラフを作成します。

createGraph(chunks: GraphChunk[], embeddings: GraphEmbedding[]): void

パラメーター
パラメーターへの直接リンク

chunks:

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

embeddings:

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

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