Skip to main content
Mastra v1 is coming in January 2026. Get ahead by starting new projects with the beta or upgrade your existing project today.

MDocument

The MDocument class processes documents for RAG applications. The main methods are .chunk() and .extractMetadata().

ConstructorDirect link to Constructor

docs:

Array<{ text: string, metadata?: Record<string, any> }>
Array of document chunks with their text content and optional metadata

type:

'text' | 'html' | 'markdown' | 'json' | 'latex'
Type of document content

Static MethodsDirect link to Static Methods

fromText()Direct link to fromText()

Creates a document from plain text content.

static fromText(text: string, metadata?: Record<string, any>): MDocument

fromHTML()Direct link to fromHTML()

Creates a document from HTML content.

static fromHTML(html: string, metadata?: Record<string, any>): MDocument

fromMarkdown()Direct link to fromMarkdown()

Creates a document from Markdown content.

static fromMarkdown(markdown: string, metadata?: Record<string, any>): MDocument

fromJSON()Direct link to fromJSON()

Creates a document from JSON content.

static fromJSON(json: string, metadata?: Record<string, any>): MDocument

Instance MethodsDirect link to Instance Methods

chunk()Direct link to chunk()

Splits document into chunks and optionally extracts metadata.

async chunk(params?: ChunkParams): Promise<Chunk[]>

See chunk() reference for detailed options.

getDocs()Direct link to getDocs()

Returns array of processed document chunks.

getDocs(): Chunk[]

getText()Direct link to getText()

Returns array of text strings from chunks.

getText(): string[]

getMetadata()Direct link to getMetadata()

Returns array of metadata objects from chunks.

getMetadata(): Record<string, any>[]

extractMetadata()Direct link to extractMetadata()

Extracts metadata using specified extractors. See ExtractParams reference for details.

async extractMetadata(params: ExtractParams): Promise<MDocument>

ExamplesDirect link to Examples

import { MDocument } from "@mastra/rag";

// Create document from text
const doc = MDocument.fromText("Your content here");

// Split into chunks with metadata extraction
const chunks = await doc.chunk({
strategy: "markdown",
headers: [
["#", "title"],
["##", "section"],
],
extract: {
summary: true, // Extract summaries with default settings
keywords: true, // Extract keywords with default settings
},
});

// Get processed chunks
const docs = doc.getDocs();
const texts = doc.getText();
const metadata = doc.getMetadata();