.chunk()
La fonction .chunk() divise les documents en segments plus petits au moyen de stratégies et d'options.
ExempleLien direct vers Exemple
import { MDocument } from '@mastra/rag'
const doc = MDocument.fromMarkdown(`
# Introduction
This is a sample document that we want to split into chunks.
## Section 1
Here is the first section with some content.
## Section 2
Here is another section with different content.
`)
// Basic chunking with defaults
const chunks = await doc.chunk()
// Markdown-specific chunking with header extraction
const chunksWithMetadata = await doc.chunk({
strategy: 'markdown',
headers: [
['#', 'title'],
['##', 'section'],
],
extract: {
summary: true, // Extract summaries with default settings
keywords: true, // Extract keywords with default settings
},
})
ParamètresLien direct vers Paramètres
Les paramètres suivants sont disponibles pour toutes les stratégies de découpage. Chaque stratégie n'utilise que le sous-ensemble de paramètres adapté à son cas d'utilisation.
strategy?:
maxSize?:
overlap?:
lengthFunction?:
separatorPosition?:
addStartIndex?:
stripWhitespace?:
extract?:
Consultez la référence d'ExtractParams pour plus de détails sur le paramètre extract.
Options propres aux stratégiesLien direct vers Options propres aux stratégies
Les options propres à une stratégie sont transmises comme paramètres de premier niveau avec le paramètre de stratégie. Par exemple :
// Character strategy example
const chunks = await doc.chunk({
strategy: 'character',
separator: '.', // Character-specific option
isSeparatorRegex: false, // Character-specific option
maxSize: 300, // general option
})
// Recursive strategy example
const chunks = await doc.chunk({
strategy: 'recursive',
separators: ['\n\n', '\n', ' '], // Recursive-specific option
language: 'markdown', // Recursive-specific option
maxSize: 500, // general option
})
// Sentence strategy example
const chunks = await doc.chunk({
strategy: 'sentence',
maxSize: 450, // Required for sentence strategy
minSize: 50, // Sentence-specific option
sentenceEnders: ['.'], // Sentence-specific option
fallbackToCharacters: false, // Sentence-specific option
})
// HTML strategy example
const chunks = await doc.chunk({
strategy: 'html',
headers: [
['h1', 'title'],
['h2', 'subtitle'],
], // HTML-specific option
})
// Markdown strategy example
const chunks = await doc.chunk({
strategy: 'markdown',
headers: [
['#', 'title'],
['##', 'section'],
], // Markdown-specific option
stripHeaders: true, // Markdown-specific option
})
// Semantic Markdown strategy example
const chunks = await doc.chunk({
strategy: 'semantic-markdown',
joinThreshold: 500, // Semantic Markdown-specific option
modelName: 'gpt-3.5-turbo', // Semantic Markdown-specific option
})
// Token strategy example
const chunks = await doc.chunk({
strategy: 'token',
encodingName: 'gpt2', // Token-specific option
modelName: 'gpt-3.5-turbo', // Token-specific option
maxSize: 1000, // general option
})
Les options décrites ci-dessous sont transmises directement au premier niveau de l'objet de configuration, et non imbriquées dans un objet d'options distinct.
CharacterLien direct vers Character
separators?:
isSeparatorRegex?:
RecursiveLien direct vers Recursive
separators?:
isSeparatorRegex?:
language?:
SentenceLien direct vers Sentence
maxSize:
minSize?:
targetSize?:
sentenceEnders?:
fallbackToWords?:
fallbackToCharacters?:
HTMLLien direct vers HTML
headers:
sections:
returnEachLine?:
Lorsque vous utilisez la stratégie HTML, toutes les options générales sont ignorées. Utilisez headers pour le découpage fondé sur les en-têtes ou sections pour celui fondé sur les sections. Si les deux sont utilisés, sections est ignoré.
MarkdownLien direct vers Markdown
headers?:
stripHeaders?:
returnEachLine?:
Lorsque vous utilisez l'option headers, la stratégie markdown ignore toutes les options générales et découpe le contenu selon la structure des en-têtes markdown. Pour utiliser avec markdown un découpage fondé sur la taille, omettez le paramètre headers.
Semantic MarkdownLien direct vers Semantic Markdown
joinThreshold?:
modelName?:
encodingName de tokenisation sous-jacent est utilisé.encodingName?:
modelName lorsqu'il est disponible.allowedSpecial?:
disallowedSpecial?:
TokenLien direct vers Token
encodingName?:
modelName?:
allowedSpecial?:
disallowedSpecial?:
JSONLien direct vers JSON
maxSize:
minSize?:
ensureAscii?:
convertLists?:
LatexLien direct vers Latex
La stratégie Latex utilise uniquement les options générales de découpage répertoriées ci-dessus. Elle fournit un découpage tenant compte de LaTeX et optimisé pour les documents mathématiques et universitaires.
Valeur de retourLien direct vers Valeur de retour
Renvoie une instance de MDocument contenant les documents découpés. Chaque segment comprend :
interface DocumentNode {
text: string
metadata: Record<string, any>
embedding?: number[]
}