createGraphRAGTool()
createGraphRAGTool()
は、ドキュメント間のセマンティックな関係のグラフを構築することでRAGを強化するツールを作成します。内部的には GraphRAG
システムを利用してグラフベースの検索を提供し、直接的な類似性だけでなく、関連する接続関係を通じて適切なコンテンツを見つけ出します。
使用例
import { openai } from "@ai-sdk/openai";
import { createGraphRAGTool } from "@mastra/rag";
const graphTool = createGraphRAGTool({
vectorStoreName: "pinecone",
indexName: "docs",
model: openai.embedding("text-embedding-3-small"),
graphOptions: {
dimension: 1536,
threshold: 0.7,
randomWalkSteps: 100,
restartProb: 0.15,
},
});
パラメーター
💡
パラメーター要件: ほとんどのフィールドは作成時にデフォルト値として設定できます。
一部のフィールドは、実行時のコンテキストや入力によって上書きすることができます。
必須フィールドが作成時にも実行時にも指定されていない場合、エラーが発生します。
model
、id
、description
は作成時のみ設定可能であることに注意してください。
id?:
string
ツールのカスタムID。デフォルト: 'GraphRAG {vectorStoreName} {indexName} Tool'。(作成時のみ設定可能)
description?:
string
ツールのカスタム説明。デフォルト: 'ナレッジベース内の情報間の関係性にアクセスし、分析することで、接続やパターンに関する複雑な質問に答えます。'(作成時のみ設定可能)
vectorStoreName:
string
クエリを実行するベクトルストアの名前。(作成時に設定、または実行時に上書き可能)
indexName:
string
ベクトルストア内のインデックス名。(作成時に設定、または実行時に上書き可能)
model:
EmbeddingModel
ベクトル検索に使用する埋め込みモデル。(作成時のみ設定可能)
enableFilter?:
boolean
= false
メタデータに基づく結果のフィルタリングを有効にします。(作成時のみ設定可能ですが、実行時コンテキストでフィルターが指定された場合は自動的に有効になります)
includeSources?:
boolean
= true
結果に完全なリトリーバルオブジェクトを含めます。(作成時に設定、または実行時に上書き可能)
graphOptions?:
GraphOptions
= Default graph options
グラフベースリトリーバルの設定
GraphOptions
dimension?:
number
= 1536
埋め込みベクトルの次元数
threshold?:
number
= 0.7
ノード間のエッジ作成のための類似度しきい値(0-1)
randomWalkSteps?:
number
= 100
グラフ探索のためのランダムウォークのステップ数。(作成時に設定、または実行時に上書き可能)
restartProb?:
number
= 0.15
クエリノードからランダムウォークを再開する確率。(作成時に設定、または実行時に上書き可能)
戻り値
このツールは以下のオブジェクトを返します:
relevantContext:
string
グラフベースのランキングを用いて取得した、最も関連性の高いドキュメントチャンクから結合されたテキスト
sources:
QueryResult[]
完全な検索結果オブジェクトの配列。各オブジェクトには、元のドキュメント、チャンク、および類似度スコアを参照するために必要なすべての情報が含まれています。
QueryResult オブジェクトの構造
{
id: string; // Unique chunk/document identifier
metadata: any; // All metadata fields (document ID, etc.)
vector: number[]; // Embedding vector (if available)
score: number; // Similarity score for this retrieval
document: string; // Full chunk/document text (if available)
}
デフォルトツールの説明
デフォルトの説明は以下に重点を置いています:
- ドキュメント間の関係性の分析
- パターンやつながりの発見
- 複雑なクエリへの回答
応用例
const graphTool = createGraphRAGTool({
vectorStoreName: "pinecone",
indexName: "docs",
model: openai.embedding("text-embedding-3-small"),
graphOptions: {
dimension: 1536,
threshold: 0.8, // Higher similarity threshold
randomWalkSteps: 200, // More exploration steps
restartProb: 0.2, // Higher restart probability
},
});
カスタム説明付きの例
const graphTool = createGraphRAGTool({
vectorStoreName: "pinecone",
indexName: "docs",
model: openai.embedding("text-embedding-3-small"),
description:
"Analyze document relationships to find complex patterns and connections in our company's historical data",
});
この例では、関係性分析という基本的な目的を維持しつつ、特定のユースケースに合わせてツールの説明をカスタマイズする方法を示しています。
例:ランタイムコンテキストの使用
const graphTool = createGraphRAGTool({
vectorStoreName: "pinecone",
indexName: "docs",
model: openai.embedding("text-embedding-3-small"),
});
ランタイムコンテキストを使用する場合、必要なパラメータは実行時にランタイムコンテキストを通じて指定します:
const runtimeContext = new RuntimeContext<{
vectorStoreName: string;
indexName: string;
topK: number;
filter: any;
}>();
runtimeContext.set("vectorStoreName", "my-store");
runtimeContext.set("indexName", "my-index");
runtimeContext.set("topK", 5);
runtimeContext.set("filter", { category: "docs" });
runtimeContext.set("randomWalkSteps", 100);
runtimeContext.set("restartProb", 0.15);
const response = await agent.generate(
"Find documentation from the knowledge base.",
{
runtimeContext,
},
);
ランタイムコンテキストの詳細については、以下をご覧ください: