Installation
Copy
npm install praisonai
Basic Usage
Copy
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
Copy
// 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
Copy
// 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
Copy
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
Copy
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
Copy
// 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
Copy
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
});

