Terlahir untuk menjadi sederhana. Pembungkus Python sederhana memberikan dukungan yang efisien untuk operasi CRUD dan menanyakan dengan database vektor. ".
Untuk menginstal semua depedensi dukungan database vektor (membutuhkan banyak ruang disk, tidak disarankan)
pip install pyvectordb[all]Jika Anda hanya memerlukan mesin basis data vektor tertentu, Anda dapat menggunakan (disarankan)
pip install pyvectordb[pgvector]pip install pyvectordb[qdrant]pip install pyvectordb[chromadb]PGVector adalah ekstensi untuk PostgreSQL yang memungkinkan penyimpanan, pengindeksan, dan permintaan embeddings vektor. Ini dirancang untuk mendukung pencarian kesamaan vektor, yang berguna dalam aplikasi pembelajaran mesin seperti pemrosesan bahasa alami, pengenalan gambar, dan sistem rekomendasi. Dengan menyimpan embeddings vektor sebagai tipe data, pGVector memungkinkan pencarian kesamaan yang efisien menggunakan metrik jarak seperti kesamaan cosinus, jarak Euclidean, produk dalam, dll.
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 “adalah mesin pencari kesamaan vektor yang menyediakan layanan siap-produksi dengan API yang nyaman untuk menyimpan, mencari, dan mengelola poin (yaitu vektor) dengan muatan tambahan.” Anda dapat menganggap muatan sebagai informasi tambahan yang dapat membantu Anda mengasah pencarian Anda dan juga menerima informasi berguna yang dapat Anda berikan kepada pengguna Anda.
Menggunakan qdrant di pyvectordb sederhana, Anda hanya perlu mengubah klien ke 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 ,
)Chroma adalah database vektor open-source asli AI. Chroma memudahkan untuk membangun aplikasi LLM dengan membuat pengetahuan, fakta, dan keterampilan yang dapat dicolokkan untuk 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 ,
)Ini adalah fungsi yang tersedia dalam alat sederhana ini
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 ]: ...Jika Anda memiliki pertanyaan, umpan balik, atau membutuhkan dukungan, jangan ragu untuk menjangkau:
? Email: Email saya
Masalah GitHub: Kirimkan masalah
LinkedIn: Profil LinkedIn
Jika Anda menemukan proyek ini bermanfaat, pertimbangkan untuk mendukungnya dengan:
Setiap kontribusi membantu membuat proyek lebih baik!