このプロジェクトは、ベクトル検索のためにPineconeを使用してドキュメントを取得するように設計されたフラスコベースのAPIです。次のような機能が含まれています。
アプリケーションは使用します:
基本的なフラスコアプリケーションとAPIエンドポイントをセットアップすることから始めました。
/health :APIが実行されているかどうかを確認するための簡単なエンドポイント。/search :テキスト埋め込みを使用してPineconeを照会し、結果を取得するエンドポイント。クエリごとに、事前に訓練されたBERTモデルを使用して埋め込みを生成します(Faceのtransformersライブラリを抱き締める)。これらの埋め込みは、Pineconeを使用してベクトル検索を実行するために使用されます。
ベクトルデータベースであるPineconeを統合して、ドキュメントの埋め込みを保存およびクエリしました。これにより、類似性検索に基づいて、ドキュメントの効率的かつ迅速な検索が可能になります。
Flask-Limiterを使用してレート制限を実装して、ユーザーが毎分5つ以上のリクエストを作成することを制限します。
Flask-Cachingを使用してキャッシングを追加しました。キャッシングにより、メモリから同一のクエリが提供されるようになり、データベースとベクトル検索エンジンに繰り返しヒットする必要性が減ります。キャッシュされた結果は5分後に期限切れになります。
記事やデータのユーザーが提供するWebサイトをこすり、新しいドキュメントでPineconeインデックスを更新できる背景スクレーパーを実装しました。
BeautifulSoupによって処理されます。DockerFileを使用してプロジェクトをDockerizしました。これにより、プロジェクトは、さまざまなシステムで一貫した動作を持つあらゆる環境に簡単に展開できます。
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 :フラスコアプリケーションとすべてのAPIルートが含まれています。database.pyを使用してユーザー管理のセットアップとスキーマを処理します。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方法: 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に書き込まれます。