Affine เป็นไลบรารี Python สำหรับการจัดหาอินเทอร์เฟซที่มีโครงสร้างและมีโครงสร้างให้กับฐานข้อมูลเวกเตอร์สำรองที่หลากหลายและห้องสมุดเพื่อนบ้านที่ใกล้ที่สุดโดยประมาณ ช่วยให้วัตถุคล้ายดาต้าเลสง่ายๆสามารถอธิบายคอลเลกชันพร้อมกับไวยากรณ์การสืบค้นระดับสูงสำหรับการค้นหาเวกเตอร์ที่ผ่านการกรอง
สำหรับฐานข้อมูลเวกเตอร์ปัจจุบันรองรับ:
สำหรับโหมดท้องถิ่นรองรับห้องสมุดเพื่อนบ้านที่ใกล้ที่สุดต่อไปนี้:
หมายเหตุ: โครงการนี้คล้ายกับ 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 เดียวกันสำหรับ interchangeabillity (ยกเว้นข้อ จำกัด เฉพาะของเครื่องยนต์ที่กล่าวถึงด้านล่าง) มีสองประเภทของเครื่องยนต์ที่กว้าง
LocalEngine : นี่เป็นการค้นหาเพื่อนบ้านที่ใกล้ที่สุดในเครื่องปฏิบัติการและรองรับห้องสมุดที่หลากหลายสำหรับการสนับสนุนเพื่อนบ้านที่ใกล้ที่สุด (สิ่งเหล่านี้เรียกว่า แบ็กเอนด์ ของเครื่องยนต์ท้องถิ่น)
เอ็นจิ้นฐานข้อมูลเวกเตอร์: เครื่องยนต์ที่เชื่อมต่อกับบริการฐานข้อมูลเวกเตอร์เช่น Qdrant, Weaviate หรือ Pinecone
ฐานข้อมูลเวกเตอร์ที่รองรับในปัจจุบันคือ:
| ฐานข้อมูล | ระดับ | อาร์กิวเมนต์ตัวสร้าง | หมายเหตุ |
|---|---|---|---|
| qdrant | affine.engine.QdrantEngine | host: str ที่จะใช้port: int ที่จะใช้ | - |
| ทอผ้า | affine.engine.WeaviateEngine | host: str ที่จะใช้port: int ที่จะใช้ | - |
| Pinecone | affine.engine.PineconeEngine | api_key: Union[str, None] PINECONE API KEY หากไม่ได้ให้บริการจะถูกอ่านจากตัวแปรสภาพแวดล้อม pinecone_api_keyspec: Union[ServerlessSpec, PodSpec, None] วัตถุ PODSPEC หรือ ServerlessSpec หากไม่ได้ให้บริการ ServerlessSpec จะถูกสร้างขึ้นจากตัวแปรสภาพแวดล้อม pinecone_cloud และ pinecone_region | เอ็นจิ้น Pinecone มีข้อ จำกัด ที่ทุกคอลเลกชันจะต้องมีแอตทริบิวต์เวกเตอร์เดียว |
คลาส LocalEngine จัดให้มีอินเทอร์เฟซสำหรับการค้นหาเพื่อนบ้านที่ใกล้ที่สุดในเครื่องปฏิบัติการรองรับห้องสมุดที่หลากหลายสำหรับการสนับสนุนเพื่อนบ้านที่ใกล้ที่สุด ข้อใดที่ระบุไว้โดยอาร์กิวเมนต์ backend กับตัวสร้าง ตัวอย่างเช่นการใช้ annoy :
from affine . engine . local import LocalEngine , AnnoyBackend
db = LocalEngine ( backend = AnnoyBackend ( n_tress = 10 ))ตัวเลือกและการตั้งค่าสำหรับแบ็กเอนด์ที่รองรับต่าง ๆ มีดังนี้:
| ห้องสมุด | ระดับ | อาร์กิวเมนต์ตัวสร้าง | หมายเหตุ |
|---|---|---|---|
| ไร้เดียงสา/ไร้เดียงสา | 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 | - |
| คน | affine.engine.local.FAISSBackend | index_factory_str: str | - |
| pyndescent | affine.engine.local.PyNNDescentBackend | อาร์กิวเมนต์คำหลักที่ส่งผ่านโดยตรงไปยัง pynndescent.NNDescent | - |