ExtractParams
ExtractParams configure l'extraction de métadonnées à partir de chunks de documents au moyen d'une analyse par LLM.
ExempleLien direct vers Exemple
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"
// }
ParamètresLien direct vers Paramètres
Le paramètre extract accepte les champs suivants :
title?:
boolean | TitleExtractorsArgs
Active l'extraction du titre. Définissez la valeur sur true pour utiliser les paramètres par défaut, ou fournissez une configuration personnalisée.
summary?:
boolean | SummaryExtractArgs
Active l'extraction du résumé. Définissez la valeur sur true pour utiliser les paramètres par défaut, ou fournissez une configuration personnalisée.
questions?:
boolean | QuestionAnswerExtractArgs
Active la génération de questions. Définissez la valeur sur true pour utiliser les paramètres par défaut, ou fournissez une configuration personnalisée.
keywords?:
boolean | KeywordExtractArgs
Active l'extraction des mots-clés. Définissez la valeur sur true pour utiliser les paramètres par défaut, ou fournissez une configuration personnalisée.
schema?:
SchemaExtractArgs
Active l'extraction structurée des métadonnées à l'aide d'un schéma Zod.
Arguments des extracteursLien direct vers Arguments des extracteurs
TitleExtractorsArgsLien direct vers titleextractorsargs
llm?:
MastraLanguageModel
Modèle de langage AI SDK à utiliser pour l'extraction du titre
nodes?:
number
Nombre de nœuds de titre à extraire
nodeTemplate?:
string
Modèle de prompt personnalisé pour extraire les nœuds de titre. Doit inclure l'espace réservé {context}
combineTemplate?:
string
Modèle de prompt personnalisé pour combiner les titres. Doit inclure l'espace réservé {context}
SummaryExtractArgsLien direct vers summaryextractargs
llm?:
MastraLanguageModel
Modèle de langage AI SDK à utiliser pour l'extraction du résumé
summaries?:
('self' | 'prev' | 'next')[]
Liste des types de résumés à générer. Peut uniquement inclure 'self' (chunk actuel), 'prev' (chunk précédent) ou 'next' (chunk suivant)
promptTemplate?:
string
Modèle de prompt personnalisé pour générer le résumé. Doit inclure l'espace réservé {context}
QuestionAnswerExtractArgsLien direct vers questionanswerextractargs
llm?:
MastraLanguageModel
Modèle de langage AI SDK à utiliser pour générer les questions
questions?:
number
Nombre de questions à générer
promptTemplate?:
string
Modèle de prompt personnalisé pour générer les questions. Doit inclure les espaces réservés {context} et {numQuestions}
embeddingOnly?:
boolean
Si la valeur est true, génère uniquement des embeddings, sans questions
KeywordExtractArgsLien direct vers keywordextractargs
llm?:
MastraLanguageModel
Modèle de langage AI SDK à utiliser pour l'extraction des mots-clés
keywords?:
number
Nombre de mots-clés à extraire
promptTemplate?:
string
Modèle de prompt personnalisé pour extraire les mots-clés. Doit inclure les espaces réservés {context} et {maxKeywords}
SchemaExtractArgsLien direct vers schemaextractargs
schema:
ZodType
Schéma Zod définissant la structure des données à extraire.
llm?:
MastraLanguageModel
Modèle de langage AI SDK à utiliser pour l'extraction.
instructions?:
string
Instructions indiquant au LLM les éléments à extraire.
metadataKey?:
string
Clé sous laquelle imbriquer les résultats de l'extraction. En cas d'omission, les résultats sont répartis dans l'objet de métadonnées.
Exemple avancéLien direct vers Exemple avancé
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}',
},
// Schema extraction with Zod
schema: {
schema: z.object({
productName: z.string(),
category: z.enum(['electronics', 'clothing']),
}),
instructions: 'Extract product information.',
metadataKey: 'product',
},
},
})
// 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",
// product: {
// productName: "Neural Net 2000",
// category: "electronics"
// }
// }
Regroupement de documents pour l'extraction du titreLien direct vers Regroupement de documents pour l'extraction du titre
Lorsque vous utilisez TitleExtractor, vous pouvez regrouper plusieurs chunks pour l'extraction du titre en indiquant un docId commun dans le champ metadata de chaque chunk. Tous les chunks ayant le même docId recevront le même titre extrait. Si aucun docId n'est défini, chaque chunk est traité comme un document distinct pour l'extraction du titre.
Exemple :
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 })
// The first two chunks will share a title, while the third chunk will be assigned a separate title.