Σχεδιασμός και Υλοποίηση εξειδικευμένου chatbot για διαδικτυακές πλατφόρμες
55
και την παραγωγή των ενσωματώσεων, μέχρι τη σύνδεση με τη διανυσματική βάση, την
ανάκτηση των σχετικών αποσπασμάτων και τη συναρμολόγηση όλων αυτών των βημάτων σε
μια ενιαία, συνεκτική ροή. Παρόμοιες λύσεις είναι το LlamaIndex [63], που εστιάζει
περισσότερο στην ευρετηρίαση και την αναζήτηση των δεδομένων, και το Haystack, που
απευθύνεται κυρίως σε επιχειρησιακά περιβάλλοντα. Όπως και τα προηγούμενα εργαλεία,
κανένα από αυτά δεν συνοδεύεται από δημοσίευση με επιστημονική κρίση που να το αναλύει
συστηματικά.
Στην παρούσα εργασία χρησιμοποιήθηκαν επιλεγμένα στοιχεία του LangChain για τον
αγωγό ευρετηρίασης, συγκεκριμένα ο τεμαχιστής κειμένου RecursiveCharacterTextSplitter και
ο προσαρμογέας για τη ChromaDB, αποφύγαμε όμως να στηριχθούμε εξ ολοκλήρου στο
πλαίσιο. Ο λόγος είναι ότι το LangChain τείνει να προσθέτει πολλά επίπεδα αφαίρεσης, τα
οποία, ενώ διευκολύνουν τη γρήγορη κατασκευή ενός πρωτοτύπου, δυσκολεύουν πολύ την
αποσφαλμάτωση όταν κάτι δεν λειτουργεί όπως περιμέναμε. Προτιμήσαμε λοιπόν να
γράψουμε μόνοι μας τα κρίσιμα κομμάτια του πράκτορα και της ανάκτησης, ώστε να
κρατήσουμε τον έλεγχο πάνω στη ροή των δεδομένων.
Για τη διεπαφή χρήστη (UI) επιλέχθηκε το Chainlit [4], ένα ασύγχρονο πλαίσιο
σχεδιασμένο ειδικά για εφαρμογές συνομιλιακής τεχνητής νοημοσύνης. Προσφέρει έτοιμα
στοιχεία για τη σταδιακή εμφάνιση των απαντήσεων, κουμπιά αξιολόγησης και μηνύματα που
δείχνουν τις πηγές και τα βήματα της επεξεργασίας, δηλαδή τι κάνει το σύστημα στο
παρασκήνιο. Το βασικό του πλεονέκτημα σε σχέση με το Streamlit ή το Gradio είναι ότι
σχεδιάστηκε από την αρχή για εφαρμογές συνομιλίας, οπότε δεν χρειάζεται να καταφύγει
κανείς σε προσωρινές λύσεις για να πετύχει μια φυσική εμπειρία συζήτησης. Όπως και το
Ollama [21], είναι εργαλείο ανοιχτού κώδικα χωρίς δημοσίευση με επιστημονική κρίση, οπότε
η τεκμηρίωσή του στηρίζεται στις επίσημες πηγές. Αποτελεί χαρακτηριστικό παράδειγμα του