- SIFTS เป็นแพ็คเกจ Python ที่เรียบง่าย แต่ทรงพลังสำหรับการจัดการและสอบถามคอลเลกชันเอกสารพร้อมการสนับสนุนสำหรับฐานข้อมูล SQLite และ PostgreSQL
มันถูกออกแบบมาเพื่อจัดการการค้นหาข้อความเต็มรูปแบบและการค้นหาเวกเตอร์อย่างมีประสิทธิภาพทำให้เหมาะสำหรับแอปพลิเคชันที่เกี่ยวข้องกับการดึงข้อมูลข้อความขนาดใหญ่
แนวคิดหลักของ SIFTS คือการใช้ประโยชน์จากความสามารถในการค้นหาข้อความแบบเต็มในตัวใน SQLite และ PostgreSQL และเพื่อให้สามารถใช้งานได้ผ่าน API Pythonic ที่เป็นเอกภาพ คุณสามารถใช้ SQLite สำหรับโครงการขนาดเล็กหรือการพัฒนาและเปลี่ยนเป็น PostgreSQL เล็กน้อยเพื่อขยายแอปพลิเคชันของคุณ
สำหรับการค้นหาเวกเตอร์ความคล้ายคลึงกันของโคไซน์จะคำนวณใน PostgreSQL ผ่านส่วนขยาย PGVector ในขณะที่มีความคล้ายคลึงกันของ SQLite ในหน่วยความจำ
SIFTS ไม่ได้มาพร้อมกับโหมดเซิร์ฟเวอร์เนื่องจากมีความหมายว่าเป็นไลบรารีที่จะนำเข้าโดยแอพอื่น ๆ แรงจูงใจดั้งเดิมสำหรับการพัฒนาคือการแทนที่ whaosh เป็นแบ็กเอนด์ค้นหาในเว็บ Gramps ซึ่งขึ้นอยู่กับ Flask
คุณสามารถติดตั้ง sifts ผ่าน PIP:
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 รองรับทุกที่ในคำค้นหาใน postgreSQL เฉพาะในตอนท้ายของคำค้นหา)ไวยากรณ์การค้นหาเหมือนกันโดยไม่คำนึงถึงแบ็กเอนด์
SIFTS ยังสามารถใช้เป็นร้านค้าเวกเตอร์ที่ใช้สำหรับเครื่องมือค้นหาความหมายหรือการเรียกคืนการรวม (RAG) ที่มีรูปแบบภาษาขนาดใหญ่ (LLMS)
เพียงส่งผ่าน embedding_function ไปยังโรงงาน Collection เพื่อเปิดใช้งานที่เก็บเวกเตอร์และตั้งค่า vector_search=True ในวิธีการสืบค้น ตัวอย่างเช่นการใช้ไลบรารี Transformers ประโยค
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 ดูไฟล์ใบอนุญาตสำหรับรายละเอียด
มีความสุขในการกลั่นกรอง!