Skip to content

feat: Multi-Database Support (Pinecone, Qdrant, Weaviate) - #24

Merged
stepandel merged 1 commit into
masterfrom
feature/multi-database-support
Feb 4, 2026
Merged

feat: Multi-Database Support (Pinecone, Qdrant, Weaviate)#24
stepandel merged 1 commit into
masterfrom
feature/multi-database-support

Conversation

@stepandel

Copy link
Copy Markdown
Owner

Summary

This PR implements the foundation for multi-database support, allowing the explorer to work with Pinecone, Qdrant, and Weaviate vector databases.

Changes

New Abstraction Layer (electron/adapters/)

  • types.ts - Unified type definitions:

    • VectorDatabase interface for all providers
    • DatabaseCapabilities for feature detection
    • Common types: CollectionInfo, VectorRecord, QueryResult, etc.
    • Provider-specific connection configs
  • base-adapter.ts - Abstract base class with:

    • Connection lifecycle management
    • Retry logic with exponential backoff
    • Batch utilities
    • Common validations
  • factory.ts - Adapter factory:

    • Lazy-loads SDK dependencies
    • Caches adapter instances
    • Provider selection based on config

Provider Adapters

  • pinecone-adapter.ts - Pinecone implementation (refactored from existing service)
  • qdrant-adapter.ts - New Qdrant implementation
  • weaviate-adapter.ts - New Weaviate implementation

Dependencies

"@qdrant/js-client-rest": "^1.16.2"
"weaviate-client": "^3.11.0"

Capabilities Matrix

Feature Pinecone Qdrant Weaviate
Namespaces ❌ (filtering) ✅ (multi-tenancy)
Sparse Vectors
Hybrid Search ✅ (BM25)
Integrated Embeddings
Reranking
Vector Listing

Next Steps

  • Update UI to support provider selection (VEX-013)
  • Rename hooks/context to be provider-agnostic (VEX-014)
  • Add conditional UI features based on capabilities (VEX-015)
  • Integration tests for each adapter (VEX-021)

Testing

  • TypeScript compilation passes
  • Manual testing with each provider
  • Unit tests for adapters

Implements VEX-001 through VEX-004 from multi-db analysis:
- Unified VectorDatabase interface for all three providers
- Base adapter class with common functionality
- Factory for creating database adapters by provider
- Pinecone adapter (refactored from existing service)
- Qdrant adapter (new implementation)
- Weaviate adapter (new implementation)

Dependencies added:
- @qdrant/js-client-rest
- weaviate-client

All adapters implement:
- Connection management
- Collection/index operations (list, create, delete, stats)
- Vector operations (list, fetch, query, upsert, update, delete)
- Provider-specific filter translation
@stepandel
stepandel merged commit ce9ccbf into master Feb 4, 2026
1 check passed
@stepandel
stepandel deleted the feature/multi-database-support branch February 6, 2026 18:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant