Né pour être simple. Le wrapper Python simple fournit un support efficace pour les opérations CRUD et l'interrogation avec des bases de données vectorielles. ".
Pour installer toutes les dépréances de support de la base de données vectorielle (nécessite beaucoup d'espace disque, non recommandée)
pip install pyvectordb[all]Si vous n'avez besoin que d'un moteur de base de données vectorielle spécifique, vous pouvez utiliser (recommandé)
pip install pyvectordb[pgvector]pip install pyvectordb[qdrant]pip install pyvectordb[chromadb]PGVector est une extension pour PostgreSQL qui permet le stockage, l'indexation et la requête des incorporations vectorielles. Il est conçu pour prendre en charge la recherche de similitude vectorielle, qui est utile dans les applications d'apprentissage automatique comme le traitement du langage naturel, la reconnaissance d'image et les systèmes de recommandation. En stockant les incorporations vectorielles comme type de données, PGVector permet des recherches de similitude efficaces en utilisant des mesures de distance telles que la similitude en cosinus, la distance euclidienne, le produit interne, etc.
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
v1 = Vector (
embedding = [ 2. , 2. , 1. ],
metadata = { "text" : "hellow from pyvectordb" }
)
v2 = Vector (
embedding = [ 2. , 2. , 2. ],
metadata = { "text" : "hi" }
)
v3 = Vector (
embedding = [ 2. , 2. , 3. ],
metadata = { "text" : "good morning!" }
)
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 ,
)
# insert new vector
vector_db . insert_vector ( v1 )
vector_db . insert_vectors ([ v2 , v3 ])
# read v1
v_from_db = vector_db . read_vector ( v1 . get_id ())
# update v1 embedding
new_embedding = [ 2. , 2. , 4. ]
v_from_db . embedding = new_embedding
vector_db . update_vector ( v_from_db )
# read updated embedding and check
v_from_db_updated = vector_db . read_vector ( v1 . get_id ())
assert list ( v_from_db_updated . embedding ) == list ( new_embedding ), "updated embedding not equal"
# re-update v1 embedding to the v1, check
vector_db . update_vectors ([ v1 , v2 , v3 ])
re_updated_embedding = vector_db . read_vector ( v1 . get_id ()). embedding
assert list ( re_updated_embedding ) == list ( v1 . embedding ), "re-updated embedding not equal"
for x in vector_db . get_neighbor_vectors ( v1 , 3 ):
print ( f" { x } " )
vector_db . delete_vector ( v1 . get_id ())
vector_db . delete_vectors ([ v2 , v3 ])Qdrant «est un moteur de recherche de similitude vectorielle qui fournit un service prêt pour la production avec une API pratique pour stocker, rechercher et gérer des points (c.-à-d. Vecteurs) avec une charge utile supplémentaire.» Vous pouvez considérer les charges utiles comme des informations supplémentaires qui peuvent vous aider à vous concentrer sur votre recherche et également recevoir des informations utiles que vous pouvez donner à vos utilisateurs.
L'utilisation de Qdrant dans pyvectordb est simple, il vous suffit de changer le client en QdrantDB
from pyvectordb import QdrantDB
vector_db = QdrantDB (
host = os . getenv ( "Q_HOST" ),
api_key = os . getenv ( "Q_API_KEY" ),
port = os . getenv ( "Q_PORT" ),
collection = os . getenv ( "Q_COLLECTION" ),
vector_size = int ( os . getenv ( "Q_SIZE" )),
distance_function = DistanceFunction . COSINE ,
)Le chroma est la base de données vectorielle open-source AI-Native. Le chroma facilite la création d'applications LLM en créant des connaissances, des faits et des compétences enfichables pour les LLM.
from pyvectordb import ChromaDB
vector_db = ChromaDB (
host = os . getenv ( "CH_HOST" ),
port = os . getenv ( "CH_PORT" ),
auth_provider = os . getenv ( "CH_AUTH_PROVIDER" ),
auth_credentials = os . getenv ( "CH_AUTH_CREDENTIALS" ),
collection_name = os . getenv ( "CH_COLLECTION_NAME" ),
distance_function = DistanceFunction . L2 ,
)Ce sont des fonctions disponibles dans cet outil simple
def insert_vector ( self , vector : Vector ) -> None : ...
def insert_vectors ( self , vectors : List [ Vector ]) -> None : ...
def read_vector ( self , id : str ) -> Vector | None : ...
def update_vector ( self , vector : Vector ) -> None : ...
def update_vectors ( self , vectors : List [ Vector ]) -> None : ...
def delete_vector ( self , id : str ) -> None : ...
def delete_vectors ( self , ids : Union [ List [ str ], List [ Vector ]]) -> None : ...
def get_neighbor_vectors ( self , vector : Vector , n : int ) -> List [ VectorDistance ]: ...Si vous avez des questions, des commentaires ou avez besoin d'un soutien, n'hésitez pas à tendre la main:
? Email: mon e-mail
Problèmes de github: soumettre un problème
LinkedIn: profil LinkedIn
Si vous trouvez ce projet utile, envisagez de le soutenir par:
Chaque contribution aide à améliorer le projet!