Αναζήτηση σε φυσική γλώσσα σε κατάλογο 150.000 SKU

Μια ομάδα πωλήσεων μπορεί ρεαλιστικά να θυμάται μερικές εκατοντάδες προϊόντα. Ο υπόλοιπος κατάλογος υπήρχε μόνο μέσα σε PDF που κανείς δεν προλάβαινε να ανοίξει.

ΠΕΛΑΤΗΣΕμπόριο ειδών ανακαίνισης
ΡΟΛΟΣΜοναδικός αρχιτέκτονας
ΚΑΤΑΣΤΑΣΗΣε παραγωγή
ΑΡΧΙΤΕΚΤΟΝΙΚΗΠλήρως serverless

Το πρόβλημα

Ο πελάτης εμπορεύεται είδη μπάνιου, κουζίνας και πλήρη γκάμα ανακαίνισης κατοικίας. Οι πληροφορίες προϊόντων βρίσκονταν εκεί που βρίσκονται συνήθως: σε περίπου εκατό καταλόγους κατασκευαστών σε μορφή PDF, μαζί με πενήντα με εξήντα αρχεία Excel.

Σε μια ζωντανή συζήτηση με πελάτη, ο πωλητής δουλεύει από μνήμης. Δηλαδή με τα λίγες εκατοντάδες προϊόντα που ξέρει καλά. Η εναλλακτική που ήταν σε στοκ, το συμπληρωματικό είδος που ανεβάζει το καλάθι, το νεότερο μοντέλο με καλύτερο περιθώριο: όλα τεχνικά διαθέσιμα, όλα πρακτικά αόρατα.

Το κόστος δεν ήταν ποτέ κάποια λειτουργία που έλειπε. Ήταν κάθε προσφορά που υποτιμούσε σιωπηλά τον κατάλογο.

Τι έφτιαξα

Έναν βοηθό retrieval-augmented πάνω στο σύνολο των προϊόντων, ώστε ο πωλητής να ρωτά σε απλή γλώσσα και να παίρνει απάντηση σε δευτερόλεπτα, μαζί με προϊόντα που δεν ήξερε καν ότι έπρεπε να αναζητήσει.

Το δύσκολο κομμάτι δεν ήταν ποτέ η συνομιλία. Ήταν το ingestion. Εκατό κατάλογοι με ασυνεπείς διατάξεις, μαζί με αρχεία Excel, όπου μια λάθος προδιαγραφή σε μια απάντηση είναι χειρότερη από καμία απάντηση.

150.000SKU στο ευρετήριο
~100κατάλογοι κατασκευαστών
50–60αρχεία Excel
~40CloudWatch alarms σε παραγωγή

Αρχιτεκτονική

Πλήρως serverless, με Terraform από άκρη σε άκρη. Δύο μοντέλα για δύο διαφορετικές δουλειές, επιλεγμένα με κριτήριο κόστος και καταλληλότητα αντί να χρησιμοποιηθεί παντού το ισχυρότερο.

Ingestion · το διαχειρίζεται ο πελάτης
1
S3~100 κατάλογοι και 50–60 αρχεία Excel
2
Vision extractionδιαβάζει κάθε σελίδα όπως σχεδιάστηκε
3
Knowledge Baseευρετήριο πάνω σε όλο το υλικό
Ερώτημα · χώρος πωλήσεων
4
CloudFrontτο περιβάλλον που χρησιμοποιεί ο πωλητής
5
Bedrock agentανακτά και απαντά με σύνδεσμο στη σελίδα προέλευσης
6
DynamoDBδομημένα χαρακτηριστικά μαζί με τη σημασιολογική αναζήτηση
  1. Ο πελάτης ανεβάζει μόνος του καταλόγους και αρχεία Excel. Καμία εξάρτηση από εμένα για να μπει μια νέα σειρά.
  2. Κάθε σελίδα διαβάζεται ως σελίδα, οπότε μια προδιαγραφή μένει συνδεδεμένη με το προϊόν στο οποίο ανήκει.
  3. Το αποτέλεσμα ευρετηριάζεται μία φορά και το ρωτούν όλοι.
  4. Ο πωλητής ρωτά σε απλή γλώσσα, μπροστά στον πελάτη.
  5. Ο agent απαντά και παραπέμπει στην ακριβή σελίδα του καταλόγου, ώστε η προδιαγραφή να ελεγχθεί πριν μπει σε προσφορά.
  6. Τα δομημένα χαρακτηριστικά ανακτώνται μαζί με τη σημασιολογική αντιστοίχιση, γιατί το «τι ταιριάζει με αυτό» είναι άλλη ερώτηση από το «τι μοιάζει με αυτό».
Πλήρως serverless. Αριστερά το ingestion, δεξιά η διαδρομή του ερωτήματος.

Οι αποφάσεις που μέτρησαν

Το κατάλληλο μοντέλο για κάθε δουλειά, όχι το καλύτερο παντού

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

Κάθε απάντηση παραπέμπει στη σελίδα προέλευσης

Ο βοηθός αναφέρει την πηγή του: σύνδεσμο απευθείας στη σελίδα του καταλόγου από την οποία προέκυψε η απάντηση. Ο πωλητής που δίνει μια προδιαγραφή σε πελάτη μπορεί να την επαληθεύσει με ένα κλικ αντί να εμπιστευτεί το μοντέλο.

Ορθότητα πριν από ταχύτητα στο πρώτο ingestion

Η αρχική φόρτωση έτρεξε σειριακά και όχι παράλληλα, ώστε να ελέγχω την ποιότητα της εξαγωγής σε όλο το υλικό και να εντοπίζω τα σφάλματα τη στιγμή που συνέβαιναν. Το παράλληλο ingestion είναι εύκολη βελτιστοποίηση. Κρατήθηκε σκόπιμα μέχρι να αποδειχθεί η ποιότητα. Ένα γρήγορο pipeline που αλλοιώνει σιωπηλά έναν πίνακα προδιαγραφών είναι χειρότερο από ένα αργό που παρακολουθείται.

Ο πελάτης το τροφοδοτεί μόνος του

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

Τι ακολουθεί

Τα συμπληρωματικά προϊόντα βασίζονται προς το παρόν στη δομή του υλικού: τα σχετικά είδη τυπώνονται συνήθως μαζί, οπότε η ανάκτηση σε επίπεδο σελίδας τα κρατά μαζί. Επόμενο βήμα είναι μια ρητή αποθήκη συσχετίσεων, που θα κάνει τη συμπεριφορά ντετερμινιστική αντί για συμπερασματική.

Διαθέσιμος για remote ρόλους παγκοσμίως

Solutions Architect με έδρα την Αθήνα, σε GenAI παραγωγής πάνω σε AWS. Remote παγκοσμίως, ή υβριδικά στην Αθήνα.