تضمين
استرجاع النصوص النصية ، ولكن تخزينها محليًا إذا قمنا بالفعل بحسابها.
تحفيز
إذا كنت تقوم بعمل حفنة من مهام NLP المختلفة ، أو لديك خط أنابيب NLP واحد ، فستواصل ضبطه ، ربما لا ترغب في إعادة حساب التضمينات. وبالتالي ، نحن ذاكرة التخزين المؤقت لهم.
Quickstart
pip install embeddingcache
from embeddingcache.embeddingcache import get_embeddings
embeddings = get_embeddings(
strs=["hi", "I love Berlin."],
embedding_model="all-MiniLM-L6-v2",
db_directory=Path("dbs/"),
verbose=True,
)
افتراضات التصميم
نستخدم SQLite3 لتضمينات ذاكرة التخزين المؤقت. [يمكن تكييف هذا بسهولة ، لأننا نستخدم sqlalchemy.]
نحن نفترض الأحمال الثقيلة ، مع كاتب واحد متزامن. (ومع ذلك ، فإننا نحاول أن نرغب في إخفاقات الكتابة.)
نقوم بقذف SQLITE3 في قواعد بيانات: hashstring.db: جدول التجزئة. كل صف عبارة عن تجزئة (مفتاح أساسي فريد) SHA512 للنص (فريد أيضًا). يتم فهرسة كلا الحقولين.
[inmbeddding_model_name] .db: جدول التضمين. كل صف عبارة عن تجزئة (مفتاح أساسي فريد) SHA512 إلى ناقل numpy (float32) 1-dim ، والذي نقوم بتسلسله على الجدول على أنه بايت.
تعليمات المطور
pre-commit install
pip install -e .
pytest
تودو
- تحديث pyproject.toml
- إضافة الاختبارات
- النظر في وظائف التجزئة الأخرى؟
- Float32 و Float64 دعم
- النظر في إضافة joblib اختياري للتخزين المؤقت؟
- طرق مختلفة لحساب التضمينات (على سبيل المثال باستخدام واجهة برمجة التطبيقات) بدلاً من المحلية
- S3 النسخ الاحتياطي و/أو
- و
- litestream
- أعد إعادة المحاولة على أخطاء الكتابة
- خلفية ديسيبل أخرى
- أفضل الممارسات: إعطاء رقم إصدار Openai محدد.
- ROCKSDB / ROCKSDB-Cloud؟
- قم بتضمين اسم النموذج في DB للتحقق من العقلانية على Slugify.
- التحقق من صحة على حجم صفيف numpy.
- التحقق من حجم النقطة للتجزئة.
- أضف مكتبات اختيارية مثل Openai و Transformers
- ضع في اعتبارك أيضًا مقدمي التضمين الآخرين ، على سبيل المثال Cohere
- و libs فقط ل devs
- النظر في max_length لكل نص لتضمينه ، تحذير إذا تجاوزنا
- PDOC3 و/أو أبو الهول
- تطبيع التضمينات افتراضيًا ، لكن أضف الخيار
- خيار لإرجاع موترات الشعلة
- فكر في إعادة استخدام اتصال DB نفسه بدلاً من إنشائه من الصفر في كل مرة.
- إضافة المعلمة batch_size؟
- اختبار فحص الاصطدام
- استخدام تسجيل عدم الإخراج المطول.
- أعد كتابة الفصول.
- إصلاح تعتمد.
- لا تستمر في إعادة استخدام جلسة DB أو تخزينها في الفصل أو العالمي
- جاف.
- اقترح استخدام نموذج Openai
- أضف جهازًا إلى محولات الجملة
- السماح fast_sentence_transformers
- اختبر أن الأمور تعمل إذا كانت هناك سلاسل مكررة
- إزالة DBS بعد الاختبار
- هل يتعين علينا التداخل. embedding لجميع المكالمات؟
- Codecov و code Qualds SHIELDS