Skip to main content
PraisonAI TypeScript provides a Knowledge Base for RAG (Retrieval Augmented Generation).

Installation

npm install praisonai

Basic Usage

import { KnowledgeBase, createKnowledgeBase } from 'praisonai';

const kb = createKnowledgeBase();

// Add documents
await kb.add({ id: 'doc1', content: 'TypeScript is a typed superset of JavaScript.' });
await kb.add({ id: 'doc2', content: 'React is a JavaScript library for building UIs.' });

// Search
const results = await kb.search('TypeScript');
console.log(results[0].document.content);

Adding Documents

// Single document
await kb.add({
  id: 'doc1',
  content: 'Document content here',
  metadata: { author: 'John', category: 'tech' }
});

// Batch add
await kb.addBatch([
  { id: 'doc1', content: 'First document' },
  { id: 'doc2', content: 'Second document' },
  { id: 'doc3', content: 'Third document' }
]);

Searching

// Basic search
const results = await kb.search('query');

// Limit results
const topResults = await kb.search('query', 3);

// Access results
for (const result of results) {
  console.log(`Score: ${result.score}`);
  console.log(`Content: ${result.document.content}`);
}

Building Context for RAG

const results = await kb.search('user question');
const context = kb.buildContext(results);

// Use context in prompt
const prompt = `
Context:
${context}

Question: ${userQuestion}
`;

With Context Agent

import { ContextAgent, createKnowledgeBase } from 'praisonai';

const kb = createKnowledgeBase();
await kb.add({ id: 'doc1', content: 'Important information...' });

const agent = new ContextAgent({
  instructions: 'You are a helpful assistant.',
  knowledgeBase: kb
});

const response = await agent.chat('What do you know?');
console.log(response.text);
console.log('Used context:', response.context);

Document Operations

// Get document
const doc = kb.get('doc1');

// Delete document
kb.delete('doc1');

// List all documents
const allDocs = kb.list();

// Get count
console.log('Documents:', kb.size);

// Clear all
kb.clear();

Custom Embedding Provider

import { KnowledgeBase, EmbeddingProvider } from 'praisonai';

const customEmbedder: EmbeddingProvider = {
  async embed(text: string): Promise<number[]> {
    // Your embedding logic
    return await callEmbeddingAPI(text);
  },
  async embedBatch(texts: string[]): Promise<number[][]> {
    return Promise.all(texts.map(t => this.embed(t)));
  }
};

const kb = new KnowledgeBase({
  embeddingProvider: customEmbedder,
  similarityThreshold: 0.7,
  maxResults: 5
});