OrkaJS
Orka.JS

Bases de Données Vectorielles

Apprenez à configurer et utiliser les bases de données vectorielles avec Orka JS pour la recherche sémantique et lesapplications 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 } from '@orka-js/core';
import { OpenAIAdapter } from '@orka-js/openai';
import { MemoryVectorAdapter } from '@orka-js/memory';
 
const orka = createOrka({
llm: new OpenAIAdapter({ apiKey: process.env.OPENAI_API_KEY! }),
vectorDB: new MemoryVectorAdapter(),
});
 
// C'est tout! Aucun service externe nécessaire.

Avantages Stratégiques

  • Configuration zéro — logique 'Plug & Play'
  • Latence ultra-faible pour petits jeux de données
  • Idéal pour le CI/CD et le prototypage local

Contraintes Connues

  • Stockage volatil — effacé au redémarrage
  • Absence de mise à l'échelle horizontale
  • Consommation RAM liée au volume de données

# 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 } from '@orka-js/core';
import { OpenAIAdapter } from '@orka-js/openai';
import { PineconeAdapter } from '@orka-js/pinecone';
 
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',
}),
});

Configuration Infrastructure

Pinecone Vector Database

01
Provisionnement Cloud

Créez votre compte sur pinecone.iopinecone.io

02
Architecture de l'Index
Critical

Dimensions : 1536 pour OpenAI / 384 pour les modèles légers.

03
Extraction des Clés

Récupérez la Clé API et l'URL Host de l'Index.

04
Sync Environnement

Injectez les variables dans votre fichier .env.local.

Scalabilité Entreprise

  • Infrastructure Serverless entièrement managée
  • Scale sans friction jusqu'à des milliards de vecteurs
  • SLA haute-disponibilité de 99.99%
  • Filtrage avancé des métadonnées et namespaces

Logistique & Compromis

  • Nécessite un compte cloud et des clés API
  • Structure de prix basée sur la consommation
  • Données résidant hors infrastructure locale
  • Latence réseau pour les requêtes distantes

# 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 } from '@orka-js/core';
import { OpenAIAdapter } from '@orka-js/openai';
import { QdrantAdapter } from '@orka-js/qdrant';
 
const orka = createOrka({
llm: new OpenAIAdapter({ apiKey: process.env.OPENAI_API_KEY! }),
vectorDB: new QdrantAdapter({
url: 'http://localhost:6333', // Instance Docker locale
// url: 'https://xyz.qdrant.io', // Ou Qdrant Cloud
apiKey: process.env.QDRANT_API_KEY, // Optionnel pour local
collectionName: 'my-knowledge-base', // Optionnel, par défaut 'orka'
}),
});

Démarrage rapide avec Docker :

docker run -p 6333:6333 qdrant/qdrant
Avantages Stratégiques
  • Contrôle total sur vos données
  • Pas de dépendance fournisseur
  • Filtrage avancé & payloads
  • Écrit en Rust — très rapide
Contraintes Opérationnelles
  • 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 } from '@orka-js/core';
import { OpenAIAdapter } from '@orka-js/openai';
import { ChromaAdapter } from '@orka-js/chroma';
 
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
ConfigurationAucunCloud SaaSDocker / CloudDocker / Local
PersistanceVolatilePermanentPermanentPermanent
Scalabilité< 10KUnlimitedMillions+100K+
Auto-hébergéN/ANoYesYes
Idéal pourDev & TestsEnterpriseProductionSelf-Host

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
// Développement: Utilise le stockage en mémoire
const devOrka = createOrka({
llm: new OpenAIAdapter({ apiKey: process.env.OPENAI_API_KEY! }),
vectorDB: new MemoryVectorAdapter(),
});
 
// Production: Change vers 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!,
}),
});
 
// Votre code applicatif est IDENTIQUE pour les deux
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 });