ولدت لتكون بسيطة. يوفر غلاف Python البسيط دعمًا فعالًا لعمليات CRUD والاستعلام مع قواعد بيانات المتجهات. ".
لتثبيت جميع حالات دعم قاعدة بيانات المتجهات (تتطلب الكثير من مساحة القرص ، غير موصى بها)
pip install pyvectordb[all]إذا كنت بحاجة فقط إلى محرك قاعدة بيانات متجه محدد ، فيمكنك استخدام (موصى به)
pip install pyvectordb[pgvector]pip install pyvectordb[qdrant]pip install pyvectordb[chromadb]PGVector هو امتداد لـ PostgreSQL الذي يسمح بتخزين وفهرسة وتضمينات المتجهات. إنه مصمم لدعم البحث في المتجهات ، وهو مفيد في تطبيقات التعلم الآلي مثل معالجة اللغة الطبيعية ، والتعرف على الصور ، وأنظمة التوصية. من خلال تخزين التضمينات المتجهات كنوع بيانات ، يتيح PGVector عمليات البحث الفعالة للتشابه باستخدام مقاييس المسافة مثل تشابه جيب التمام ، والمسافة الإقليدية ، والمنتج الداخلي ، إلخ.
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 "هو محرك بحث تشابه المتجه يوفر خدمة جاهزة للإنتاج مع واجهة برمجة تطبيقات مريحة لتخزين النقاط والبحث وإدارة (IE) بحمولة إضافية." يمكنك التفكير في الحمولات الصافية كأجمل إضافية من المعلومات التي يمكن أن تساعدك في البحث في البحث الخاص بك وأيضًا تلقي معلومات مفيدة يمكنك تقديمها للمستخدمين.
يعد استخدام QDrant في PyvectordB أمرًا بسيطًا ، فأنت بحاجة فقط إلى تغيير العميل إلى 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 هي قاعدة بيانات متجه AI-Open Open Open-Open. يجعل Chroma من السهل بناء تطبيقات LLM من خلال جعل المعرفة والحقائق والمهارات قابلة للتجميع لـ LLMs.
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 ,
)هذه وظائف متوفرة في هذه الأداة البسيطة
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 ]: ...إذا كان لديك أي أسئلة أو ملاحظات أو تحتاج إلى دعم ، فلا تتردد في التواصل:
؟ البريد الإلكتروني: بريدي الإلكتروني
قضايا جيثب: تقديم مشكلة
LinkedIn: ملف تعريف LinkedIn
إذا وجدت هذا المشروع مفيدًا ، ففكر في دعمه بواسطة:
كل مساهمة تساعد في جعل المشروع أفضل!