@vectororm/adapter-chroma
v1.0.1
Published
ChromaDB adapter for VectorORM
Maintainers
Readme
@vectororm/adapter-chroma
ChromaDB adapter for VectorORM.
Installation
npm install @vectororm/core @vectororm/adapter-chromaPrerequisites
ChromaDB running locally or accessible via network:
docker run -p 8000:8000 chromadb/chromaUsage
Standalone Adapter
import { ChromaAdapter } from '@vectororm/adapter-chroma';
const adapter = new ChromaAdapter({
host: 'localhost',
port: 8000
});
await adapter.connect();
// Create a collection
await adapter.createCollection('my-docs', 1536, 'cosine');
// Upsert vectors
await adapter.upsert('my-docs', [
{
id: 'doc-1',
embedding: [0.1, 0.2, ...],
metadata: { title: 'My Document', __v_partition: 'finance' },
text: 'Document content...'
}
]);
// Search with filters
const results = await adapter.search('my-docs', queryVector, {
topK: 10,
filter: { field: '__v_partition', op: 'eq', value: 'finance' }
});With RAGClient
import { RAGClient } from '@vectororm/core';
import { ChromaAdapter } from '@vectororm/adapter-chroma';
const client = new RAGClient({
adapter: new ChromaAdapter({ host: 'localhost', port: 8000 }),
embedder: myEmbedder,
llm: myLLM,
defaultCollection: 'docs'
});
await client.createCollection('docs');
await client.ingest(['documents/*.pdf'], 'docs');
const result = await client.retrieve('search query');Configuration
interface ChromaConfig {
host?: string; // Default: 'localhost'
port?: number; // Default: 8000
apiKey?: string; // Optional, for Chroma Cloud
ssl?: boolean; // Default: false for localhost
tenant?: string; // Optional multi-tenancy
database?: string; // Optional database name
}Environment variable fallbacks: CHROMA_HOST, CHROMA_PORT, CHROMA_API_KEY, CHROMA_SSL.
Features
- Full CRUD operations (upsert, fetch, delete)
- Metadata filtering with VectorORM universal filter translation
- Collection management (create, delete, exists, stats)
- Batch iteration for enrichment pipelines
- Metadata updates without re-uploading vectors
Documentation
License
Apache-2.0
