background image

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

 

76

 

Κεφάλαιο 5 – Υλοποίηση 

Αφού περιγράψαμε στο προηγούμενο κεφάλαιο τι έπρεπε να κάνει το σύστημα και πώς 

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

εξ ολοκλήρου σε Python, με μια σειρά από ανεξάρτητα αρχεία που το καθένα αναλαμβάνει ένα 

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

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

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

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

εστιάζουμε στις βασικές επιλογές υλοποίησης και όχι σε κάθε λεπτομέρεια. Πιο συγκεκριμένα, 

η ανάπτυξη έγινε σε Python 3.12, με τις βιβλιοθήκες asyncio και aiohttp για τον ασύγχρονο 

ανιχνευτή 

ιστού, 

τη 

BeautifulSoup 

για 

την 

εξαγωγή 

συνδέσμων, 

τον 

RecursiveCharacterTextSplitter  της  LangChain  για  τον  τεμαχισμό,  τη  ChromaDB  ως 

διανυσματική  βάση,  το  Ollama  για  την  τοπική  εκτέλεση  των  μοντέλων  το  bge-m3  για  τις 

διανυσματικές  ενσωματώσεις  και  το  llama3.1:8b,  κβαντοποιημένο  σε  q4_k_m,  για  την 

παραγωγή  των  απαντήσεων,  το  Chainlit  για  τη  διεπαφή  και  τη  SQLite  για  τη  διατήρηση 

κατάστασης μεταξύ εκτελέσεων. Η επιτάχυνση των υπολογισμών στην κάρτα γραφικών έγινε 

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

 

5.1 Συλλογή και ευρετηρίαση δεδομένων 

Το πρώτο μέρος του συστήματος είναι υπεύθυνο να φέρει το περιεχόμενο του ιστότοπου 

σε μια μορφή που μπορεί να αναζητηθεί. Αποτελείται από τον ανιχνευτή, που εντοπίζει και 

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

τις αποθηκεύει.