Νικόλαος Λυμπιτάκης, Κατασκευή ενός RAG Chatbot για
Ξενοδοχειακή Υποστήριξη
48
4.4 Λογική Chatbot - Υλοποίηση του RAG Pipeline με χρήση
LangChain
4.4.1 Δημιουργία Εργαλείων (Tools) για Ανάκτηση Πληροφοριών
Η ικανότητα του πράκτορα να παρέχει ακριβείς και τεκμηριωμένες πληροφορίες
στο πλαίσιο της λειτουργίας του ως συστήματος RAG, βασίζεται στην υλοποίηση
εξειδικευμένων εργαλείων. Τα εργαλεία αυτά αποτελούν το συνδετικό κρίκο μεταξύ του
μεγάλου γλωσσικού μοντέλου και των εξωτερικών πηγών δεδομένων, επιτρέποντας την
ανάκτηση πληροφοριών σε πραγματικό χρόνο από διανυσματικές και σχεσιακές βάσεις
δεδομένων. Η υλοποίησή τους πραγματοποιήθηκε με τη χρήση του διακοσμητή (decorator)
“@tool” της βιβλιοθήκης LangChain, ο οποίος επιτρέπει τη μετατροπή τυπικών
συναρτήσεων Python σε λειτουργικές μονάδες που ο πράκτορας μπορεί να καλέσει
αυτόνομα.
Η επιλογή του κατάλληλου εργαλείου από το μοντέλο δεν περιορίζεται στην
ανάγνωση του ονόματος της συνάρτησης, αλλά βασίζεται καθοριστικά στην ανάλυση της
περιγραφής (docstring) που συνοδεύει κάθε εργαλείο
LLM μια λίστα με τα ονόματα και τις λεπτομερείς περιγραφές των συναρτήσεων, και το
μοντέλο επιλέγει εκείνο που ταιριάζει περισσότερο στο αίτημα του χρήστη βάσει του
κειμένου της περιγραφής. Αυτό σημαίνει ότι ακόμη και αν το όνομα μιας συνάρτησης είναι
ασαφές, η ύπαρξη ενός λεπτομερούς docstring επιτρέπει στο μοντέλο να κατανοήσει τη
λειτουργικότητα και τις παραμέτρους του εργαλείου, διασφαλίζοντας την ορθή λήψη
αποφάσεων κατά τη διαδικασία της συλλογιστικής (reasoning).
Το πρώτο και βασικότερο εργαλείο ανάκτησης είναι η συνάρτηση get_faq_answer()
(εικόνα 19) , η οποία είναι υπεύθυνη για την παροχή απαντήσεων σε συχνά ερωτήματα των
χρηστών. Η λειτουργία της βασίζεται στην αναζήτηση σημασιολογικής ομοιότητας εντός
της διανυσματικής βάσης δεδομένων FAQ.
@tool
def get_faq_answer(question: str) -> str:
“““
Searches the hotel's FAQ for an answer to a specific question using
vector similarity search.
“““
if faq_vector_store:
results = faq_vector_store.similarity_search(question, k=3)