background image

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

 

49

 

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

πλούσιες. Παρόμοιες παρατηρήσεις έγιναν και νωρίτερα με το Sentence-BERT [27], που έδειξε 

πώς  μπορούν  να  χτιστούν  χρήσιμες  ενσωματώσεις  σε  επίπεδο  πρότασης  πάνω  σε 

προεκπαιδευμένα  BERT  μοντέλα.  Δηλαδή,  ακόμα  και  η  καλύτερη  βάση  δεδομένων  δεν  θα 

σώσει ένα σύστημα αν οι ενσωματώσεις που της δίνουμε είναι κακής ποιότητας. 

Πέρα από τη διανυσματική βάση, το σύστημα χρειάζεται και έναν συμβατικό, σχεσιακό 

χώρο  αποθήκευσης  για  στοιχεία  που  δεν  είναι  διανύσματα:  την  κατάσταση  του  αγωγού 

ευρετηρίασης, τη μνήμη ερωτήσεων-απαντήσεων και την ανατροφοδότηση των χρηστών. Για 

τον σκοπό αυτό επιλέχθηκε η SQLite [69]. Σε αντίθεση με εξυπηρετητές βάσεων δεδομένων 

όπως  η  PostgreSQL  [70]  ή  η  MySQL  [71],  η  SQLite  είναι  ενσωματωμένη  και  δεν  απαιτεί 

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

την Python ως μέρος της τυπικής της βιβλιοθήκης. Για ένα τοπικό σύστημα ενός χρήστη με 

μερικές χιλιάδες εγγραφές, αυτή η απλότητα ταιριάζει απόλυτα, ενώ ένας πλήρης εξυπηρετητής 

βάσης θα ήταν περιττός και θα πρόσθετε άσκοπη πολυπλοκότητα. 

3.3 Εκτέλεση τοπικών μοντέλων Ollama 

Η εκτέλεση των γλωσσικών μοντέλων είναι ένα ξεχωριστό κομμάτι του παζλ. Μια εργασία 

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

εκτέλεσης.  Στον  χώρο  αυτό  κυριαρχούν  τρεις  προσεγγίσεις.  Η  πρώτη  είναι  το  llama.cpp,  η 

βιβλιοθήκη  που  σηματοδότησε  την  επανάσταση  στην  τοπική  εκτέλεση  μοντέλων  με 

κβαντοποίηση  [59]  στα  4  και  5  bits  [65].  Η  δεύτερη  είναι  το  vLLM  [64],  που  στοχεύει  σε 

μεγαλύτερη απόδοση με τεχνικές όπως το PagedAttention, αλλά απαιτεί GPU. Η τρίτη είναι το 

Ollama,  που  έρχεται  σαν  ένα  φιλικό  περίβλημα  πάνω  από  το  llama.cpp  και  προσφέρει 

REST API, αυτόματη διαχείριση μνήμης και ένα μεγάλο μητρώο μοντέλων. 

Για τη συγκεκριμένη εργασία επιλέξαμε το Ollama για τρεις λόγους. Παρέχει ένα σταθερό 

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