OrkaJS
Orka.JS

Vector Databases

Learn how to configure and use vector databases with Orka AI for semantic search and RAG applications.

What is a Vector Database?

A vector database stores text as numerical vectors (embeddings) that capture semantic meaning. When you search, it finds documents with similar meaning, not just matching keywords. This is the foundation of RAG (Retrieval-Augmented Generation).

Example: Searching for "How do I authenticate users?" will find documents about "login", "OAuth", "JWT tokens", etc. — even if they don't contain the exact words.

Supported Adapters

Orka AI supports multiple vector database backends. All adapters implement the same interface, so you can switch between them without changing your application code.

MemoryVectorAdapter

In-memory vector store — zero configuration required

Built-in
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.

Pros

  • Zero setup — works out of the box
  • Fast for small datasets (<10k docs)
  • Perfect for development and testing

Cons

  • Data lost when process restarts
  • Not suitable for production
  • Limited to single process

PineconeAdapter

Fully managed cloud vector database with enterprise features

Recommended for Production

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',
}),
});

Setup Steps:

  1. 1. Create a free account at pinecone.io
  2. 2. Create an index with dimension 1536 (for OpenAI embeddings) or 384 (for smaller models)
  3. 3. Copy your API key and index host URL
  4. 4. Add them to your environment variables

Pros

  • Fully managed — no infrastructure
  • Scales to billions of vectors
  • 99.99% uptime SLA
  • Built-in metadata filtering

Cons

  • Requires cloud account
  • Costs scale with usage
  • Data stored externally

QdrantAdapter

High-performance vector database — self-hosted or cloud

Self-Hosted Option

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'
}),
});

Quick Start with Docker:

docker run -p 6333:6333 qdrant/qdrant

Pros

  • Full control over your data
  • No vendor lock-in
  • Advanced filtering & payloads
  • Written in Rust — very fast

Cons

  • Requires Docker or server setup
  • You manage backups & scaling

ChromaAdapter

Open-source, AI-native embedding database

Open Source

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',
}),
});

Quick Start with Docker:

docker run -p 8000:8000 chromadb/chroma

Comparison Table

FeatureMemoryPineconeQdrantChroma
SetupNoneCloud signupDockerDocker
Persistence
Scalability<10K docsBillionsMillions100K+
Self-hostedN/A
Best forDevelopmentEnterpriseProductionSmall projects

Switching Between Adapters

One of Orka AI's core strengths is adapter portability. Your application code stays exactly the same — only the configuration changes:

vector-databases-switching-example.ts
// Development: Use in-memory storage
const devOrka = createOrka({
llm: new OpenAIAdapter({ apiKey: process.env.OPENAI_API_KEY! }),
vectorDB: new MemoryVectorAdapter(),
});
 
// Production: Switch to 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!,
}),
});
 
// Your application code is IDENTICAL for both:
await orka.knowledge.create({ name: 'docs', source: [...] });
const result = await orka.ask({ knowledge: 'docs', question: '...' });

💡 Pro Tip: Environment-Based Configuration

Use environment variables to automatically switch adapters based on your deployment environment:

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 });