tiny_vectordb
1.0.0
小規模プロジェクト向けに設計された軽量ベクトルデータベース。
特徴
パフォーマンス
Numpyベースのベクトル操作よりも10倍以上速い。
現在、G ++またはClang ++と互換性があります。
コンパイルコマンドを挿入するには、 VectorDatabase初期化でcompile_configパラメーターを変更する必要がある場合があります。
他のコンパイラで動作させるには、 tiny_vectordb.jitモジュールを変更する必要がある場合があります。
pip install tiny_vectordb行ってよかった!
パッケージは、Sourceディレクトリにコンパイルされたファイルを発射しますが、これはpip uninstallを使用して自動的に削除できないため、パッケージをcomletelyにアンインストールする場合は、次のコマンドを手動で実行する必要があります。
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 ]]: