هذا المشروع عبارة عن واجهة برمجة تطبيقات قائمة على القارورة مصممة لاسترداد المستندات باستخدام Pinecone للبحث عن المتجهات. ويشمل ميزات مثل:
يستخدم التطبيق:
لقد بدأنا بإعداد تطبيق FASIC Flask ونقاط نهاية API:
/health : نقطة نهاية بسيطة للتحقق مما إذا كانت واجهة برمجة التطبيقات تعمل./search : نقطة نهاية للاستعلام عن pinecone مع تضمينات النص واسترداد النتائج. لكل استعلام ، نقوم بإنشاء التضمينات باستخدام نموذج BERT الذي تم تدريبه مسبقًا (عبر مكتبة transformers 's Hugging Face). يتم استخدام هذه التضمينات لأداء عمليات البحث المتجهات باستخدام Pinecone.
قمنا بدمج Pinecone ، قاعدة بيانات متجه ، لتخزين ووثائق المستندات. هذا يتيح استرجاعًا فعالًا وسريعًا للوثائق بناءً على البحث عن التشابه.
قمنا بتنفيذ الحد من المعدل باستخدام Flask-Limiter لتقييد المستخدمين من تقديم أكثر من 5 طلبات في الدقيقة:
أضفنا التخزين المؤقت باستخدام Flask-Caching . يضمن التخزين المؤقت أن يتم تقديم استعلامات متطابقة من الذاكرة ، مما يقلل من الحاجة إلى الوصول إلى قاعدة البيانات ومحرك البحث المتجه بشكل متكرر. تنتهي النتائج المخبأة بعد 5 دقائق.
قمنا بتطبيق مكشطة خلفية يمكنها كشط موقع ويب يقدمه المستخدم للمقالات أو البيانات وتحديث فهرس Pinecone بمستندات جديدة:
BeautifulSoup .لقد مررنا المشروع باستخدام Dockerfile . يتيح ذلك نشر المشروع بسهولة في أي بيئة مع سلوك متسق عبر أنظمة مختلفة.
project/
├── app.py # Main Flask application
├── database.py # Database setup for user management
├── cache.py # Caching configuration
├── limiter.py # Rate limiting configuration
├── utils.py # Utility functions (embedding, Pinecone query)
├── scraping.py # Background scraping logic
├── requirements.txt # Python dependencies
├── Dockerfile # Docker configuration
├── .env # Environment variables (not committed to version control)
├── .dockerignore # Ignore unnecessary files in the Docker build
└── README.md # Project documentation
app.py : يحتوي على تطبيق Flask وجميع طرق API.database.py : يتولى الإعداد والمخطط لإدارة المستخدم باستخدام SQLite.cache.py : يدير التخزين المؤقت لأوقات الاستجابة بشكل أسرع.limiter.py : تنفذ وظائف الحد من المعدل.utils.py : يوفر وظائف مساعد لتوليد التضمينات والاستعلام عن pinecone.scraping.py : يحتوي على منطق تجريف الخلفية وتحديث فهرس Pinecone.Dockerfile : يستخدم لبناء وتشغيل التطبيق في حاوية Docker. git clone <repository-url>
cd project
python -m venv venv
source venv/bin/activate # On Windows, use venvScriptsactivate
pip install -r requirements.txt
قم بإنشاء ملف .env في جذر المشروع وأضف مفتاح وبيئة API Pinecone:
PINECONE_API_KEY=your_pinecone_api_key
PINECONE_ENVIRONMENT=your_pinecone_environment
لإعداد قاعدة البيانات ، قم بتشغيل الكود التالي:
>>> from app import db, app
>>> with app.app_context():
>>> db.create_all()
python app.py
سيتم تشغيل التطبيق على http://localhost:5000 .
docker build -t flask-app .
docker run -p 5000:5000 flask-app
الآن ، سيتم تشغيل تطبيقك على http://localhost:5000 .
عنوان URL : /health طريقة الصحة: GET الوصف : الشيكات إذا كانت واجهة برمجة التطبيقات تعمل. إجابة :
json
Copy code
{
"status": "API is running"
}
عنوان URL : / طريقة /search : POST Description : مستندات البحث بناءً على استفسارات النص. طلب الجسم :
json
Copy code
{
"query": "Your search query",
"user_id": "user123",
"top_k": 3
}
الرد : إرجاع قائمة المستندات المطابقة بناءً على الاستعلام.
/start_scraping طريقة : POST الوصف : تبدأ عملية تجريف الخلفية لموقع معين. طلب الجسم : json
Copy code
{
"url": "https://example.com"
}
إجابة :
json
{
"message": "Started scraping for https://example.com"
}
api.log . تتم كتابة سجلات تجريف الخلفية إلى draging.log.