Erstellen Sie ein Backend für das Abrufen von Dokumenten mit Caching.
Der Caching -Algorithmus hat eine Warteschlange auf dem Server erstellt, mit dem die Anzahl der Knoten aus früheren Korys begrenzt gespeichert wird. Für jede Abfrage vom Benutzer wird zunächst mit Abfragen in der Warteschlange übereinstimmt, und wenn Ähnlichkeit (Cosinus) über 0,9 liegt als diese Knoten, die aus der Suchtabelle zurückgegeben wurden, die separat gehalten wurde.
Erste Anfrage => Zeit genommen 787 ms 
Zweite ähnliche Anforderung => Zeit Denn 54 ms 
Ungültige Anforderung 
Health Check Endpoint
curl --location ' localhost:8001/health 'Suchscheckendpunkt
curl --location ' localhost:8001/search ' --header ' user_id: riondsilva ' --header ' Content-Type: application/json ' --data ' { "text": "Ingredient Substitutions" , "top_k": 5 , "threshold": 0.3 } '*Laufen Sie in Ordnung
Chroma -Bild
docker run -p 8000:8000 chromadb/chromaPostgres Bild
docker run --name user-database -p 5432:5432
-e POSTGRES_PASSWORD=your_password -d postgres:12.20-alpine3.20 docker stop user-databaseDoc-retrival
git clone https://github.com/RionDsilvaCS/document-retrieval-caching.git Erstellen Sie .env -Datei im Hauptverzeichnis und fügen Sie die folgenden Variablen hinzu
DATABASE_URL="postgresql://postgres:your_password@localhost:5432/postgres"
COLLECTION_NAME="collection_name"
Erstellen Sie data und fügen Sie PDF -Dokumente hinzu
mkdir data
Führen Sie store_in_db.py aus, um den Inhalt ./data in Chromadb zu speichern
python store_in_db.pydocker compose up --build /health ist Endpunkt, um zu überprüfen, ob der Server start ist
Endpunkt
http://127.0.0.1:8001/health
Antwort
{
"Server Status" : " Successfully running ? "
} /search ist ein Post -Endpunkt, um sich mit dem Chatbot zu unterhalten
Endpunkt
http://127.0.0.1:8001/search
Kopfball
{
"user_id" : " riondsilva "
}JSON -Körper
{
"text" : " How are you? " ,
"top_k" : 3 ,
"threshold" : 0.3
}Antwort
{
"bot_message" : {
"top_k_results" : [
{
"message" : " I am great ? "
},
{
"message" : " I am fine "
},
{
"message" : " I am good "
}
],
"top_k" : 3 ,
"threshold" : 0.9
},
"user_message" : {
"text" : " How are you? " ,
"top_k" : 3 ,
"threshold" : 0.9 ,
"inference_time (secs)" : 1.16
},
"user_info" : " riondsilva "
}