> Discover all available pages from the documentation index: https://mastra.zisheng.pro/fr/llms.txt # ExtractParams ExtractParams configure l'extraction de métadonnées à partir de chunks de documents au moyen d'une analyse par LLM. ## Exemple ```typescript 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è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 extracteurs ### `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} ### `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} ### `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 ### `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} ### `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é ```typescript 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 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 :** ```ts 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. ```