OrkaJS
Orka.JS

Bases de Données Vectorielles

Apprenez à configurer et utiliser les bases de données vectorielles avec Orka AI pour la recherche sémantique et les applications RAG.

Qu'est-ce qu'une base de données vectorielle ?

Une base de données vectorielle stocke le texte sous forme de vecteurs numériques (embeddings) qui capturent le sens sémantique. Lors d'une recherche, elle trouve des documents avec un sens similaire, pas seulement des mots-clés correspondants. C'est le fondement du RAG (Retrieval-Augmented Generation).

Exemple : Rechercher "Comment authentifier les utilisateurs ?" trouvera des documents sur "connexion", "OAuth", "tokens JWT", etc. — même s'ils ne contiennent pas les mots exacts.

Adaptateurs Supportés

Orka AI supporte plusieurs backends de bases de données vectorielles. Tous les adaptateurs implémentent la même interface, vous pouvez donc passer de l'un à l'autre sans modifier votre code applicatif.

MemoryVectorAdapter

Store vectoriel en mémoire — aucune configuration requise

Intégré
import { createOrka, OpenAIAdapter, MemoryVectorAdapter } from 'orkajs';
 
const orka = createOrka({
llm: new OpenAIAdapter({ apiKey: process.env.OPENAI_API_KEY! }),
vectorDB: new MemoryVectorAdapter(),
});
 
// That's it! No external services needed.

Avantages

  • Zéro configuration — fonctionne immédiatement
  • Rapide pour petits datasets (<10k docs)
  • Parfait pour le développement et les tests

Inconvénients

  • Données perdues au redémarrage
  • Non adapté à la production
  • Limité à un seul processus

PineconeAdapter

Base de données vectorielle cloud entièrement managée avec fonctionnalités entreprise

Recommandé pour Production

npm install @pinecone-database/pinecone

import { createOrka, OpenAIAdapter, PineconeAdapter } from 'orkajs';
 
const orka = createOrka({
llm: new OpenAIAdapter({ apiKey: process.env.OPENAI_API_KEY! }),
vectorDB: new PineconeAdapter({
apiKey: process.env.PINECONE_API_KEY!,
indexHost: 'https://your-index-abc123.svc.pinecone.io',
}),
});

Étapes de configuration :

  1. 1. Créez un compte gratuit sur pinecone.io
  2. 2. Créez un index avec dimension 1536 (pour embeddings OpenAI) ou 384 (pour modèles plus petits)
  3. 3. Copiez votre clé API et l'URL de l'index
  4. 4. Ajoutez-les à vos variables d'environnement

Avantages

  • Entièrement managé — pas d'infrastructure
  • Scale à des milliards de vecteurs
  • SLA 99.99% de disponibilité
  • Filtrage de métadonnées intégré

Inconvénients

  • Nécessite un compte cloud
  • Coûts proportionnels à l'usage
  • Données stockées en externe

QdrantAdapter

Base de données vectorielle haute performance — auto-hébergée ou cloud

Option Auto-Hébergée

npm install @qdrant/js-client-rest

import { createOrka, OpenAIAdapter, QdrantAdapter } from 'orkajs';
 
const orka = createOrka({
llm: new OpenAIAdapter({ apiKey: process.env.OPENAI_API_KEY! }),
vectorDB: new QdrantAdapter({
url: 'http://localhost:6333', // Local Docker instance
// url: 'https://xyz.qdrant.io', // Or Qdrant Cloud
apiKey: process.env.QDRANT_API_KEY, // Optional for local
collectionName: 'my-knowledge-base', // Optional, defaults to 'orka'
}),
});

Démarrage rapide avec Docker :

docker run -p 6333:6333 qdrant/qdrant

Avantages

  • Contrôle total sur vos données
  • Pas de dépendance fournisseur
  • Filtrage avancé & payloads
  • Écrit en Rust — très rapide

Inconvénients

  • Nécessite Docker ou serveur
  • Vous gérez sauvegardes & scaling

ChromaAdapter

Base de données d'embeddings open-source, native IA

Open Source

npm install chromadb

import { createOrka, OpenAIAdapter, ChromaAdapter } from 'orkajs';
 
const orka = createOrka({
llm: new OpenAIAdapter({ apiKey: process.env.OPENAI_API_KEY! }),
vectorDB: new ChromaAdapter({
url: 'http://localhost:8000',
collectionName: 'my-docs',
}),
});

Démarrage rapide avec Docker :

docker run -p 8000:8000 chromadb/chroma

Tableau Comparatif

CaractéristiqueMemoryPineconeQdrantChroma
SetupAucunInscription cloudDockerDocker
Persistance
Scalabilité<10K docsMilliardsMillions100K+
Auto-hébergéN/A
Idéal pourDéveloppementEntrepriseProductionPetits projets

Changer d'Adaptateur

L'une des forces principales d'Orka AI est la portabilité des adaptateurs. Votre code applicatif reste exactement le même — seule la configuration change :

vector-databases-switching-example.ts
// Development: Use in-memory storage
const devOrka = createOrka({
llm: new OpenAIAdapter({ apiKey: process.env.OPENAI_API_KEY! }),
vectorDB: new MemoryVectorAdapter(),
});
 
// Production: Switch to Pinecone
const prodOrka = createOrka({
llm: new OpenAIAdapter({ apiKey: process.env.OPENAI_API_KEY! }),
vectorDB: new PineconeAdapter({
apiKey: process.env.PINECONE_API_KEY!,
indexHost: process.env.PINECONE_INDEX_HOST!,
}),
});
 
// Your application code is IDENTICAL for both:
await orka.knowledge.create({ name: 'docs', source: [...] });
const result = await orka.ask({ knowledge: 'docs', question: '...' });

💡 Astuce Pro : Configuration par Environnement

Utilisez des variables d'environnement pour changer automatiquement d'adaptateur selon votre environnement de déploiement :

const vectorDB = process.env.NODE_ENV === 'production'
? new PineconeAdapter({ apiKey: process.env.PINECONE_API_KEY!, indexHost: process.env.PINECONE_INDEX_HOST! })
: new MemoryVectorAdapter();
 
const orka = createOrka({ llm, vectorDB });