> Discover all available pages from the documentation index: https://mastra.zisheng.pro/zh-HK/llms.txt # createDocumentChunkerTool() `createDocumentChunkerTool()` 函式會建立一個 Tool,將文件分割成較小區塊,以便高效處理及擷取。它支援不同的分塊策略及可設定參數。 ## 基本用法 ```typescript import { createDocumentChunkerTool, MDocument } from '@mastra/rag' const document = new MDocument({ text: 'Your document content here...', metadata: { source: 'user-manual' }, }) const chunker = createDocumentChunkerTool({ doc: document, params: { strategy: 'recursive', size: 512, overlap: 50, separator: '\n', }, }) const { chunks } = await chunker.execute() ``` ## 參數 **doc** (`MDocument`): 要分塊的文件 **params** (`ChunkParams`): 分塊的設定參數 (Default: `預設分塊參數`) ### `ChunkParams` **strategy** (`'recursive'`): 要使用的分塊策略 (Default: `'recursive'`) **size** (`number`): 每個區塊的目標大小(以 token/字元計算) (Default: `512`) **overlap** (`number`): 區塊之間重疊的 token/字元數目 (Default: `50`) **separator** (`string`): 用作區塊分隔符的字元 (Default: `'\n'`) ## 傳回值 **chunks** (`DocumentChunk[]`): 包含內容及中繼資料的文件區塊陣列 ## 使用自訂參數的範例 ```typescript const technicalDoc = new MDocument({ text: longDocumentContent, metadata: { type: 'technical', version: '1.0', }, }) const chunker = createDocumentChunkerTool({ doc: technicalDoc, params: { strategy: 'recursive', size: 1024, // Larger chunks overlap: 100, // More overlap separator: '\n\n', // Split on double newlines }, }) const { chunks } = await chunker.execute() // Process the chunks chunks.forEach((chunk, index) => { console.log(`Chunk ${index + 1} length: ${chunk.content.length}`) }) ``` ## Tool 詳情 分塊器會建立為具備以下屬性的 Mastra Tool: - **Tool ID**:`Document Chunker {strategy} {size}` - **描述**:`Chunks document using {strategy} strategy with size {size} and {overlap} overlap` - **輸入結構**:空白物件(毋須額外輸入) - **輸出結構**:包含區塊陣列的物件 ## 相關內容 - [MDocument](https://mastra.zisheng.pro/zh-HK/reference/rag/document) - [createVectorQueryTool](https://mastra.zisheng.pro/zh-HK/reference/tools/vector-query-tool)