Proyek ini adalah API berbasis Flask yang dirancang untuk mengambil dokumen menggunakan Pinecone untuk pencarian vektor. Itu termasuk fitur seperti:
Aplikasi menggunakan:
Kami mulai dengan mengatur aplikasi Flask dasar dan titik akhir API:
/health : Titik akhir sederhana untuk memeriksa apakah API sedang berjalan./search : Titik akhir untuk meminta pinecone dengan embeddings teks dan mengambil hasil. Untuk setiap kueri, kami menghasilkan embeddings menggunakan model Bert yang sudah terlatih (melalui perpustakaan transformers Face Hugging). Embeddings ini digunakan untuk melakukan pencarian vektor menggunakan pinecone.
Kami mengintegrasikan Pinecone , database vektor, untuk menyimpan dan meminta embeddings dokumen. Ini memungkinkan pengambilan dokumen yang efisien dan cepat berdasarkan pencarian kesamaan.
Kami mengimplementasikan pembatasan tingkat menggunakan Flask-Limiter untuk membatasi pengguna dari membuat lebih dari 5 permintaan per menit:
Kami menambahkan caching menggunakan Flask-Caching . Caching memastikan bahwa kueri yang identik disajikan dari memori, mengurangi kebutuhan untuk menekan database dan mesin pencari vektor berulang kali. Hasil yang di -cache berakhir setelah 5 menit.
Kami mengimplementasikan scraper latar belakang yang dapat mengikis situs web yang disediakan pengguna untuk artikel atau data dan memperbarui indeks Pinecone dengan dokumen baru:
BeautifulSoup .Kami berlabuh proyek menggunakan Dockerfile . Ini memungkinkan proyek untuk dengan mudah digunakan di lingkungan apa pun dengan perilaku yang konsisten di berbagai sistem.
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 : Berisi aplikasi Flask dan semua rute API.database.py : Menangani pengaturan dan skema untuk manajemen pengguna menggunakan SQLite.cache.py : Mengelola caching untuk waktu respons yang lebih cepat.limiter.py : Mengimplementasikan fungsionalitas pembatas laju.utils.py : Menyediakan fungsi penolong untuk menghasilkan embeddings dan menanyakan pinecone.scraping.py : Berisi logika untuk mengikis latar belakang dan memperbarui indeks Pinecone.Dockerfile : Digunakan untuk membangun dan menjalankan aplikasi dalam wadah Docker. git clone <repository-url>
cd project
python -m venv venv
source venv/bin/activate # On Windows, use venvScriptsactivate
pip install -r requirements.txt
Buat file .env di root proyek dan tambahkan tombol API Pinecone Anda dan lingkungan:
PINECONE_API_KEY=your_pinecone_api_key
PINECONE_ENVIRONMENT=your_pinecone_environment
Untuk mengatur database, jalankan kode berikut:
>>> from app import db, app
>>> with app.app_context():
>>> db.create_all()
python app.py
Aplikasi ini akan berjalan di http://localhost:5000 .
docker build -t flask-app .
docker run -p 5000:5000 flask-app
Sekarang, aplikasi Anda akan berjalan di http://localhost:5000 .
URL : / Metode /health : GET Deskripsi : Memeriksa apakah API sedang berjalan. Tanggapan :
json
Copy code
{
"status": "API is running"
}
URL : / Metode /search : POST Deskripsi : Dokumen pencarian berdasarkan kueri teks. Badan Permintaan :
json
Copy code
{
"query": "Your search query",
"user_id": "user123",
"top_k": 3
}
Tanggapan : Mengembalikan daftar dokumen yang cocok berdasarkan kueri.
/start_scraping Metode : POST Deskripsi : Mulai proses pengikis latar belakang untuk situs tertentu. Badan Permintaan : json
Copy code
{
"url": "https://example.com"
}
Tanggapan :
json
{
"message": "Started scraping for https://example.com"
}
api.log . Log Latar Belakang Latar Belakang ditulis untuk Mengikis.Log.