FastEmbed هي مكتبة بايثون خفيفة الوزن وسريعة مصممة للتضمين. نحن ندعم نماذج النص الشائعة. يرجى فتح مشكلة GitHub إذا كنت تريد منا إضافة نموذج جديد.
نموذج تضمين النص الافتراضي ( TextEmbedding
) هو Flag Embedding، المعروض في لوحة المتصدرين لـ MTEB. وهو يدعم بادئات "الاستعلام" و"المرور" لنص الإدخال. فيما يلي مثال على إنشاء تضمين الاسترجاع وكيفية استخدام FastEmbed مع Qdrant.
Light: FastEmbed هي مكتبة خفيفة الوزن مع عدد قليل من التبعيات الخارجية. نحن لا نحتاج إلى وحدة معالجة رسومات (GPU) ولا نقوم بتنزيل غيغابايت من تبعيات PyTorch، وبدلاً من ذلك نستخدم ONNX Runtime. وهذا يجعله مرشحًا رائعًا لأوقات التشغيل بدون خادم مثل AWS Lambda.
سريع: تم تصميم FastEmbed للسرعة. نحن نستخدم ONNX Runtime، وهو أسرع من PyTorch. نستخدم أيضًا توازي البيانات لترميز مجموعات البيانات الكبيرة.
دقيق: FastEmbed أفضل من OpenAI Ada-002. نحن ندعم أيضًا مجموعة متزايدة من النماذج، بما في ذلك بعض النماذج متعددة اللغات.
لتثبيت مكتبة FastEmbed، تعمل النقطة بشكل أفضل. يمكنك تثبيته مع أو بدون دعم GPU:
pip install fastembed# أو مع دعم GPUpip install fastembed-gpu
من fastembed استيراد TextEmbeddingمن الكتابة import List# مثال لقائمة المستنداتdocuments: List[str] = [ "تم تصميم هذا ليكون أسرع وأخف وزنًا من مكتبات التضمين الأخرى، على سبيل المثال المحولات، ومحولات الجملة، وما إلى ذلك."، "يتم دعم 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)) # يمكنك أيضًا تحويل المولد إلى قائمة، وذلك إلى arraylen numpy(embeddings_list[0]) # متجه ذو 384 بُعدًا
يدعم Fastembed مجموعة متنوعة من النماذج للمهام والطرائق المختلفة. يمكن العثور على قائمة بجميع الموديلات المتاحة هنا
من fastembed import 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),# array([-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, ... ], value=[0.71, 0.22, 0.39, ...]),# SparseEmbedding(indices=[ 38, 12, 91, ... ], value=[0.11, 0.22, 0.39, ...])# ]
من fastembed import 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, ...],# ]),# array([# [-0.9019, 0.0335, -0.0032, 0.0991, ...],# [-0.2115, 0.8097 , 0.1052, 0.0195, ...],# ]),# ]
من الاستيراد السريع 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),# array([-0.1019, 0.0635, -0.0332, 0.0522, ...], dtype=float32)# ]
يدعم FastEmbed التشغيل على أجهزة GPU. يتطلب تثبيت حزمة fastembed-gpu
.
نقطة تثبيت fastembed-gpu
تحقق من مثالنا للحصول على تعليمات مفصلة ودعم CUDA 12.x واستكشاف المشكلات الشائعة وإصلاحها.
من الاستيراد السريع TextEmbeddingembedding_model = TextEmbedding(model_name="BAAI/bge-small-en-v1.5"، Providers=["CUDAExecutionProvider"] )print("النموذج BAAI/bge-small-en-v1.5 جاهز للاستخدام على وحدة معالجة الرسومات.")
التثبيت مع عميل Qdrant في بايثون:
تثبيت النقطة qdrant-client[fastembed]
أو
تثبيت النقطة qdrant-client[fastembed-gpu]
قد تضطر إلى استخدام علامات الاقتباس pip install 'qdrant-client[fastembed]'
على zsh.
from qdrant_client import QdrantClient# تهيئة العميل = QdrantClient("localhost", port=6333) # For production# client = QdrantClient(":memory:") # للتجارب الصغيرة# قم بإعداد المستندات والبيانات التعريفية والمعرفات IDsdocs = ["Qdrant" لديه تكاملات Langchain"، "يحتوي Qdrant أيضًا على تكاملات مؤشر Llama"]البيانات الوصفية = [ {"مصدر": "Langchain-docs"}, {"مصدر": "مستندات-فهرس اللاما"}, ]ids = [42, 2]# إذا كنت تريد تغيير النموذج:# client.set_model("sentence-transformers/all-MiniLM-L6-v2")# قائمة النماذج المدعومة: https://qdrant.github. io/fastembed/examples/Supported_Models# استخدم الإضافة الجديدة () بدلاً من upsert()# يستدعي هذا داخليًا embed() لنموذج التضمين الذي تم تكوينهclient.add( Collection_name="demo_collection", document=docs, metadata=metadata, ids= ids)search_result = client.query( Collection_name = "demo_collection"، query_text = "هذا مستند استعلام") print(search_result)