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
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
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. Créez un compte gratuit sur pinecone.io
- 2. Créez un index avec dimension 1536 (pour embeddings OpenAI) ou 384 (pour modèles plus petits)
- 3. Copiez votre clé API et l'URL de l'index
- 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
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/qdrantAvantages
- • 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
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/chromaTableau Comparatif
| Caractéristique | Memory | Pinecone | Qdrant | Chroma |
|---|---|---|---|---|
| Setup | Aucun | Inscription cloud | Docker | Docker |
| Persistance | ✗ | ✓ | ✓ | ✓ |
| Scalabilité | <10K docs | Milliards | Millions | 100K+ |
| Auto-hébergé | N/A | ✗ | ✓ | ✓ |
| Idéal pour | Développement | Entreprise | Production | Petits 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 :
// Development: Use in-memory storageconst devOrka = createOrka({ llm: new OpenAIAdapter({ apiKey: process.env.OPENAI_API_KEY! }), vectorDB: new MemoryVectorAdapter(),}); // Production: Switch to 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!, }),}); // 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 });