Skip to Content

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

関連