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
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
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
Provisionnement Cloud
Créez votre compte sur pinecone.iopinecone.io
Architecture de l'Index
CriticalDimensions : 1536 pour OpenAI / 384 pour les modèles légers.
Extraction des Clés
Récupérez la Clé API et l'URL Host de l'Index.
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
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- Contrôle total sur vos données
- Pas de dépendance fournisseur
- Filtrage avancé & payloads
- Écrit en Rust — très rapide
- Nécessite Docker ou serveur
- Vous gérez sauvegardes & scaling
# ChromaAdapter
Base de données d'embeddings open-source, native IA
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/chromaTableau Comparatif
| Caractéristique | Memory | Pinecone | Qdrant | Chroma |
|---|---|---|---|---|
| Configuration | Aucun | Cloud SaaS | Docker / Cloud | Docker / Local |
| Persistance | Volatile | Permanent | Permanent | Permanent |
| Scalabilité | < 10K | Unlimited | Millions+ | 100K+ |
| Auto-hébergé | N/A | No | Yes | Yes |
| Idéal pour | Dev & Tests | Enterprise | Production | Self-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 :
// Développement: Utilise le stockage en mémoireconst devOrka = createOrka({ llm: new OpenAIAdapter({ apiKey: process.env.OPENAI_API_KEY! }), vectorDB: new MemoryVectorAdapter(),}); // Production: Change vers Pineconeconst 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 deuxawait 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 });