Σχεδιασμός και Υλοποίηση εξειδικευμένου chatbot για διαδικτυακές πλατφόρμες
78
αυξανόμενη καθυστέρηση, μια στρατηγική που αποδείχθηκε αρκετή για να ολοκληρώνεται η
σάρωση χωρίς απώλειες.
5.1.2 Ο αγωγός ευρετηρίασης
Έχοντας τη λίστα των διευθύνσεων, ο αγωγός ευρετηρίασης κατεβάζει και επεξεργάζεται
κάθε πηγή. Για να αποφεύγεται περιττή δουλειά, η λήψη γίνεται υπό συνθήκη, με τη χρήση
των κεφαλίδων ETag και If-Modified-Since του πρωτοκόλλου HTTP [72]. Πρόκειται για έναν
τυποποιημένο μηχανισμό με τον οποίο, σε κάθε νέο αίτημα, δηλώνουμε στον εξυπηρετητή ποια
εκδοχή ενός πόρου έχει ήδη δει: είτε μέσω της ημερομηνίας τελευταίας τροποποίησης (If-
Modified-Since) είτε μέσω ενός σύντομου αναγνωριστικού έκδοσης που αποδίδει ο
εξυπηρετητής σε κάθε εκδοχή του πόρου (ETag). Αν το περιεχόμενο δεν έχει αλλάξει, ο
εξυπηρετητής απαντά ότι η σελίδα παραμένει ίδια χωρίς να ξαναστείλει το σώμα της, και έτσι
αποφεύγεται η εκ νέου επεξεργασία του ίδιου υλικού. Επειδή ορισμένοι εξυπηρετητές δεν
υποστηρίζουν αυτόν τον μηχανισμό, κρατάμε επιπλέον σε μια ελαφριά βάση SQLite την
κατάσταση κάθε διεύθυνσης μαζί με μια σύνοψη του περιεχομένου της, ώστε να
αναγνωρίζουμε και μόνοι μας αν τα δεδομένα έχουν μείνει αμετάβλητα.
Από τις σελίδες HTML κρατάμε μόνο το κυρίως άρθρο και τον τίτλο, αφαιρώντας μενού,
υποσέλιδα και άλλα στοιχεία που δεν προσφέρουν πληροφορία, και προσπαθούμε να
εντοπίσουμε την ημερομηνία δημοσίευσης από διάφορες πηγές, όπως τα μεταδεδομένα της
σελίδας ή ακόμη και τη δομή της διεύθυνσης. Τα αρχεία PDF περνούν από αντίστοιχη εξαγωγή
κειμένου, με ρυθμίσεις που υποστηρίζουν τόσο τα ελληνικά όσο και τα αγγλικά. Στη συνέχεια
το καθαρισμένο κείμενο σπάει σε τμήματα περίπου χιλίων τετρακοσίων χαρακτήρων, με μικρή
επικάλυψη εκατόν είκοσι χαρακτήρων μεταξύ διαδοχικών τμημάτων, μέσω του αντίστοιχου
διαχωριστή της βιβλιοθήκης LangChain.