Σχεδιασμός και Υλοποίηση εξειδικευμένου 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 Συλλογή και ευρετηρίαση δεδομένων
Το πρώτο μέρος του συστήματος είναι υπεύθυνο να φέρει το περιεχόμενο του ιστότοπου
σε μια μορφή που μπορεί να αναζητηθεί. Αποτελείται από τον ανιχνευτή, που εντοπίζει και
κατεβάζει τις σελίδες, και από τον αγωγό ευρετηρίασης, που τις μετατρέπει σε διανύσματα και
τις αποθηκεύει.