Vector Stores
Vector stores power semantic search and retrieval in xmem. You can use open-source solutions like ChromaDB, Qdrant, Pinecone, MongoDB, or even a mock store for dev/testing.
Registering a Vector Store
import { ChromaDBAdapter } from class="text-amber-300">'./adapters/chromadb';
import { QdrantAdapter } from class="text-amber-300">'./adapters/qdrant';
import { PineconeAdapter } from class="text-amber-300">'./adapters/pinecone';
import { MongoDBVectorAdapter } from class="text-amber-300">'./adapters/mongodb';
orchestrator.registerProvider(class="text-amber-300">'vector', class="text-amber-300">'chromadb', new ChromaDBAdapter({
url: process.env.CHROMA_URL || class="text-amber-300">'http:class="text-slate-400">//localhost:8000',
collection: process.env.CHROMA_COLLECTION || class="text-amber-300">'xmem_collection',
apiKey: process.env.CHROMA_API_KEY,
}));
orchestrator.registerProvider(class="text-amber-300">'vector', class="text-amber-300">'qdrant', new QdrantAdapter({
url: process.env.NEXT_PUBLIC_QDRANT_URL || class="text-amber-300">'http:class="text-slate-400">//localhost:6333',
collection: process.env.NEXT_PUBLIC_QDRANT_COLLECTION || class="text-amber-300">'xmem_collection',
apiKey: process.env.NEXT_PUBLIC_QDRANT_API_KEY,
}));
orchestrator.registerProvider(class="text-amber-300">'vector', class="text-amber-300">'pinecone', new PineconeAdapter({
apiKey: process.env.NEXT_PUBLIC_PINECONE_API_KEY || class="text-amber-300">'',
environment: process.env.NEXT_PUBLIC_PINECONE_ENVIRONMENT || class="text-amber-300">'us-west1-gcp',
indexName: process.env.NEXT_PUBLIC_PINECONE_INDEX || class="text-amber-300">'xmem-index',
projectId: process.env.NEXT_PUBLIC_PINECONE_PROJECT_ID,
}));
orchestrator.registerProvider(class="text-amber-300">'vector', class="text-amber-300">'mongodb', new MongoDBVectorAdapter({
uri: process.env.MONGODB_URI || class="text-amber-300">'mongodb:class="text-slate-400">//localhost:27017',
dbName: process.env.MONGODB_DB || class="text-amber-300">'xmem',
collectionName: process.env.MONGODB_COLLECTION || class="text-amber-300">'vectors',
}));
class=class="text-amber-300">"text-slate-400">// Set default vector provider
orchestrator.setDefaultProvider(class="text-amber-300">'vector', class="text-amber-300">'chromadb');
Supported Vector Stores
- ChromaDB
- Qdrant
- Pinecone
- MongoDB
- MockVectorStore (for dev/testing)
Tip: You can register multiple vector stores and select which to use per query.
Note: It is recommended to use environment variables for sensitive configuration values (URLs, API keys, etc).