단순하게 태어났습니다. 간단한 파이썬 래퍼는 CRUD 작업 및 벡터 데이터베이스 쿼리를 효율적으로 지원합니다. "
모든 벡터 데이터베이스 지원 대상을 설치하려면 (권장하지 않으면 많은 디스크 공간이 필요합니다)
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는“추가 페이로드로 포인트 (IE 벡터)를 저장, 검색 및 관리하기에 편리한 API가있는 프로덕션 준비 서비스를 제공하는 벡터 유사성 검색 엔진입니다. " 페이로드를 검색에 연마하는 데 도움이 될 수있는 추가 정보로 생각하고 사용자에게 제공 할 수있는 유용한 정보를받을 수 있습니다.
pyvectordb에서 qdrant를 사용하는 것은 간단합니다. 클라이언트를 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는 AI-Native Open-Source Vector 데이터베이스입니다. Chroma를 사용하면 LLM에 대한 지식, 사실 및 기술을 만들어 LLM 앱을 쉽게 구축 할 수 있습니다.
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 프로필
이 프로젝트가 도움이되면 다음과 같이 지원하십시오.
모든 기여는 프로젝트를 개선하는 데 도움이됩니다!