FastEmbed เป็นไลบรารี Python ที่มีน้ำหนักเบาและรวดเร็วซึ่งสร้างขึ้นสำหรับการฝังรุ่น เรารองรับโมเดลข้อความยอดนิยม โปรดเปิดปัญหา GitHub หากคุณต้องการให้เราเพิ่มโมเดลใหม่
รูปแบบการฝังข้อความเริ่มต้น ( TextEmbedding
) คือการฝังธง ซึ่งแสดงอยู่ในบอร์ดผู้นำ MTEB รองรับคำนำหน้า "query" และ "passage" สำหรับข้อความที่ป้อน นี่คือตัวอย่างสำหรับการสร้างการดึงข้อมูลการฝังและวิธีใช้ FastEmbed กับ Qdrant
Light: FastEmbed เป็นไลบรารีน้ำหนักเบาที่มีการขึ้นต่อกันภายนอกเพียงเล็กน้อย เราไม่ต้องใช้ GPU และไม่ดาวน์โหลด GB ของการพึ่งพา PyTorch และใช้ ONNX Runtime แทน สิ่งนี้ทำให้เป็นตัวเลือกที่ยอดเยี่ยมสำหรับรันไทม์แบบไร้เซิร์ฟเวอร์เช่น AWS Lambda
รวดเร็ว: FastEmbed ได้รับการออกแบบมาเพื่อความเร็ว เราใช้ ONNX Runtime ซึ่งเร็วกว่า PyTorch นอกจากนี้เรายังใช้ข้อมูลแบบขนานสำหรับการเข้ารหัสชุดข้อมูลขนาดใหญ่
แม่นยำ: FastEmbed ดีกว่า OpenAI Ada-002 นอกจากนี้เรายังสนับสนุนชุดรูปแบบที่ขยายตัวอย่างต่อเนื่อง รวมถึงโมเดลหลายภาษาบางส่วนด้วย
หากต้องการติดตั้งไลบรารี FastEmbed pip จะทำงานได้ดีที่สุด คุณสามารถติดตั้งโดยมีหรือไม่มีการรองรับ GPU:
pip ติดตั้ง fastembed# หรือรองรับ GPUpip ติดตั้ง fastembed-gpu
จากการนำเข้า fastembed TextEmbedding จากการพิมพ์การนำเข้า List# ตัวอย่างรายการเอกสารเอกสาร: List[str] = [ "สิ่งนี้ถูกสร้างขึ้นเพื่อให้เร็วกว่าและเบากว่าไลบรารีแบบฝังอื่นๆ เช่น Transformers, Sentence-Transformers ฯลฯ", "fastembed ได้รับการสนับสนุนและดูแลรักษา โดย Qdrant", ]# สิ่งนี้จะทริกเกอร์การดาวน์โหลดโมเดลและการเริ่มต้น embedding_model = TextEmbedding()print("โมเดล BAAI/bge-small-en-v1.5 พร้อมใช้งาน")embeddings_generator = embedding_model.embed(documents) # เตือนความจำ นี่คือ Generatorembeddings_list = list(embedding_model.embed(documents)) # คุณยังสามารถแปลงตัวสร้างเป็นรายการได้และเป็นอาร์เรย์ numpy arraylen(embeddings_list[0]) # เวกเตอร์ขนาด 384
Fastembed รองรับโมเดลที่หลากหลายสำหรับงานและรูปแบบที่แตกต่างกัน สามารถดูรายชื่อรุ่นที่มีจำหน่ายทั้งหมดได้ที่นี่
จากการนำเข้า fastembed TextEmbeddingmodel = TextEmbedding(model_name="BAAI/bge-small-en-v1.5")embeddings = list(model.embed(documents))# [# array([-0.1115, 0.0097, 0.0052, 0.0195, . ..], dtype=float32),# อาร์เรย์ ([-0.1019, 0.0635, -0.0332, 0.0522, ...], dtype=float32)# ]
สแปลด++
จากการนำเข้าแบบฝังอย่างรวดเร็ว SparseTextEmbeddingmodel = SparseTextEmbedding(model_name="prithivida/Splade_PP_en_v1")embeddings = list(model.embed(documents))# [# SparseEmbedding(indices=[ 17, 123, 919, ... ] ค่า=[0.71, 0.22, 0.39, ...]),# SparseEmbedding(indices=[ 38, 12, 91, ... ] ค่า=[0.11, 0.22, 0.39, ...])# ]
จากการนำเข้า fastembed LateInteractionTextEmbeddingmodel = LateInteractionTextEmbedding(model_name="colbert-ir/colbertv2.0")embeddings = list(model.embed(documents))# [# array([# [-0.1115, 0.0097, 0.0052, 0.0195, ... ],# [-0.1019, 0.0635, -0.0332, 0.0522, ...],# ]),# อาร์เรย์([# [-0.9019, 0.0335, -0.0032, 0.0991, ...],# [-0.2115, 0.8097 , 0.1052, 0.0195, ...],# ]), # ]
จากการนำเข้า Fastembed ImageEmbeddingimages = [ "./path/to/image1.jpg", "./path/to/image2.jpg", ]model = ImageEmbedding(model_name="Qdrant/clip-ViT-B-32-vision")embeddings = list(model.embed(images))# [# array([-0.1115, 0.0097, 0.0052, 0.0195, ... ], dtype=float32),# อาร์เรย์ ([-0.1019, 0.0635, -0.0332, 0.0522, ...], dtype=float32)# ]
FastEmbed รองรับการทำงานบนอุปกรณ์ GPU ต้องมีการติดตั้งแพ็คเกจ fastembed-gpu
pip ติดตั้ง fastembed-gpu
ดูตัวอย่างของเราเพื่อดูคำแนะนำโดยละเอียด การสนับสนุน CUDA 12.x และการแก้ไขปัญหาทั่วไป
จากการนำเข้า fastembed TextEmbeddingembedding_model = TextEmbedding( model_name="BAAI/bge-small-en-v1.5", ผู้ให้บริการ=["CUDAExecutionProvider"] )print("รุ่น BAAI/bge-small-en-v1.5 พร้อมใช้งานบน GPU")
การติดตั้งด้วย Qdrant Client ใน Python:
pip ติดตั้ง qdrant-client [ติดตั้ง]
หรือ
pip ติดตั้ง qdrant-client [fastembed-gpu]
คุณอาจต้องใช้เครื่องหมายคำพูด pip install 'qdrant-client[fastembed]'
บน zsh
จาก qdrant_client import QdrantClient# เตรียมใช้งาน clientclient = QdrantClient("localhost", port=6333) # For Production# client = QdrantClient(":memory:") # สำหรับการทดลองขนาดเล็ก# เตรียมเอกสาร เมตาดาต้า และ IDsdocs = ["Qdrant มีการบูรณาการ Langchain", "Qdrant ยังมีการบูรณาการดัชนี Llama ด้วย"]ข้อมูลเมตา = [ {"แหล่งที่มา": "Langchain-docs"}, {"แหล่งที่มา": "Llama-index-docs"}, ]ids = [42, 2]# หากคุณต้องการเปลี่ยนโมเดล:# client.set_model("sentence-transformers/all-MiniLM-L6-v2")# รายการรุ่นที่รองรับ: https://qdrant.github io/fastembed/examples/Supported_Models# ใช้การเพิ่มใหม่() แทน upsert()# การเรียกใช้ภายในนี้ embed() ของการฝัง modelclient.add( collection_name="demo_collection", document=docs, metadata=metadata, ids= ids)search_result = client.query( collection_name="demo_collection", query_text="นี่คือเอกสารแบบสอบถาม")print(search_result)