Simple Python wrapper for CRUD operations and vector similarity search across multiple vector databases.
- π 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
- Python 3.9+
pip install pyvectordb[all]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] # Pineconefrom 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)| 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 |
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,
)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 |
Contributions are welcome! Please feel free to submit a Pull Request or open an Issue.
# Clone the repository
git clone https://github.com/rizquuula/pyvectordb.git
cd pyvectordb
# Install development dependencies
pip install -e ".[all]"
# Run tests
pytest tests/This project is licensed under the MIT License - see the LICENSE file for details.
- π§ Email: [email protected]
- π¬ GitHub Issues: Submit an Issue
- πΌ LinkedIn: razifrizqullah
If you find this project helpful, please consider:
- β Starring the repository
- π΄ Forking and contributing
- π¨ Sharing your feedback
Thank you for your support!