Skip to main content

A simple and intuitive vector database abstraction layer

Project description

PyPI Version License: MIT

Flex Vector

A simple and intuitive vector database abstraction layer supporting multiple vector stores.

CI

Features

  • Unified interface for multiple vector databases
    • Chroma
    • Qdrant
    • Weaviate
    • PGVector
    • Milvus
    • Azure AI Search
    • ...and more to come!
  • LangChain support
  • LlamaIndex support
  • Flexible data loading from files, direct data, or URIs
  • Async support for all operations
  • Command-line interface for common operations

Installation

pip install flexvector

Add the CLI tool to your path:

# After installation, use the 'flexvector' command directly
flexvector --help

Quick Start

Environment Variables

Required:

export OPENAI_API_KEY="sk-..."

Using the Python API

from flexvector import VectorDBFactory
from flexvector.config import settings
from flexvector.core import Document

# Initialize client with configuration
client = VectorDBFactory.get("chroma", settings)

# Load documents from file or directory
docs = client.load(collection_name="my_collection", path="path/to/document.txt")

# Or create and add documents directly
from langchain_core.documents import Document

doc = Document(page_content="Hello world", metadata={"source": "example"})
client.from_langchain("my_collection", [doc])

# Search
results = client.search(
    collection_name="my_collection",
    query="hello",
    top_k=5
)

# Delete collection
client.remove_collection("my_collection")

# Delete documents

Using the Command Line Interface

Load documents from a file:

flexvector load --input-file examples/files/data.txt --collection my_documents

# Or using python
python cli.py load --input-file examples/files/data.txt --collection my_documents

Load documents from a directory:

flexvector load --input-dir examples/files --collection research_papers

Search for documents:

flexvector search --query "What is vector database?" --collection my_documents --top-k 5

Delete a collection:

flexvector delete --collection my_documents

Configuration

FlexVector supports multiple configuration methods for different deployment environments:

Configuration Sources (in priority order)

  1. CLI arguments (highest priority) - Direct command-line overrides
  2. Environment variables - Runtime environment settings
  3. Configuration files - YAML, TOML, or JSON files
  4. Default values (lowest priority) - Built-in fallback values

  1. Create a configuration file:

    python cli.py init-config --config-file flexvector.yaml
    
  2. Edit the configuration file for your environment:

    # flexvector.yaml
    environments:
      development:
        CHROMA_DB_FILE: "./data/vectorstores/chroma-dev"
        EMBEDDING_MODEL: "text-embedding-3-small"
      production:
        CHROMA_HTTP_URL: "https://prod-chroma.example.com"
        EMBEDDING_MODEL: "text-embedding-3-large"
    
    # Default settings
    EMBEDDING_DIMENSION: 512
    
  3. Use environment-specific settings:

    # Development
    python cli.py load --input-dir ./docs --environment development
    
    # Production  
    python cli.py search --query "AI" --environment production
    

.env File Support

cp env.example .env
# Edit .env with your local settings

📖 See full configuration documentation for advanced configuration patterns, multiple environments, and security best practices.

Documentation

For more usage info, see docs.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

This package aims to be a versatile tool for various AI applications, including but not limited to:

Research and Development

  • Prototyping: Quickly test different vector databases without changing your application code
  • A/B Testing: Compare performance across different vector stores for your specific use case
  • Academic Research: Study vector search behavior with a standardized interface

RAG Pipeline Integration

Build robust Retrieval Augmented Generation (RAG) systems with a database-agnostic approach:

  • ETL Workflows: Create efficient extract-transform-load pipelines that process documents and store embeddings without locking into a specific vector database
  • Multi-modal RAG: Store and retrieve text, images, and other data types with the same consistent interface
  • Hybrid Search Systems: Combine semantic search with traditional keyword search for improved retrieval quality

Research and Development

  • Prototyping: Quickly test different vector databases without changing your application code
  • A/B Testing: Compare performance across different vector stores for your specific use case
  • Academic Research: Study vector search behavior with a standardized interface

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flexvector-0.1.2.tar.gz (21.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

flexvector-0.1.2-py3-none-any.whl (27.4 kB view details)

Uploaded Python 3

File details

Details for the file flexvector-0.1.2.tar.gz.

File metadata

  • Download URL: flexvector-0.1.2.tar.gz
  • Upload date:
  • Size: 21.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for flexvector-0.1.2.tar.gz
Algorithm Hash digest
SHA256 62391d3aa257cf97330516d7d514453f46ee84de23a7ca211732aef820f59000
MD5 6a33de82673daae63a4ab2e71d4cc1f6
BLAKE2b-256 f733e5d3df3810e89ff29147105ce091169d3c9855d892490ad96c4ce86151fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for flexvector-0.1.2.tar.gz:

Publisher: publish-to-pypi.yml on ndamulelonemakh/flexvector

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file flexvector-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: flexvector-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 27.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for flexvector-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8d316b049e3ea667784da9bc3005e722d678be9a56350b4d595d0f9ebe0d5491
MD5 79430bcec2b6237793cd98bae6487e77
BLAKE2b-256 e7e0f54a35d6ffd0be28f5939eb29d6d0f8dc2268eb70a8b8757b61e091c2427

See more details on using hashes here.

Provenance

The following attestation bundles were made for flexvector-0.1.2-py3-none-any.whl:

Publisher: publish-to-pypi.yml on ndamulelonemakh/flexvector

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page