Geboren, um einfach zu sein. Einfache Python -Wrapper bietet effiziente Unterstützung für CRUD -Operationen und Abfragen mit Vektor -Datenbanken. ".
So installieren Sie alle Vektordatenbank Depedencies (benötigen Sie viel Speicherplatz, nicht empfohlen)
pip install pyvectordb[all]Wenn Sie nur eine bestimmte Vektor -Datenbank -Engine benötigen, können Sie verwenden (empfohlen).
pip install pyvectordb[pgvector]pip install pyvectordb[qdrant]pip install pyvectordb[chromadb]PGVector ist eine Erweiterung für PostgreSQL, die die Speicherung, Indexierung und Abfrage von Vektor -Einbettungen ermöglicht. Es wurde entwickelt, um die Vektor -Ähnlichkeitssuche zu unterstützen, die für Anwendungen für maschinelles Lernen wie Verarbeitung natürlicher Sprache, Bilderkennung und Empfehlungssysteme nützlich ist. Durch das Speichern von Vektor -Einbettungen als Datentyp ermöglicht PGVector effiziente Ähnlichkeitssuche unter Verwendung von Distanzmetriken wie Kosinus -Ähnlichkeit, euklidischer Entfernung, inneres Produkt usw.
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 "ist eine Suchmaschine der Vektor-Ähnlichkeit, die einen produktionsbereiten Service mit einer bequemen API bietet, um Punkte (dh Vektoren) mit einer zusätzlichen Nutzlast zu speichern, zu suchen und zu verwalten." Sie können sich die Nutzlasten als zusätzliche Informationen vorstellen, die Ihnen helfen können, Ihre Suche zu verbessern und nützliche Informationen zu erhalten, die Sie Ihren Benutzern geben können.
Die Verwendung von QDrant in Pyvectordb ist einfach. Sie müssen den Client nur in QdrantDB wechseln
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 ,
)Chroma ist die AI-native Open-Source-Vektordatenbank. Chroma erleichtert es einfach, LLM -Apps zu erstellen, indem sie Wissen, Fakten und Fähigkeiten für LLMs verschmutzen.
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 ,
)Dies sind verfügbare Funktionen in diesem einfachen Tool
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 ]: ...Wenn Sie Fragen, Feedback oder Unterstützung haben, können Sie sich gerne wenden:
? E -Mail: Meine E -Mail
GitHub -Probleme: Eingabe einreichen
LinkedIn: LinkedIn -Profil
Wenn Sie dieses Projekt hilfreich finden, erwägen Sie es, es zu unterstützen, wenn Sie:
Jeder Beitrag hilft, das Projekt besser zu machen!