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).