Νικόλαος Λυμπιτάκης, Κατασκευή ενός RAG Chatbot για
Ξενοδοχειακή Υποστήριξη
46
Η συχέτιση μεταξύ του πίνακα conversation_session και του πίνακα
conversation_turns είναι Ένα προς Πολλά (One-to-Many). Μία συνεδρία συνομιλίας
μπορεί να περιλαμβάνει πολλά βήματα διαλόγου (ερωτήσεις-απαντήσεις), αλλά κάθε βήμα
ανήκει σε μία μόνο συνεδρία.
Η υλοποίηση της βάσης δεδομένων γίνεται μέσω δύο ξεχωριστών scripts
(setup_db.py και setup_feedback_db.py) τα οποία δημιουργούν τους πίνακες και εισάγουν
αρχικά δεδομένα, όπου χρειάζεται.
Αξιοποίηση ιστορικού συνομιλιών για βελτίωση, ταχύτητα και οικονομία tokens
Ένα σημαντικό χαρακτηριστικό του συστήματος είναι η δυνατότητα αυτοβελτίωσης
μέσω του μηχανισμού ανάδρασης. Το script update_good_conversations_vector_store.py
λειτουργεί ως γέφυρα μεταξύ της βάσης δεδομένων SQLite και του συστήματος RAG.
Συγκεκριμένα:
• Αντλεί από τον πίνακα conversation_turns τις συνομιλίες που έχουν λάβει θετική
αξιολόγηση (feedback = 'good').
• Δημιουργεί διανυσματικές αναπαραστάσεις (embeddings) των ερωτημάτων
(prompts) αυτών των επιτυχημένων ζευγών ερώτησης-απάντησης.
• Ενημερώνει το good_examples_vector_store (FAISS), προσθέτοντας νέα
παραδείγματα ή δημιουργώντας το από την αρχή αν δεν υπάρχει.
Με αυτόν τον τρόπο, οι καλές απαντήσεις του παρελθόντος ενσωματώνονται στη
μνήμη του συστήματος και τροφοδοτούνται ως παραδείγματα στο Prompt του LLM για
μελλοντικές ερωτήσεις, βελτιώνοντας διαρκώς όχι μόνο την ποιότητα των απαντήσεων
αλλα και λειτουργώντας ως caching για ταχύτερη απάντηση από το LLM. Πριν κληθεί το
LLM, το σύστημα ελέγχει αν υπάρχει ήδη μια παρόμοια ερώτηση στο
good_examples_vector_store. Αν βρεθεί υψηλή ομοιότητα, μπορεί να ανασυρθεί απευθείας
η αποθηκευμένη απάντηση. Επίσης πολύ σημαντικό είναι και το γεγονός ότι με αυτή τη
τεχνική μειώνεται ο αριθμός των tokens που καταναλώνονται στο LLM, μειώνοντας έτσι
και το λειτουργικό κόστος.