background image

Σχεδιασμός και Υλοποίηση εξειδικευμένου chatbot για διαδικτυακές πλατφόρμες

 

55

 

και  την  παραγωγή  των  ενσωματώσεων,  μέχρι  τη  σύνδεση  με  τη  διανυσματική  βάση,  την 

ανάκτηση των σχετικών αποσπασμάτων και τη συναρμολόγηση όλων αυτών των βημάτων σε 

μια  ενιαία,  συνεκτική  ροή.  Παρόμοιες  λύσεις  είναι  το  LlamaIndex  [63],  που  εστιάζει 

περισσότερο  στην  ευρετηρίαση  και  την  αναζήτηση  των  δεδομένων,  και  το  Haystack,  που 

απευθύνεται  κυρίως  σε  επιχειρησιακά  περιβάλλοντα.  Όπως  και  τα  προηγούμενα  εργαλεία, 

κανένα από αυτά δεν συνοδεύεται από δημοσίευση με επιστημονική κρίση που να το αναλύει 

συστηματικά. 

Στην  παρούσα  εργασία  χρησιμοποιήθηκαν  επιλεγμένα  στοιχεία  του  LangChain  για  τον 

αγωγό ευρετηρίασης, συγκεκριμένα ο τεμαχιστής κειμένου RecursiveCharacterTextSplitter και 

ο  προσαρμογέας  για  τη  ChromaDB,  αποφύγαμε  όμως  να  στηριχθούμε  εξ  ολοκλήρου  στο 

πλαίσιο. Ο λόγος είναι ότι το LangChain τείνει να προσθέτει πολλά επίπεδα αφαίρεσης, τα 

οποία,  ενώ  διευκολύνουν  τη  γρήγορη  κατασκευή  ενός  πρωτοτύπου,  δυσκολεύουν  πολύ  την 

αποσφαλμάτωση  όταν  κάτι  δεν  λειτουργεί  όπως  περιμέναμε.  Προτιμήσαμε  λοιπόν  να 

γράψουμε  μόνοι  μας  τα  κρίσιμα  κομμάτια  του  πράκτορα  και  της  ανάκτησης,  ώστε  να 

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

Για  τη  διεπαφή  χρήστη  (UI)  επιλέχθηκε  το  Chainlit  [4],  ένα  ασύγχρονο  πλαίσιο 

σχεδιασμένο  ειδικά  για  εφαρμογές  συνομιλιακής  τεχνητής  νοημοσύνης.  Προσφέρει  έτοιμα 

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

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

παρασκήνιο.  Το  βασικό  του  πλεονέκτημα  σε  σχέση  με  το  Streamlit  ή  το  Gradio  είναι  ότι 

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

κανείς  σε  προσωρινές  λύσεις  για  να  πετύχει  μια  φυσική  εμπειρία  συζήτησης.  Όπως  και  το 

Ollama [21], είναι εργαλείο ανοιχτού κώδικα χωρίς δημοσίευση με επιστημονική κρίση, οπότε 

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