? SIFTS는 SQLITE 및 PostgreSQL 데이터베이스를 지원하여 문서 컬렉션을 관리하고 쿼리하기위한 간단하지만 강력한 Python 패키지입니다.
전체 텍스트 검색 및 벡터 검색을 효율적으로 처리하도록 설계되었으므로 대규모 텍스트 데이터 검색과 관련된 응용 프로그램에 이상적입니다.
SIFTS의 주요 아이디어는 SQLITE 및 PostgreSQL의 내장 된 전체 텍스트 검색 기능을 활용하고 통합 된 Pythonic API를 통해 사용할 수 있도록하는 것입니다. 소규모 프로젝트 또는 개발에 SQLITE를 사용하고 사소한 PostgreSQL로 전환하여 응용 프로그램을 확장 할 수 있습니다.
벡터 검색의 경우, 코사인 유사성은 pgvector 확장을 통해 PostgreSQL에서 계산되는 반면, SQLITE 유사성은 메모리에서 계산됩니다.
SIFTS는 다른 앱에서 가져올 라이브러리를 의미하기 때문에 서버 모드와 함께 제공되지 않습니다. 개발에 대한 최초의 동기는 Flask를 기반으로하는 Gramps 웹에서 검색 백엔드로 Whoosh를 대체하는 것이 었습니다.
PIP를 통해 SIFTS를 설치할 수 있습니다.
pip install sifts import sifts
# by default, creates a new SQLite database in the working directory
collection = sifts . Collection ( name = "my_collection" )
# Add docs to the index. Can also update and delete.
collection . add (
documents = [ "Lorem ipsum dolor" , "sit amet" ],
metadatas = [{ "foo" : "bar" }, { "foo" : "baz" }], # otpional, can filter on these
ids = [ "doc1" , "doc2" ], # unique for each doc. Uses UUIDs if omitted
)
results = collection . query (
"Lorem" ,
# limit=2, # optionally limit the number of results
# where={"foo": "bar"}, # optional filter
# order_by="foo", # sort by metadata key (rather than rank)
)API는 Chroma에서 영감을 받았습니다.
Sifts는 다음 검색 구문을 지원합니다.
and 운영자or 연산자* WildCard (SQLITE, 검색 용어의 어느 곳에서나 지원되는 SQLITE, 검색어 종료시 PostgreSQL에서만 지원)검색 구문은 백엔드에 관계없이 동일합니다.
SIFTS는 또한 벡터 저장소로, 시맨틱 검색 엔진에 사용되거나 LLM (Lange Language Models)이있는 RAG (Resprieved-Augmented Generation)에 사용될 수 있습니다.
vector 스토리지를 활성화하고 쿼리 메소드에서 vector_search=True 설정하기 위해 embedding_function Collection 공장으로 전달합니다. 예를 들어, 문장 변압기 라이브러리 사용
from sentence_transformers import SentenceTransformer
model = SentenceTransformer ( "intfloat/multilingual-e5-small" )
def embedding_function ( queries : list [ str ]):
return model . encode ( queries )
collection = sifts . Collection (
db_url = "sqlite:///vector_store.db" ,
name = "my_vector_store" ,
embedding_function = embedding_function
)
# Adding vector data to the collection
collection . add ([ "This is a test sentence." , "Another example query." ])
# Querying the collection with semantic search
results = collection . query ( "Find similar sentences." , vector_search = True ) PostgreSQL 컬렉션에는 pgvector 확장을 설치하고 활성화해야합니다.
ID를 사용하여 문서를 업데이트하거나 삭제할 수 있습니다.
# Update a document
collection . update ( ids = [ "document_id" ], contents = [ "Updated content" ])
# Delete a document
collection . delete ( ids = [ "document_id" ])기부금을 환영합니다! 문제가 발생하거나 개선 제안이 있으면 문제를 만들고 PR을 더 잘 제출하십시오!
SIFTS는 MIT 라이센스에 따라 라이센스가 부여됩니다. 자세한 내용은 라이센스 파일을 참조하십시오.
행복한 사이즈!