ExtractParams
ExtractParamsは、LLM解析を用いてドキュメントチャンクからメタデータを抽出する設定を行います。
例
import { MDocument } from "@mastra/rag";
const doc = MDocument.fromText(text);
const chunks = await doc.chunk({
extract: {
title: true, // Extract titles using default settings
summary: true, // Generate summaries using default settings
keywords: true, // Extract keywords using default settings
},
});
// Example output:
// chunks[0].metadata = {
// documentTitle: "AI Systems Overview",
// sectionSummary: "Overview of artificial intelligence concepts and applications",
// excerptKeywords: "KEYWORDS: AI, machine learning, algorithms"
// }
パラメーター
extract
パラメーターは以下のフィールドを受け付けます:
title?:
boolean | TitleExtractorsArgs
タイトル抽出を有効にします。デフォルト設定の場合は true を指定するか、カスタム設定を指定してください。
summary?:
boolean | SummaryExtractArgs
要約抽出を有効にします。デフォルト設定の場合は true を指定するか、カスタム設定を指定してください。
questions?:
boolean | QuestionAnswerExtractArgs
質問生成を有効にします。デフォルト設定の場合は true を指定するか、カスタム設定を指定してください。
keywords?:
boolean | KeywordExtractArgs
キーワード抽出を有効にします。デフォルト設定の場合は true を指定するか、カスタム設定を指定してください。
抽出器の引数
TitleExtractorsArgs
llm?:
MastraLanguageModel
タイトル抽出に使用するAI SDK言語モデル
nodes?:
number
抽出するタイトルノードの数
nodeTemplate?:
string
タイトルノード抽出用のカスタムプロンプトテンプレート。{context} プレースホルダーを含める必要があります
combineTemplate?:
string
タイトルを結合するためのカスタムプロンプトテンプレート。{context} プレースホルダーを含める必要があります
SummaryExtractArgs
llm?:
MastraLanguageModel
要約抽出に使用するAI SDK言語モデル
summaries?:
('self' | 'prev' | 'next')[]
生成する要約タイプのリスト。'self'(現在のチャンク)、'prev'(前のチャンク)、'next'(次のチャンク)のみ含めることができます
promptTemplate?:
string
要約生成用のカスタムプロンプトテンプレート。{context} プレースホルダーを含める必要があります
QuestionAnswerExtractArgs
llm?:
MastraLanguageModel
質問生成に使用するAI SDK言語モデル
questions?:
number
生成する質問の数
promptTemplate?:
string
質問生成用のカスタムプロンプトテンプレート。{context} と {numQuestions} の両方のプレースホルダーを含める必要があります
embeddingOnly?:
boolean
trueの場合、実際の質問を生成せず埋め込みのみを生成します
KeywordExtractArgs
llm?:
MastraLanguageModel
キーワード抽出に使用するAI SDK言語モデル
keywords?:
number
抽出するキーワードの数
promptTemplate?:
string
キーワード抽出用のカスタムプロンプトテンプレート。{context} と {maxKeywords} の両方のプレースホルダーを含める必要があります
高度な例
import { MDocument } from "@mastra/rag";
const doc = MDocument.fromText(text);
const chunks = await doc.chunk({
extract: {
// Title extraction with custom settings
title: {
nodes: 2, // Extract 2 title nodes
nodeTemplate: "Generate a title for this: {context}",
combineTemplate: "Combine these titles: {context}",
},
// Summary extraction with custom settings
summary: {
summaries: ["self"], // Generate summaries for current chunk
promptTemplate: "Summarize this: {context}",
},
// Question generation with custom settings
questions: {
questions: 3, // Generate 3 questions
promptTemplate: "Generate {numQuestions} questions about: {context}",
embeddingOnly: false,
},
// Keyword extraction with custom settings
keywords: {
keywords: 5, // Extract 5 keywords
promptTemplate: "Extract {maxKeywords} key terms from: {context}",
},
},
});
// Example output:
// chunks[0].metadata = {
// documentTitle: "AI in Modern Computing",
// sectionSummary: "Overview of AI concepts and their applications in computing",
// questionsThisExcerptCanAnswer: "1. What is machine learning?\n2. How do neural networks work?",
// excerptKeywords: "1. Machine learning\n2. Neural networks\n3. Training data"
// }
タイトル抽出のためのドキュメントグループ化
TitleExtractor
を使用する際、各チャンクの metadata
フィールドに共通の docId
を指定することで、複数のチャンクをまとめてタイトル抽出することができます。同じ docId
を持つすべてのチャンクは、同じ抽出タイトルを受け取ります。docId
が設定されていない場合、各チャンクはタイトル抽出のために個別のドキュメントとして扱われます。
例:
import { MDocument } from "@mastra/rag";
const doc = new MDocument({
docs: [
{ text: "chunk 1", metadata: { docId: "docA" } },
{ text: "chunk 2", metadata: { docId: "docA" } },
{ text: "chunk 3", metadata: { docId: "docB" } },
],
type: "text",
});
await doc.extractMetadata({ title: true });
// 最初の2つのチャンクは同じタイトルを共有し、3つ目のチャンクには別のタイトルが割り当てられます。