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,
},
});
パラメータ
vectorStoreName:
string
クエリするベクトルストアの名前
indexName:
string
ベクトルストア内のインデックスの名前
model:
EmbeddingModel
ベクトル検索に使用する埋め込みモデル
enableFilter?:
boolean
= false
メタデータに基づく結果のフィルタリングを有効にする
includeSources?:
boolean
= true
結果に完全な取得オブジェクトを含める
graphOptions?:
GraphOptions
= デフォルトのグラフオプション
グラフベースの検索のための設定
description?:
string
ツールのカスタム説明。デフォルトでは:'ナレッジベース内の情報間の関係にアクセスして分析し、接続やパターンに関する複雑な質問に答える'
GraphOptions
dimension?:
number
= 1536
埋め込みベクトルの次元
threshold?:
number
= 0.7
ノード間のエッジを作成するための類似度しきい値(0-1)
randomWalkSteps?:
number
= 100
グラフ走査のためのランダムウォークのステップ数
restartProb?:
number
= 0.15
クエリノードからランダムウォークを再開する確率
戻り値
このツールは以下を含むオブジェクトを返します:
relevantContext:
string
グラフベースのランキングを使用して取得された、最も関連性の高いドキュメントチャンクからの結合テキスト
sources:
QueryResult[]
完全な検索結果オブジェクトの配列。各オブジェクトには、元のドキュメント、チャンク、および類似度スコアを参照するために必要なすべての情報が含まれています。
QueryResultオブジェクトの構造
{
id: string; // ユニークなチャンク/ドキュメント識別子
metadata: any; // すべてのメタデータフィールド(ドキュメントIDなど)
vector: number[]; // 埋め込みベクトル(利用可能な場合)
score: number; // この検索の類似度スコア
document: string; // 完全なチャンク/ドキュメントテキスト(利用可能な場合)
}
デフォルトツールの説明
デフォルトの説明は以下に重点を置いています:
- ドキュメント間の関係性の分析
- パターンやつながりの発見
- 複雑なクエリへの回答
応用例
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",
});
この例では、関係性分析という基本的な目的を維持しつつ、特定のユースケースに合わせてツールの説明をカスタマイズする方法を示しています。