Skip to main content

Installation

npm install praisonai

Basic Usage

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

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

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

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

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

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

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

import { createChunking } from 'praisonai';

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

Integration with Knowledge Base

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 }
  });
}