> ## Documentation Index
> Fetch the complete documentation index at: https://praison.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Chunking

> Text chunking utilities for RAG and document processing

Split long documents into chunks for RAG pipelines and knowledge bases.

```mermaid theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
graph LR
    Doc([Document]) --> Chunker[Chunking]
    Chunker --> Chunks[Chunks]

    classDef agent fill:#8B0000,stroke:#7C90A0,color:#fff
    classDef tool fill:#189AB4,stroke:#7C90A0,color:#fff

    class Chunker agent
    class Doc,Chunks tool
    classDef agent fill:#8B0000,color:#fff
    classDef tool fill:#189AB4,color:#fff
```

## Quick Start

<Steps>
  <Step title="Simple Usage">
    ```bash theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
    npm install praisonai
    ```

    ```typescript theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
    import { Chunking } from 'praisonai';

    const chunker = new Chunking({ chunkSize: 500, overlap: 50 });
    const chunks = chunker.chunk('Your long text here...');
    ```
  </Step>

  <Step title="With Configuration">
    ```typescript theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
    const chunker = new Chunking({ chunkSize: 500, overlap: 50, strategy: 'sentence' });
    const chunks = chunker.chunkBySentence('First sentence. Second sentence.');
    ```
  </Step>
</Steps>

***

## Basic Usage

```typescript theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
import { Chunking } from 'praisonai';

const chunker = new Chunking({ chunkSize: 500, overlap: 50 });
const chunks = chunker.chunk('Your long text here...');

chunks.forEach(chunk => {
  console.log(`Chunk ${chunk.index}: ${chunk.content.substring(0, 50)}...`);
});
```

## Chunking Strategies

### By Size

```typescript theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
import { Chunking } from 'praisonai';

const chunker = new Chunking({
  chunkSize: 500,
  overlap: 50,
  strategy: 'size'
});

const text = 'A'.repeat(1500);
const chunks = chunker.chunkBySize(text);
console.log(`Created ${chunks.length} chunks`);
```

### By Sentence

```typescript theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
import { Chunking } from 'praisonai';

const chunker = new Chunking({ strategy: 'sentence' });

const text = 'First sentence. Second sentence. Third sentence.';
const chunks = chunker.chunkBySentence(text);

chunks.forEach(chunk => {
  console.log(chunk.content);
});
```

### By Paragraph

```typescript theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
import { Chunking } from 'praisonai';

const chunker = new Chunking({ strategy: 'paragraph' });

const text = `Paragraph one.

Paragraph two.

Paragraph three.`;

const chunks = chunker.chunkByParagraph(text);
console.log(`Found ${chunks.length} paragraphs`);
```

### Semantic Chunking

```typescript theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
import { Chunking } from 'praisonai';

const chunker = new Chunking({ strategy: 'semantic' });

const text = `# Header 1
Content under header 1.

# Header 2
Content under header 2.`;

const chunks = chunker.chunkBySemantic(text);
```

## Chunk Structure

```typescript theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
interface Chunk {
  content: string;      // Chunk text content
  index: number;        // Chunk index
  startOffset: number;  // Start position in original
  endOffset: number;    // End position in original
  metadata?: Record<string, any>;
}
```

## Merge Small Chunks

```typescript theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
import { Chunking } from 'praisonai';

const chunker = new Chunking({ strategy: 'sentence' });
const chunks = chunker.chunkBySentence(text);

// Merge chunks smaller than 100 characters
const merged = chunker.mergeSmallChunks(chunks, 100);
```

## Factory Function

```typescript theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
import { createChunking } from 'praisonai';

const chunker = createChunking({
  chunkSize: 1000,
  overlap: 100,
  strategy: 'size'
});
```

## Integration with Knowledge Base

```typescript theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
import { KnowledgeBase, Chunking } from 'praisonai';

const chunker = new Chunking({ chunkSize: 500 });
const kb = new KnowledgeBase();

// Chunk a document and add to knowledge base
const document = 'Your long document text...';
const chunks = chunker.chunk(document);

for (const chunk of chunks) {
  await kb.add({
    id: `doc_chunk_${chunk.index}`,
    content: chunk.content,
    metadata: { startOffset: chunk.startOffset }
  });
}
```

## Related

<CardGroup cols={2}>
  <Card title="Chunking CLI" icon="terminal" href="/docs/js/chunking-cli">
    CLI knowledge commands
  </Card>

  <Card title="Knowledge Base" icon="book" href="/docs/js/knowledge-base">
    Store chunked documents
  </Card>

  <Card title="RAG Agent" icon="robot" href="/docs/js/rag-agent">
    Retrieval workflows
  </Card>
</CardGroup>
