Ketika orang membicarakan tentang penskalaan e-commerce, mereka fokus pada tantangan rekayasa besar: pencarian terdistribusi, inventaris real-time, mesin rekomendasi, dan optimisasi checkout. Namun di balik semua itu terdapat masalah yang lebih tenang dan persisten yang hampir setiap retailer hadapi: nilai atribut.
Atribut adalah tulang punggung penemuan produk. Mereka menggerakkan filter, perbandingan, peringkat pencarian, dan logika rekomendasi. Namun dalam katalog nyata, nilai atribut jarang bersih. Mereka tidak konsisten, terduplikasi, salah format, atau ambigu secara semantik.
Ambil contoh yang sederhana seperti Ukuran. Anda mungkin melihat:
Code
["XL", "Small", "12cm", "Large", "M", "S"]
Atau Warna:
Code
["RAL 3020", "Crimson", "Red", "Dark Red"]
Secara individu, inkonsistensi ini terlihat tidak berbahaya. Namun kalikan mereka di lebih dari 3 juta SKU, masing-masing dengan puluhan atribut, dan masalahnya menjadi sistemik. Filter berperilaku tidak terduga, mesin pencari kehilangan relevansi, merchandiser tenggelam dalam pembersihan manual, dan penemuan produk menjadi lebih lambat dan lebih membuat frustrasi bagi pelanggan.
Ini adalah tantangan yang saya hadapi sebagai software engineer full-stack di Zoro, masalah yang mudah diabaikan tetapi memengaruhi setiap halaman produk.
Saya tidak menginginkan AI kotak hitam misterius yang hanya menyortir sesuatu. Sistem seperti itu sulit dipercaya, di-debug, atau diskalakan. Sebaliknya, saya bertujuan untuk pipeline yang:
Hasilnya adalah pipeline AI hibrid yang menggabungkan penalaran kontekstual dari LLM dengan aturan yang jelas dan kontrol merchandiser. Ini bertindak cerdas saat dibutuhkan, tetapi selalu tetap dapat diprediksi. Ini adalah AI dengan pagar pembatas, bukan AI yang tidak terkendali.
Semua pemrosesan atribut terjadi dalam background jobs offline, bukan secara real-time. Ini bukan kompromi; ini adalah pilihan arsitektur strategis.
Pipeline real-time terdengar menarik, tetapi pada skala e-commerce, mereka memperkenalkan:
Offline jobs, di sisi lain, memberi kami:
Menjaga sistem yang menghadap pelanggan terpisah dari pipeline pemrosesan data sangat penting saat bekerja dengan jutaan SKU.
Sebelum menggunakan AI pada data, saya menjalankan langkah preprocessing yang jelas untuk menghilangkan noise dan kebingungan. Langkah ini mungkin terdengar sederhana, tetapi sangat meningkatkan penalaran LLM.
Pipeline pembersihan termasuk:
Ini memastikan LLM menerima input yang bersih dan jelas, yang merupakan kunci untuk hasil yang konsisten. Garbage in, garbage out. Pada skala ini, bahkan kesalahan kecil dapat menyebabkan masalah yang lebih besar nantinya.
LLM tidak hanya menyortir nilai secara alfabetis. Ini menalar tentang mereka.
Layanan menerima:
Dengan konteks ini, model dapat memahami:
Model mengembalikan:
Ini memungkinkan pipeline menangani berbagai jenis atribut tanpa hardcoding aturan untuk setiap kategori.
Tidak setiap atribut memerlukan AI.
Faktanya, banyak atribut lebih baik ditangani oleh logika deterministik.
Rentang numerik, nilai berbasis unit, dan set sederhana sering mendapat manfaat dari:
Pipeline secara otomatis mendeteksi kasus-kasus ini dan menggunakan logika deterministik untuk mereka. Ini menjaga sistem tetap efisien dan menghindari panggilan LLM yang tidak perlu.
Merchandiser masih memerlukan kontrol, terutama untuk atribut yang sensitif terhadap bisnis.
Jadi setiap kategori dapat ditandai sebagai:
Sistem dual-tag ini memungkinkan orang membuat keputusan akhir sementara AI melakukan sebagian besar pekerjaan. Ini juga membangun kepercayaan, karena merchandiser dapat menimpa model saat diperlukan tanpa merusak pipeline.
Semua hasil disimpan langsung dalam database Product MongoDB, menjaga arsitektur tetap sederhana dan terpusat.
MongoDB menjadi penyimpanan operasional tunggal untuk:
Ini memudahkan untuk meninjau perubahan, menimpa nilai, memproses ulang kategori, dan menyinkronkan dengan sistem lain.
Setelah diurutkan, nilai mengalir ke:
Ini memastikan bahwa:
Pencarian adalah tempat di mana penyortiran atribut paling terlihat, dan di mana konsistensi paling penting.
Untuk membuat ini berfungsi di jutaan SKU, saya merancang pipeline modular yang dibangun di sekitar background jobs, penalaran AI, dan integrasi pencarian. Diagram arsitektur di bawah ini menangkap alur penuh:
Alur ini memastikan bahwa setiap nilai atribut, baik diurutkan oleh AI atau diatur secara manual, tercermin dalam pencarian, merchandising, dan pengalaman pelanggan.
Berikut cara nilai yang berantakan ditransformasi:
| Attribute | Raw Values | Ordered Output | |----|----|----| | Size | XL, Small, 12cm, Large, M, S | Small, M, Large, XL, 12cm | | Color | RAL 3020, Crimson, Red, Dark Red | Red, Dark Red, Crimson, Red (RAL 3020) | | Material | Steel, Carbon Steel, Stainless, Stainless Steel | Steel, Stainless Steel, Carbon Steel | | Numeric | 5cm, 12cm, 2cm, 20cm | 2cm, 5cm, 12cm, 20cm |
Contoh-contoh ini menunjukkan bagaimana pipeline menggabungkan penalaran kontekstual dengan aturan yang jelas untuk menciptakan urutan yang bersih dan mudah dipahami.
Pemrosesan real-time akan memperkenalkan:
Offline jobs memberi kami:
Trade-off-nya adalah penundaan kecil antara ingestion data dan tampilan, tetapi manfaatnya adalah konsistensi dalam skala, yang pelanggan hargai jauh lebih banyak.
Hasilnya signifikan:
Ini bukan hanya kemenangan teknis; ini juga kemenangan untuk pengalaman pengguna dan pendapatan.
Menyortir nilai atribut terdengar sederhana, tetapi menjadi tantangan nyata ketika Anda harus melakukannya untuk jutaan produk.
Dengan menggabungkan kecerdasan LLM dengan aturan yang jelas dan kontrol merchandiser, saya mengubah masalah yang kompleks dan tersembunyi menjadi sistem yang bersih dan dapat diskalakan.
Ini adalah pengingat bahwa beberapa kemenangan terbesar datang dari memecahkan masalah yang membosankan, yang mudah terlewatkan tetapi muncul di setiap halaman produk.
\n \n \n


