โครงการนี้เป็น API ที่ใช้ขวดที่ออกแบบมาเพื่อดึงเอกสารโดยใช้ Pinecone สำหรับการค้นหาเวกเตอร์ มีคุณสมบัติเช่น:
แอปพลิเคชันใช้:
เราเริ่มต้นด้วยการตั้งค่าแอปพลิเคชัน Fasic Flask และจุดสิ้นสุด API:
/health : จุดสิ้นสุดง่าย ๆ ในการตรวจสอบว่า API กำลังทำงานอยู่หรือไม่/search : จุดสิ้นสุดในการสืบค้น pinecone ด้วยการฝังข้อความและดึงผลลัพธ์ สำหรับการสืบค้นแต่ละครั้งเราจะสร้าง Embeddings โดยใช้ แบบจำลอง BERT ที่ผ่านการฝึกอบรมมาก่อน (ผ่านห้องสมุด transformers ของ 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 : จัดการการตั้งค่าและสคีมาสำหรับการจัดการผู้ใช้โดยใช้ SQLitecache.py : จัดการแคชสำหรับเวลาตอบสนองที่เร็วขึ้นlimiter.py : ใช้ฟังก์ชั่น จำกัด อัตราutils.py : ให้ฟังก์ชั่นผู้ช่วยสำหรับการสร้าง embeddings และการสืบค้น pineconescraping.py : มีตรรกะสำหรับการขูดพื้นหลังและอัปเดตดัชนี PineconeDockerfile : ใช้ในการสร้างและเรียกใช้แอปพลิเคชันในคอนเทนเนอร์ 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 ในรูทโครงการและเพิ่มคีย์ Pinecone API และสภาพแวดล้อมของคุณ:
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 อธิบาย : ตรวจสอบว่า API กำลังทำงานอยู่หรือไม่ การตอบสนอง :
json
Copy code
{
"status": "API is running"
}
URL : /search วิธี การค้นหา: POST คำอธิบาย : เอกสารค้นหาตามข้อความค้นหาข้อความ ขอร่าง :
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 บันทึกการขูดพื้นหลังถูกเขียนไปยัง Scraping.log