OrkaJS
Orka.JS

RAG & Base de Connaissances

Construisez des systèmes Q&A intelligents avec la génération augmentée par récupération.

Le RAG combine la puissance de la recherche sémantique avec la génération LLM pour fournir des réponses précises et contextuelles basées sur vos propres données.

ORKA — RAG PIPELINE ARCHITECTURE
📝 User Question
Embedding
OpenAI text-embedding-3-small
Vector Search
knowledge.search(topK: 3)
chunk_1 (0.92)
chunk_2 (0.87)
chunk_3 (0.81)
Context Assembly
System Prompt + Retrieved Context + Question
LLM Generation
GPT-4o / Claude / Mistral
AskResult
answer: stringcontext: Chunk[]usage: TokenUsage
LLM
Vector DB
Processing

1. Créer une Base de Connaissances

Ingérez des documents avec chunking et embedding automatiques :

create-knowledge.ts
import { createOrka, OpenAIAdapter, MemoryVectorAdapter } from 'orkajs';
 
const orka = createOrka({
llm: new OpenAIAdapter({ apiKey: process.env.OPENAI_API_KEY! }),
vectorDB: new MemoryVectorAdapter(),
defaults: {
chunkSize: 500, // Chunk size in characters
chunkOverlap: 100, // Overlap between chunks
topK: 3, // Number of results by default
},
});
 
// Create a knowledge base
const result = await orka.knowledge.create({
name: 'faq',
source: [
{
text: 'Orka JS is a TypeScript framework for building production-ready LLM systems.',
metadata: { category: 'general' },
},
{
text: 'To install Orka JS, use npm install orkajs.',
metadata: { category: 'installation' },
},
{
text: 'Orka JS supports Pinecone, Qdrant, Chroma and an in-memory adapter.',
metadata: { category: 'features' },
},
],
});
 
console.log(`Base created: ${result.documentCount} documents, ${result.chunkCount} chunks`);

2. Recherche Sémantique

Recherchez dans votre base de connaissances avec des requêtes en langage naturel :

semantic-search.ts
// Simple semantic search
const results = await orka.knowledge.search('faq', 'how to install', { topK: 2 });
 
for (const r of results) {
console.log(`[Score: ${r.score.toFixed(3)}] ${r.content}`);
console.log(` Metadata: ${JSON.stringify(r.metadata)}`);
}
 
// Search with metadata filters
const filtered = await orka.knowledge.search('faq', 'features', {
topK: 5,
filter: { category: 'features' },
});

3. Question avec RAG

Obtenez des réponses générées par IA basées sur votre base de connaissances :

ask-rag.ts
// Question with RAG
const answer = await orka.ask({
knowledge: 'faq',
question: 'Which vector databases are supported ?',
includeContext: true, // Include sources in the response
systemPrompt: 'You are a technical assistant. Respond concisely.',
temperature: 0.3,
});
 
console.log(`Answer: ${answer.answer}`);
console.log(`Tokens: ${answer.usage.totalTokens}`);
console.log(`Latency: ${answer.latencyMs}ms`);
 
// Display used sources
if (answer.context) {
console.log('Sources:');
for (const source of answer.context) {
console.log(` - [${source.score.toFixed(2)}] ${source.content.slice(0, 80)}...`);
}
}

4. Exemple Complet

rag-complete.ts
import { createOrka, OpenAIAdapter, MemoryVectorAdapter } from 'orkajs';
 
async function main() {
const orka = createOrka({
llm: new OpenAIAdapter({ apiKey: process.env.OPENAI_API_KEY! }),
vectorDB: new MemoryVectorAdapter(),
defaults: { chunkSize: 500, chunkOverlap: 100, topK: 3 },
});
 
console.log('📚 Creating the knowledge base......');
 
await orka.knowledge.create({
name: 'docs',
source: [
{ text: 'Orka JS is a TypeScript framework for LLM systems.', metadata: { topic: 'intro' } },
{ text: 'Installation: npm install orkajs', metadata: { topic: 'setup' } },
{ text: 'Supported providers: OpenAI, Anthropic, Mistral, Ollama.', metadata: { topic: 'providers' } },
{ text: 'Vector databases: Pinecone, Qdrant, Chroma, in-memory.', metadata: { topic: 'vectordb' } },
],
});
 
console.log('🔍 Semantic search...');
const searchResults = await orka.knowledge.search('docs', 'how to install', { topK: 2 });
 
for (const r of searchResults) {
console.log(` - [${r.score.toFixed(3)}] ${r.content}`);
}
 
console.log('\n💬 Question with RAG...');
const answer = await orka.ask({
knowledge: 'docs',
question: 'Which LLM providers are supported?',
includeContext: true,
});
 
console.log(`Answer: ${answer.answer}`);
console.log(`Tokens: ${answer.usage.totalTokens}, Latency: ${answer.latencyMs}ms`);
 
if (answer.context) {
console.log(`Sources used: ${answer.context.length}`);
}
 
// Nettoyage
await orka.knowledge.delete('docs');
}
 
main().catch(console.error);

Fonctionnalités Clés

🔄 Chunking Automatique

Les documents sont automatiquement découpés en chunks optimaux avec taille et overlap configurables

🎯 Recherche Sémantique

Trouvez du contenu pertinent basé sur le sens, pas seulement les mots-clés

📊 Filtrage par Metadata

Filtrez les résultats de recherche par champs de métadonnées personnalisés

📝 Attribution des Sources

Obtenez les sources exactes utilisées pour générer chaque réponse