Database vektor ringan yang dirancang untuk proyek -proyek kecil.
Fitur
Pertunjukan
Lebih dari 10x lebih cepat dari operasi vektor berbasis Numpy.
Saat ini kompatibel dengan G ++ atau Clang ++.
Anda mungkin perlu memodifikasi parameter compile_config dalam inisialisasi VectorDatabase untuk menyuntikkan perintah kompilasi Anda.
Untuk membuatnya bekerja dengan kompiler lain, Anda mungkin perlu mengubah modul tiny_vectordb.jit .
pip install tiny_vectordbSenang pergi!
Paket akan memancarkan beberapa file yang dikompilasi di direktori sumber, yang mungkin tidak secara otomatis dihapus menggunakan pip uninstall , jadi Anda perlu menjalankan perintah berikut secara manual jika Anda ingin menghapus instalasi paket dengan nyaman.
python -c " import tiny_vectordb; tiny_vectordb.cleanup() "Setelah itu, Anda dapat dengan aman menghapus paket dengan:
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 ) Untuk penggunaan lebih lanjut, lihat example.py .
Catatan Desain:
Tidak ada array numpy yang digunakan dalam database, karena saya ingin sekeras mungkin, dan daftar angka adalah eaiser untuk dikonversi menjadi JSON untuk komunikasi dengan permintaan HTTP.
Data selalu disimpan dalam memori yang berdekatan untuk memastikan kinerja pencarian terbaik.
Jadi penambahan dan penghapusan lebih disukai dilakukan dalam batch karena mereka menyelimuti realokasi memori.
Berikut adalah beberapa fungsi yang berguna untuk operasi batch:
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 ]]: