tiny_vectordb
1.0.0
소규모 프로젝트를 위해 설계된 가벼운 벡터 데이터베이스.
특징
성능
Numpy 기반 벡터 작업보다 10 배 이상 빠릅니다.
현재 G ++ 또는 Clang ++와 호환됩니다.
compile 명령을 주입하려면 VectorDatabase 초기화에서 compile_config 매개 변수를 수정해야 할 수도 있습니다.
다른 컴파일러와 함께 작동하려면 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 참조하십시오.
메모 설계 :
데이터베이스에는 Numpy 배열이 사용되지 않습니다. 가능한 한 가벼워지기를 원하며 숫자 목록은 HTTP 요청과의 커뮤니케이션을 위해 JSON으로 변환해야합니다.
데이터는 항상 최상의 검색 성능을 보장하기 위해 항상 연속 메모리로 저장됩니다.
따라서 추가 및 삭제는 메모리 재 할당을 구상 할 때 배치로 수행하는 것이 선호됩니다.
배치 작업에 유용한 기능은 다음과 같습니다.
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 ]]: