ฐานข้อมูลเวกเตอร์น้ำหนักเบาออกแบบมาสำหรับโครงการขนาดเล็ก
คุณสมบัติ
ผลงาน
เร็วกว่าการดำเนินงานเวกเตอร์ที่ใช้ NUMPY มากกว่า 10 เท่า
ปัจจุบันเข้ากันได้กับ G ++ หรือ Clang ++
คุณอาจต้องแก้ไขพารามิเตอร์ compile_config ในการเริ่มต้น VectorDatabase เพื่อฉีดคำสั่งคอมไพล์ของคุณ
เพื่อให้มันทำงานกับคอมไพเลอร์อื่น ๆ คุณอาจต้องเปลี่ยนโมดูล tiny_vectordb.jit
pip install tiny_vectordbดีไป!
แพ็คเกจจะปล่อยไฟล์ที่รวบรวมไว้ในไดเรกทอรีต้นฉบับซึ่งอาจไม่ถูกลบออกโดยอัตโนมัติโดยใช้ pip uninstall ดังนั้นคุณต้องเรียกใช้คำสั่งต่อไปนี้ด้วยตนเองหากคุณต้องการถอนการติดตั้งแพ็คเกจ
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 Py
การออกแบบหมายเหตุ:
ไม่มีการใช้อาร์เรย์ Numpy ในฐานข้อมูลเพราะฉันต้องการให้มันมีน้ำหนักเบาที่สุดเท่าที่จะเป็นไปได้และรายการตัวเลขจะถูกแปลงเป็น JSON เพื่อสื่อสารกับคำขอ HTTP
ข้อมูลจะถูกเก็บไว้ในหน่วยความจำที่ต่อเนื่องกันเสมอเพื่อให้แน่ใจว่าประสิทธิภาพการค้นหาที่ดีที่สุด
ดังนั้นการเพิ่มและการลบจึงเป็นที่ต้องการที่จะทำในแบทช์เนื่องจากพวกเขา envolve การจัดสรรหน่วยความจำใหม่
นี่คือฟังก์ชั่นที่มีประโยชน์สำหรับการดำเนินการแบทช์:
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 ]]: