background image

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

 

54

 

3.4 Πλαίσια λογισμικού για την ανάπτυξη εφαρμογών RAG

 

Πριν από τα επιμέρους πλαίσια, αξίζει να αναφερθεί η ίδια η γλώσσα προγραμματισμού 

πάνω στην οποία χτίστηκε η εφαρμογή. Όλος ο κώδικας του συστήματος γράφτηκε σε Python, 

και συγκεκριμένα στην έκδοση 3.12.3 [66], [67]. Η επιλογή αυτή δεν ήταν τυχαία. Η Python 

έχει  αναδειχθεί  η  κυρίαρχη  γλώσσα  της  μηχανικής  μάθησης  και  της  επεξεργασίας  φυσικής 

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

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

πρόσβασης στο Ollama και τη ChromaDB και το πλαίσιο διεπαφής Chainlit, διατίθεται πρώτα 

και κυρίως για Python [68]. Η αναγνωσιμότητα της γλώσσας και η ταχύτητα ανάπτυξης που 

προσφέρει μας επέτρεψαν να δοκιμάσουμε γρήγορα διαφορετικές σχεδιαστικές επιλογές, κάτι 

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

στην πορεία. 

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

Rust, θα έδινε ταχύτερη εκτέλεση. Στην πράξη όμως το βαρύ υπολογιστικό φορτίο, δηλαδή ο 

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

Ollama [21], που στηρίζεται στη γραμμένη σε C++ βιβλιοθήκη llama.cpp [65]. Έτσι ο κώδικάς 

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

μετράει ελάχιστα ενώ η ευκολία ανάπτυξης μετράει πολύ. Άλλες επιλογές, όπως η JavaScript 

με το Node.js ή η Go, είναι ισχυρές στο κομμάτι των διαδικτυακών υπηρεσιών, υστερούν όμως 

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

την Python [68]. Για τους λόγους αυτούς, η Python αποτέλεσε τη φυσική επιλογή ως γλώσσα 

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

σε μεταγλωττισμένα εργαλεία που καλούνται από αυτήν. 

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

το  LangChain  [62].  Πρόκειται  για  μια  βιβλιοθήκη  Python  που  προσφέρει  έτοιμα  δομικά 

στοιχεία για κάθε στάδιο ενός αγωγού RAG: από τη φόρτωση και τον τεμαχισμό των εγγράφων