/ examples / js / knowledge / rag-example.ts
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);