이 프로젝트는 벡터 검색을 위해 Pinecone을 사용하여 문서를 검색하도록 설계된 플라스크 기반 API입니다. 다음과 같은 기능이 포함되어 있습니다.
응용 프로그램은 사용합니다.
기본 플라스크 애플리케이션 및 API 엔드 포인트를 설정하여 시작했습니다.
/health : API가 실행 중인지 확인하기위한 간단한 엔드 포인트./search : 텍스트 임베딩을 사용하여 쿼리 파인 콘에 대한 엔드 포인트 및 결과를 검색합니다. 각 쿼리에 대해, 우리는 미리 훈련 된 Bert 모델 (Hugging Face의 transformers 라이브러리를 통해)을 사용하여 임베딩을 생성합니다. 이 내장은 Pinecone을 사용하여 벡터 검색을 수행하는 데 사용됩니다.
우리는 벡터 데이터베이스 인 Pinecone을 통합하여 문서 임베드를 저장하고 쿼리했습니다. 이를 통해 유사성 검색에 따라 효율적이고 빠른 문서 검색을 가능하게합니다.
Flask-Limiter 사용하여 속도 제한을 구현하여 사용자가 분당 5 개 이상의 요청을하지 않도록 제한했습니다.
Flask-Caching 사용하여 캐싱을 추가했습니다. 캐싱은 메모리에서 동일한 쿼리가 제공되도록하여 데이터베이스와 벡터 검색 엔진을 반복적으로 누르야 할 필요성을 줄입니다. 캐시 결과는 5 분 후에 만료됩니다.
우리는 기사 나 데이터를 위해 사용자가 제공 한 웹 사이트를 긁어 내고 새로운 문서로 Pinecone 인덱스를 업데이트 할 수있는 백그라운드 스크레이퍼를 구현했습니다.
BeautifulSoup 이 처리합니다.우리는 dockerfile을 사용하여 프로젝트를 docker습니다. 이를 통해 프로젝트를 다른 시스템에서 일관된 동작으로 모든 환경에 쉽게 배포 할 수 있습니다.
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 : 임베드를 생성하고 파인 콘을 쿼리하기위한 도우미 기능을 제공합니다.scraping.py : 배경 스크래핑 및 피네콘 인덱스 업데이트에 대한 논리가 포함되어 있습니다.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 파일을 만들고 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 MOTHER : 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 의 모든 요청 및 오류를 기록합니다. 배경 스크래핑 로그는 스크래핑에 기록됩니다.