跳至主要內容

createDocumentChunkerTool()

createDocumentChunkerTool() 函式會建立一個 Tool,將文件分割成較小的區塊,以便有效率地處理與擷取。此函式支援不同的分塊策略與可設定的參數。

基本用法
「基本用法」的直接連結

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
= 預設分塊參數
分塊的設定參數

ChunkParams
「chunkparams」的直接連結

strategy?:

'recursive'
= 'recursive'
要使用的分塊策略

size?:

number
= 512
每個區塊的目標 token/字元數

overlap?:

number
= 50
相鄰區塊之間重疊的 token/字元數

separator?:

string
= '\n'
作為區塊分隔符號的字元

回傳值
「回傳值」的直接連結

chunks:

DocumentChunk[]
包含內容與中繼資料的文件區塊陣列

使用自訂參數的範例
「使用自訂參數的範例」的直接連結

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 詳細資訊
「Tool 詳細資訊」的直接連結

Chunker 會建立為具備下列屬性的 Mastra Tool:

  • Tool IDDocument Chunker {strategy} {size}
  • 描述Chunks document using {strategy} strategy with size {size} and {overlap} overlap
  • 輸入 schema:空物件(不需要額外輸入)
  • 輸出 schema:包含 chunks 陣列的物件