Skip to content

rizquuula/pyvectordb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

66 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

PyVectorDB

GitHub license GitHub stars GitHub forks GitHub watchers GitHub issues GitHub pull requests Contributors GitHub last commit Commit activity GitHub repo size GitHub languages GitHub languages count PyPI Version Python Version

Simple Python wrapper for CRUD operations and vector similarity search across multiple vector databases.

Features

  • πŸš€ Unified API - Single interface for multiple vector databases
  • πŸ”„ Multi-database support - PGVector, Qdrant, ChromaDB, Milvus, Weaviate, Pinecone
  • πŸ“¦ Lightweight - Install only the dependencies you need
  • πŸ› οΈ Full CRUD - Insert, read, update, delete, and similarity search

Table of Contents

Requirements

  • Python 3.9+

Installation

Install all dependencies (not recommended - requires a lot of disk space)

pip install pyvectordb[all]

Install specific database support (recommended)

pip install pyvectordb[pgvector]   # PostgreSQL with pgvector
pip install pyvectordb[qdrant]     # Qdrant
pip install pyvectordb[chromadb]   # ChromaDB
pip install pyvectordb[milvus]     # Milvus
pip install pyvectordb[weaviate]   # Weaviate
pip install pyvectordb[pinecone]   # Pinecone

Quick Start

from dotenv import load_dotenv
load_dotenv()

import os
from pyvectordb import Vector
from pyvectordb.pgvector.pgvector import PgvectorDB
from pyvectordb.distance_function import DistanceFunction

# Create vectors with embeddings and metadata
v1 = Vector(
    embedding=[2., 2., 1.],
    metadata={"text": "hello from pyvectordb"}
)
v2 = Vector(
    embedding=[2., 2., 2.],
    metadata={"text": "hi"}
)

# Initialize database connection
vector_db = PgvectorDB(
    user=os.getenv("PG_USER"),
    password=os.getenv("PG_PASSWORD"),
    host=os.getenv("PG_HOST"),
    port=os.getenv("PG_PORT"),
    db_name=os.getenv("PG_NAME"),
    collection=os.getenv("PG_COLLECTION"),
    distance_function=DistanceFunction.L2,
)

# CRUD operations
vector_db.insert_vector(v1)
vector_db.insert_vectors([v2])

# Read
v_from_db = vector_db.read_vector(v1.get_id())

# Update
v_from_db.embedding = [2., 2., 4.]
vector_db.update_vector(v_from_db)

# Delete
vector_db.delete_vector(v1.get_id())

# Similarity search
neighbors = vector_db.search(v1, k=3)

Supported Databases

Database Install Extra Description
PGVector [pgvector] PostgreSQL vector extension
Qdrant [qdrant] Vector similarity search engine
ChromaDB [chromadb] AI-native open-source vector database
Milvus [milvus] Open-source vector database
Weaviate [weaviate] Cloud-native vector database
Pinecone [pinecone] Managed vector database

Database-Specific Usage

PGVector
from pyvectordb.pgvector.pgvector import PgvectorDB
from pyvectordb.distance_function import DistanceFunction

db = PgvectorDB(
    user="postgres",
    password="password",
    host="localhost",
    port=5432,
    db_name="vectordb",
    collection="my_collection",
    distance_function=DistanceFunction.L2,
)
Qdrant
from pyvectordb import QdrantDB
from pyvectordb.distance_function import DistanceFunction

db = QdrantDB(
    host="localhost",
    api_key="your-api-key",
    port=6333,
    collection="my_collection",
    vector_size=1536,
    distance_function=DistanceFunction.COSINE,
)
ChromaDB
from pyvectordb import ChromaDB
from pyvectordb.distance_function import DistanceFunction

db = ChromaDB(
    host="localhost",
    port=8000,
    collection_name="my_collection",
    distance_function=DistanceFunction.L2,
)
Milvus
from pyvectordb import MilvusDB
from pyvectordb.distance_function import DistanceFunction

db = MilvusDB(
    host="localhost",
    port=19530,
    collection="my_collection",
    vector_size=1536,
    distance_function=DistanceFunction.COSINE,
)
Weaviate
from pyvectordb import WeaviateDB
from pyvectordb.distance_function import DistanceFunction

db = WeaviateDB(
    host="localhost",
    port=8080,
    grpc_port=50051,
    api_key="your-api-key",
    collection="my_collection",
    vector_size=1536,
    distance_function=DistanceFunction.COSINE,
)
Pinecone
from pyvectordb import PineconeDB
from pyvectordb.distance_function import DistanceFunction

db = PineconeDB(
    api_key="your-api-key",
    environment="us-east-1",
    collection="my_collection",
    vector_size=1536,
    distance_function=DistanceFunction.COSINE,
)

API Reference

All database implementations support the following unified interface:

Method Description
insert_vector(vector) Insert a single vector
insert_vectors(vectors) Insert multiple vectors
read_vector(id) Get vector by ID
update_vector(vector) Update a single vector
update_vectors(vectors) Update multiple vectors
delete_vector(id) Delete vector by ID
delete_vectors(ids) Delete multiple vectors by ID
search(vector, k) Find k nearest neighbors

Contributing

Contributions are welcome! Please feel free to submit a Pull Request or open an Issue.

Development Setup

# Clone the repository
git clone https://github.com/rizquuula/pyvectordb.git
cd pyvectordb

# Install development dependencies
pip install -e ".[all]"

# Run tests
pytest tests/

License

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

Support


If you find this project helpful, please consider:

  • ⭐ Starring the repository
  • 🍴 Forking and contributing
  • πŸ—¨ Sharing your feedback

Thank you for your support!

About

Python wrapper for many Vector Databases

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors