Этот проект представляет собой API на основе колбы, предназначенный для извлечения документов с использованием PineCone для векторного поиска. Он включает в себя такие функции, как:
Приложение использует:
Мы начали с настройки базового приложения Flask и конечных точек API:
/health : простая конечная точка, чтобы проверить, работает ли API./search : конечная точка, чтобы запросить Pinecone с текстовыми встроениями и получения результатов. Для каждого запроса мы генерируем встраивания, используя предварительно обученную модель BERT (посредством библиотеки transformers Hearging 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 описание : проверяет, работает ли 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 . Фонографические журналы записываются на скрасн.