Dieses Projekt ist eine auflösungsbasierte API, mit der Dokumente mithilfe von Pinecone für die Vektorsuche abgerufen werden sollen. Es enthält Funktionen wie:
Die Anwendung verwendet:
Wir haben damit begonnen, die Basis -Flask -Anwendungs- und API -Endpunkte einzurichten:
/health : Ein einfacher Endpunkt, um zu überprüfen, ob die API ausgeführt wird./search : Ein Endpunkt zum Abfragen von Pinecone mit Texteinbettungen und Ring der Ergebnisse. Für jede Abfrage erzeugen wir Einbettungen mit einem vorgebildeten Bert-Modell (über die transformers Library von Hugging Face). Diese Einbettungen werden verwendet, um Vektorsuche mithilfe von Pinecone durchzuführen.
Wir haben Pinecone , eine Vektor -Datenbank, integriert, um Dokumenteneinbettungen zu speichern und abfragen. Dies ermöglicht ein effizientes und schnelles Abrufen von Dokumenten auf der Grundlage der Ähnlichkeitssuche.
Wir haben die Ratenbeschränkung mithilfe von Flask-Limiter implementiert, um Benutzer davon abzuhalten, mehr als 5 Anfragen pro Minute zu stellen:
Wir haben das Caching mit Flask-Caching hinzugefügt. Das Zwischenspeichern stellt sicher, dass identische Abfragen aus dem Speicher bedient werden, was die Notwendigkeit verringert, die Datenbank- und Vektor -Suchmaschine wiederholt zu treffen. Zwischengespeicherte Ergebnisse verfallen nach 5 Minuten.
Wir haben einen Hintergrundschaber implementiert, mit dem eine vom Benutzer bereitgestellte Website für Artikel oder Daten abgeschrocken und den Pinecone-Index mit neuen Dokumenten aktualisiert werden kann:
BeautifulSoup behandelt.Wir haben das Projekt mit einer DockerFile docken. Auf diese Weise kann das Projekt einfach in jeder Umgebung mit konsistentem Verhalten in verschiedenen Systemen eingesetzt werden.
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 : Enthält die Flask -Anwendung und alle API -Routen.database.py : Verwendet das Setup und das Schema für die Benutzerverwaltung mithilfe von SQLite.cache.py : Verwaltet das Caching für schnellere Reaktionszeiten.limiter.py : implementiert die rate-limitierende Funktionalität.utils.py : Bietet Helferfunktionen für die Erzeugung von Einbettungen und Abfragen von Tinecone.scraping.py : Enthält die Logik für Hintergrundkratze und Aktualisierung des Pinecone -Index.Dockerfile : Wird verwendet, um die Anwendung in einem Docker -Container zu erstellen und auszuführen. git clone <repository-url>
cd project
python -m venv venv
source venv/bin/activate # On Windows, use venvScriptsactivate
pip install -r requirements.txt
Erstellen Sie eine .EnV -Datei im Projektroot und fügen Sie Ihre Pinecone -API -Taste und -umgebung hinzu:
PINECONE_API_KEY=your_pinecone_api_key
PINECONE_ENVIRONMENT=your_pinecone_environment
Führen Sie den folgenden Code aus, um die Datenbank einzurichten:
>>> from app import db, app
>>> with app.app_context():
>>> db.create_all()
python app.py
Die App wird unter http://localhost:5000 ausgeführt.
docker build -t flask-app .
docker run -p 5000:5000 flask-app
Jetzt wird Ihre App unter http://localhost:5000 ausgeführt.
URL : /health -Methode : Beschreibung GET : Überprüft, ob die API ausgeführt wird. Antwort :
json
Copy code
{
"status": "API is running"
}
URL : /search : POST Beschreibung : Suchdokumente basierend auf Textabfragen. Antragsbehörde :
json
Copy code
{
"query": "Your search query",
"user_id": "user123",
"top_k": 3
}
Antwort : Gibt eine Liste der übereinstimmenden Dokumente zurück, die auf der Abfrage basieren.
/start_scraping -Methode : POST Beschreibung : Startet den Hintergrundkratzvorgang für eine bestimmte Site. Antragsbehörde : json
Copy code
{
"url": "https://example.com"
}
Antwort :
json
{
"message": "Started scraping for https://example.com"
}
api.log . Hintergrundkratzprotokolle werden in Scraping.log geschrieben.