background image

 

Νικόλαος Λυμπιτάκης, Κατασκευή ενός RAG Chatbot για 
Ξενοδοχειακή Υποστήριξη 

 

 
 

 

54 

άνεση και θέα. Αυτή τη στιγμή έχουμε μόλις 2 διαθέσιμες σουίτες, οπότε σας προτείνω να 

προχωρήσετε άμεσα στην κράτησή σας για να εξασφαλίσετε μια ονειρεμένη εμπειρία στο 

Grand Cretan Resort!  

 

Η  διαδικασία  εκτέλεσης  περιλαμβάνει  επίσης  έναν  μηχανισμό  προσωρινής 

αποθήκευσης (prompt caching) μέσω της χρήσης καλών παραδειγμάτων (good_examples), 

τα  οποία  αποθηκεύονται  αρχικά  στη  σχεσιακή  βάση  μέσω  της  ανατροφοδότησης  του 

χρήστη. Πριν από την κλήση του μοντέλου, το σύστημα εκτελεί αναζήτηση ομοιότητας στο 

good_examples_vector_store  στο  οποίο  έχουν  μετατραπεί  τα  good_examples  μέσω  του 

script  update_good_conversations_vector_store.py,  για  τον  εντοπισμό  προηγούμενων 

επιτυχημένων  αλληλεπιδράσεων.  Η  λειτουργία  αυτή  εξυπηρετεί  δύο  σκοπούς.  Πρώτον, 

παρέχει στον πράκτορα ένα πλαίσιο αναφοράς για το επιθυμητό ύφος και την ακρίβεια των 

απαντήσεων.  Δεύτερον,  λειτουργεί  ως  φίλτρο  βελτιστοποίησης:  εάν  το  ερώτημα  του 

χρήστη  ταυτίζεται  σημασιολογικά  με  κάποιο  από  τα  αποθηκευμένα  παραδείγματα,  ο 

πράκτορας καθοδηγείται μέσω της προτροπής να παρακάμψει τη χρήση των εργαλείων και 

να δώσει άμεσα την ήδη επικυρωμένη απάντηση. Η τεχνική αυτή χρησιμοποιήθηκε για να 

μειώσει τον χρόνο απόκρισης σε κάτω των 15 δευτερολέπτων, που είναι και λειτουργική 

απαίτηση του συστήματος, αλλά και για να εξοικονομεί υπολογιστικούς πόρους (tokens) 

για συχνά επαναλαμβανόμενα ερωτήματα. 

 

4.4.3  Διαχείριση Μνήμης 
 

Για  την  επίτευξη  μιας  φυσικής  και  συνεχούς  ροής  στον  διάλογο,  η  εφαρμογή 

ενσωματώνει 

μηχανισμό 

διαχείρισης 

μνήμης 

αξιοποιώντας 

την 

κλάση 

“ConversationBufferWindowMemory” της βιβλιοθήκης LangChain. Ο μηχανισμός αυτός 

είναι κρίσιμος για τη διατήρηση του πλαισίου (context) της συζήτησης, επιτρέποντας στον 

πράκτορα να απαντά σε διευκρινιστικές ερωτήσεις (follow-up questions) χωρίς ο χρήστης 

να χρειάζεται να επαναλαμβάνει πληροφορίες. 

 

Η μνήμη έχει ρυθμιστεί ώστε να διατηρεί τις τελευταίες 5 αλληλεπιδράσεις (k=5), 

εξασφαλίζοντας  ισορροπία  μεταξύ  της  διατήρησης  του  απαραίτητου  πλαισίου  και  της 

αποφυγής  υπερφόρτωσης  της  προτροπής  (prompt)  με  παλαιότερες,  μη  σχετικές 

πληροφορίες. Η αρχικοποίηση της μνήμης γίνεται στο επίπεδο της συνεδρίας (session state) 

της  διεπαφής  χρήστη  στο  streamlit,  διασφαλίζοντας  ότι  κάθε  χρήστης  έχει  το  δικό  του 

ανεξάρτητο ιστορικό συνομιλίας.