rag-example.ts
1 /** 2 * Knowledge Base (RAG) Example 3 * Demonstrates retrieval-augmented generation 4 */ 5 6 import { KnowledgeBase, createKnowledgeBase, Chunking } from 'praisonai'; 7 8 async function main() { 9 // Create knowledge base 10 const kb = createKnowledgeBase(); 11 12 // Add documents 13 const documents = [ 14 { 15 id: 'ts-intro', 16 content: 'TypeScript is a strongly typed programming language that builds on JavaScript, giving you better tooling at any scale.', 17 metadata: { category: 'introduction', language: 'typescript' } 18 }, 19 { 20 id: 'ts-types', 21 content: 'TypeScript adds optional static typing and class-based object-oriented programming to the language.', 22 metadata: { category: 'features', language: 'typescript' } 23 }, 24 { 25 id: 'ts-benefits', 26 content: 'Benefits of TypeScript include catching errors early, better IDE support, and improved code maintainability.', 27 metadata: { category: 'benefits', language: 'typescript' } 28 }, 29 { 30 id: 'js-intro', 31 content: 'JavaScript is a lightweight, interpreted programming language with first-class functions.', 32 metadata: { category: 'introduction', language: 'javascript' } 33 } 34 ]; 35 36 for (const doc of documents) { 37 await kb.add(doc); 38 } 39 40 console.log('Documents added:', kb.size); 41 42 // Search 43 console.log('\n=== Search: "TypeScript benefits" ==='); 44 const results = await kb.search('TypeScript benefits', 3); 45 results.forEach(r => { 46 console.log(`Score: ${r.score.toFixed(2)} - ${r.document.content.substring(0, 50)}...`); 47 }); 48 49 // Build context 50 console.log('\n=== Context for LLM ==='); 51 const context = kb.buildContext(results); 52 console.log(context); 53 54 // Chunking example 55 console.log('\n=== Chunking Example ==='); 56 const chunker = new Chunking({ chunkSize: 100, overlap: 20 }); 57 const longText = 'This is a long document. '.repeat(20); 58 const chunks = chunker.chunk(longText); 59 console.log(`Chunked into ${chunks.length} pieces`); 60 } 61 62 main().catch(console.error);