affine
v0.1.0
Aggine是一個Python庫,用於為各種備份矢量數據庫和大約最近的鄰居庫提供統一和結構化的接口。它允許簡單的類似數據級的對象與用於進行過濾的向量搜索的高級查詢語法一起描述集合。
對於矢量數據庫,它目前支持:
對於本地模式,支持以下大約最近的鄰居庫:
注意:這個項目與VectordB-orm非常相似,VectordB-orm似乎不再維護。
pip install affine-vectordb
# or `pip install "affine-vectordb[qdrant]"` for qdrant support
# `pip install "affine-vectordb[weaviate]"` for weaviate support
# `pip install "affine-vectordb[pinecone]"` for pinecone support from affine import Collection , Vector , Filter , Query
# Define a collection
class MyCollection ( Collection ):
vec : Vector [ 3 ] # declare a 3-dimensional vector
# support for additional fields for filtering
a : int
b : str
db = LocalEngine ()
# Insert vectors
db . insert ( MyCollection ( vec = [ 0.1 , 0.0 , - 0.5 ], a = 1 , b = "foo" ))
db . insert ( MyCollection ( vec = [ 1.3 , 2.1 , 3.6 ], a = 2 , b = "bar" ))
db . insert ( MyCollection ( vec = [ - 0.1 , 0.2 , 0.3 ], a = 3 , b = "foo" ))
# Query vectors
result : list [ MyCollection ] = (
db . query ( MyCollection )
. filter ( MyCollection . b == "foo" )
. similarity ([ 2.8 , 1.8 , - 4.5 ])
. limit ( 1 )
)仿射的基本概念是Engine課程。所有此類類都符合互換的同一API(除了一些特定於發動機的限制外,如下所述)。有兩種廣泛的引擎
LocalEngine :這確實在執行機上最近的鄰居搜索,並為最近的Neighborsearch支持各種庫(這些庫稱為本地發動機的後端)。
向量數據庫引擎:這些是連接到矢量數據庫服務的引擎,例如QDRANT,WEAVIATE或PINECONE。
當前支持的向量數據庫是:
| 資料庫 | 班級 | 構造者參數 | 筆記 |
|---|---|---|---|
| QDRANT | affine.engine.QdrantEngine | host: str主機名port: int端口 | - |
| 編織 | affine.engine.WeaviateEngine | host: str主機名port: int端口 | - |
| 松果 | affine.engine.PineconeEngine | api_key: Union[str, None] Pinecone API鍵。如果未提供,將從環境變量Pinecone_api_key中讀取。spec: Union[ServerlessSpec, PodSpec, None] podspec或serverlessspec對象。如果未提供,將從環境變量Pinecone_cloud和Pinecone_Region創建ServerlessSpec 。 | Pinecone引擎的限制是,每個集合都必須完全包含一個向量屬性。 |
LocalEngine類提供了一個接口,用於在執行計算機上進行最近的鄰居搜索,並支持各種庫以用於備份最近的Neighborsearch。由backend參數指定的構造函數指定了哪一個。例如,使用annoy :
from affine . engine . local import LocalEngine , AnnoyBackend
db = LocalEngine ( backend = AnnoyBackend ( n_tress = 10 ))各種支持後端的選項和設置如下:
| 圖書館 | 班級 | 構造者參數 | 筆記 |
|---|---|---|---|
| 幼稚/numpy | affine.engine.local.NumPyBackend | - | - |
| Scikit-Learn Kdtree | affine.engine.local.KDTreeBackend | 關鍵字參數直接傳遞給sklearn.neighbors.KDTree | - |
| 煩人 | affine.engine.local.AnnoyBackend | n_trees: int使用的樹木數量n_jobs: int默認為-1 | - |
| faiss | affine.engine.local.FAISSBackend | index_factory_str: str | - |
| Pynndescent | affine.engine.local.PyNNDescentBackend | 關鍵字參數直接傳遞給pynndescent.NNDescent | - |