قاعدة بيانات متجه خفيفة الوزن مصممة للمشاريع الصغيرة.
سمات
أداء
أكثر من 10x أسرع من عمليات المتجهات المستندة إلى Numpy.
وهو متوافق حاليًا مع G ++ أو Clang ++.
قد تحتاج إلى تعديل معلمة compile_config في تهيئة VectorDatabase لحقن أوامر التجميع الخاصة بك.
لجعله يعمل مع برنامج التحويل البرمجي الآخر ، قد تحتاج إلى تغيير وحدة tiny_vectordb.jit .
pip install tiny_vectordbجيد للذهاب!
ستنبعث الحزمة بعض الملفات المترجمة في الدليل المصدر ، والتي قد لا تتم إزالتها تلقائيًا باستخدام pip uninstall ، لذلك تحتاج إلى تشغيل الأمر التالي يدويًا إذا كنت ترغب في إلغاء تثبيت الحزمة بشكل comletly.
python -c " import tiny_vectordb; tiny_vectordb.cleanup() "بعد ذلك ، يمكنك إلغاء تثبيت الحزمة بأمان مع:
pip uninstall tiny_vectordb from tiny_vectordb import VectorDatabase
collection_configs = [
{
"name" : "hello" ,
"dimension" : 256 ,
},
{
"name" : "world" ,
"dimension" : 1000 ,
}
]
database = VectorDatabase ( "test.db" , collection_configs )
collection = database [ "hello" ]
# add vectors
collection . setBlock (
[ "id1" , "id2" ], # ids
[[ 1 ] * 256 , [ 2 ] * 256 ] # vectors
)
# search for nearest vectors
search_ids , search_scores = collection . search ([ 1.9 ] * 256 ) لمزيد من الاستخدام ، انظر example.py .
ملاحظة ملاحظة:
لا يتم استخدام أي صفيف numpy في قاعدة البيانات ، لأنني أريد أن تكون خفيفة الوزن قدر الإمكان ، ويتم تحويل قوائم الأرقام إلى JSON للتواصل مع طلبات HTTP.
يتم تخزين البيانات دائمًا في الذاكرة المتجاورة لضمان أفضل أداء للبحث.
لذلك من المفضل إجراء الإضافة والحذف على دفعات لأنها تحسد إعادة تخصيص الذاكرة.
فيما يلي بعض الوظائف المفيدة لعمليات الدُفعات:
class VectorCollection ( Generic [ NumVar ]):
def addBlock ( self , ids : list [ str ], vectors : list [ list [ NumVar ]]) -> None :
def setBlock ( self , ids : list [ str ], vectors : list [ list [ NumVar ]]) -> None :
def deleteBlock ( self , ids : list [ str ]) -> None :
def getBlock ( self , ids : list [ str ]) -> list [ list [ NumVar ]]: