Nacido para ser simple. Simple Python Wrapper proporciona un soporte eficiente para las operaciones de CRUD y la consulta con bases de datos vectoriales ".
Para instalar todas las depedencias de soporte de la base de datos vectorial (requieren mucho espacio en disco, no recomendado)
pip install pyvectordb[all]Si solo necesita un motor de base de datos vectorial específico, puede usar (recomendado)
pip install pyvectordb[pgvector]pip install pyvectordb[qdrant]pip install pyvectordb[chromadb]PGVector es una extensión para PostgreSQL que permite el almacenamiento, la indexación y la consulta de los incrustaciones vectoriales. Está diseñado para admitir la búsqueda de similitud de vectores, que es útil en aplicaciones de aprendizaje automático como procesamiento del lenguaje natural, reconocimiento de imágenes y sistemas de recomendación. Al almacenar los incrustaciones de vectores como tipo de datos, PGVector permite búsquedas de similitud eficientes utilizando métricas de distancia como similitud de coseno, distancia euclidiana, producto interno, 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 "es un motor de búsqueda de similitud vectorial que proporciona un servicio listo para la producción con una API conveniente para almacenar, buscar y administrar puntos (es decir, vectores) con una carga útil adicional". Puede pensar en las cargas útiles como información adicional que puede ayudarlo a perfeccionar su búsqueda y también recibir información útil que puede brindar a sus usuarios.
Usar qdrant en pyvectordb es simple, solo necesita cambiar el cliente a 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 ,
)El croma es la base de datos de vectores de código abierto nativo de AI. Chroma facilita la construcción de aplicaciones LLM haciendo conocimiento, hechos y habilidades enchufables para 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 ,
)Estas son funciones disponibles en esta herramienta 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 tiene alguna pregunta, comentarios o necesita apoyo, no dude en comunicarse con:
? Correo electrónico: mi correo electrónico
Problemas de GitHub: Envíe un problema
LinkedIn: perfil de LinkedIn
Si encuentra útil este proyecto, considere apoyarlo por:
¡Cada contribución ayuda a mejorar el proyecto!