เกิดมาเพื่อความเรียบง่าย Wrapper Python Simple ให้การสนับสนุนที่มีประสิทธิภาพสำหรับการดำเนินการ CRUD และการสืบค้นด้วยฐานข้อมูลเวกเตอร์ "
ในการติดตั้ง depedencies ฐานข้อมูลเวกเตอร์ทั้งหมด (ต้องการพื้นที่ดิสก์จำนวนมากไม่แนะนำ)
pip install pyvectordb[all]หากคุณต้องการเพียงเอ็นจิ้นฐานข้อมูลเวกเตอร์ที่เฉพาะเจาะจงคุณสามารถใช้ (แนะนำ)
pip install pyvectordb[pgvector]pip install pyvectordb[qdrant]pip install pyvectordb[chromadb]PGVECTOR เป็นส่วนขยายสำหรับ PostgreSQL ที่อนุญาตให้จัดเก็บข้อมูลการจัดทำดัชนีและการสืบค้นของการฝังเวกเตอร์ มันถูกออกแบบมาเพื่อรองรับการค้นหาความคล้ายคลึงกันของเวกเตอร์ซึ่งมีประโยชน์ในแอพพลิเคชั่นการเรียนรู้ของเครื่องเช่นการประมวลผลภาษาธรรมชาติการจดจำภาพและระบบแนะนำ ด้วยการจัดเก็บการฝังเวกเตอร์เป็นชนิดข้อมูล PGVector ช่วยให้การค้นหาความคล้ายคลึงกันอย่างมีประสิทธิภาพโดยใช้ตัวชี้วัดระยะทางเช่นความคล้ายคลึงกันของโคไซน์ระยะทางยุคลิด, ผลิตภัณฑ์ภายใน ฯลฯ
from dotenv import load_dotenv
load_dotenv ()
import os
from pyvectordb import Vector
from pyvectordb . pgvector . pgvector import PgvectorDB
from pyvectordb . distance_function import DistanceFunction
v1 = Vector (
embedding = [ 2. , 2. , 1. ],
metadata = { "text" : "hellow from pyvectordb" }
)
v2 = Vector (
embedding = [ 2. , 2. , 2. ],
metadata = { "text" : "hi" }
)
v3 = Vector (
embedding = [ 2. , 2. , 3. ],
metadata = { "text" : "good morning!" }
)
vector_db = PgvectorDB (
user = os . getenv ( "PG_USER" ),
password = os . getenv ( "PG_PASSWORD" ),
host = os . getenv ( "PG_HOST" ),
port = os . getenv ( "PG_PORT" ),
db_name = os . getenv ( "PG_NAME" ),
collection = os . getenv ( "PG_COLLECTION" ),
distance_function = DistanceFunction . L2 ,
)
# insert new vector
vector_db . insert_vector ( v1 )
vector_db . insert_vectors ([ v2 , v3 ])
# read v1
v_from_db = vector_db . read_vector ( v1 . get_id ())
# update v1 embedding
new_embedding = [ 2. , 2. , 4. ]
v_from_db . embedding = new_embedding
vector_db . update_vector ( v_from_db )
# read updated embedding and check
v_from_db_updated = vector_db . read_vector ( v1 . get_id ())
assert list ( v_from_db_updated . embedding ) == list ( new_embedding ), "updated embedding not equal"
# re-update v1 embedding to the v1, check
vector_db . update_vectors ([ v1 , v2 , v3 ])
re_updated_embedding = vector_db . read_vector ( v1 . get_id ()). embedding
assert list ( re_updated_embedding ) == list ( v1 . embedding ), "re-updated embedding not equal"
for x in vector_db . get_neighbor_vectors ( v1 , 3 ):
print ( f" { x } " )
vector_db . delete_vector ( v1 . get_id ())
vector_db . delete_vectors ([ v2 , v3 ])QDRANT“ เป็นเครื่องมือค้นหาความคล้ายคลึงกันของเวกเตอร์ที่ให้บริการพร้อมการผลิตพร้อม API ที่สะดวกในการจัดเก็บค้นหาและจัดการคะแนน (เช่นเวกเตอร์) พร้อมน้ำหนักบรรทุกเพิ่มเติม” คุณสามารถนึกถึง Payloads เป็นข้อมูลเพิ่มเติมที่สามารถช่วยคุณฝึกฝนในการค้นหาของคุณและยังได้รับข้อมูลที่เป็นประโยชน์ที่คุณสามารถให้กับผู้ใช้ของคุณ
การใช้ qdrant ใน pyvectordb นั้นง่ายคุณจะต้องเปลี่ยนไคลเอนต์เป็น QdrantDB
from pyvectordb import QdrantDB
vector_db = QdrantDB (
host = os . getenv ( "Q_HOST" ),
api_key = os . getenv ( "Q_API_KEY" ),
port = os . getenv ( "Q_PORT" ),
collection = os . getenv ( "Q_COLLECTION" ),
vector_size = int ( os . getenv ( "Q_SIZE" )),
distance_function = DistanceFunction . COSINE ,
)Chroma เป็นฐานข้อมูลเวกเตอร์โอเพนซอร์ซ Chroma ทำให้ง่ายต่อการสร้างแอพ LLM โดยการสร้างความรู้ข้อเท็จจริงและทักษะที่สามารถทำได้สำหรับ LLMS
from pyvectordb import ChromaDB
vector_db = ChromaDB (
host = os . getenv ( "CH_HOST" ),
port = os . getenv ( "CH_PORT" ),
auth_provider = os . getenv ( "CH_AUTH_PROVIDER" ),
auth_credentials = os . getenv ( "CH_AUTH_CREDENTIALS" ),
collection_name = os . getenv ( "CH_COLLECTION_NAME" ),
distance_function = DistanceFunction . L2 ,
)ฟังก์ชั่นเหล่านี้มีอยู่ในเครื่องมือง่าย ๆ นี้
def insert_vector ( self , vector : Vector ) -> None : ...
def insert_vectors ( self , vectors : List [ Vector ]) -> None : ...
def read_vector ( self , id : str ) -> Vector | None : ...
def update_vector ( self , vector : Vector ) -> None : ...
def update_vectors ( self , vectors : List [ Vector ]) -> None : ...
def delete_vector ( self , id : str ) -> None : ...
def delete_vectors ( self , ids : Union [ List [ str ], List [ Vector ]]) -> None : ...
def get_neighbor_vectors ( self , vector : Vector , n : int ) -> List [ VectorDistance ]: ...หากคุณมีคำถามข้อเสนอแนะหรือต้องการการสนับสนุนอย่าลังเลที่จะติดต่อ:
- อีเมล: อีเมลของฉัน
ปัญหา GitHub: ส่งปัญหา
LinkedIn: โปรไฟล์ LinkedIn
หากคุณพบว่าโครงการนี้มีประโยชน์ให้พิจารณาสนับสนุนโดย:
การบริจาคทุกครั้งช่วยให้โครงการดีขึ้น!