Eコマースの拡張について語る際、人々は大規模なエンジニアリング課題に注目します。分散検索、リアルタイム在庫管理、レコメンデーションエンジン、チェックアウト最適化などです。しかし、その裏には、ほぼすべての小売業者が苦労している、より静かで根強い問題が潜んでいます。それは属性値です。
属性は商品発見の基盤です。フィルター、比較、検索ランキング、レコメンデーションロジックを支えています。しかし実際のカタログでは、属性値がきれいに整理されていることはほとんどありません。一貫性がなく、重複し、形式が間違っていたり、意味的に曖昧だったりします。
サイズのような単純なものを例にとってみましょう。次のようなものが見られます:
Code
["XL", "Small", "12cm", "Large", "M", "S"]
または色:
Code
["RAL 3020", "Crimson", "Red", "Dark Red"]
個別に見ると、これらの不一致は無害に見えます。しかし、それぞれに数十の属性を持つ300万以上のSKUに掛け合わせると、問題は体系的になります。フィルターが予測不能に動作し、検索エンジンが関連性を失い、マーチャンダイザーは手動クリーンアップに溺れ、商品発見は顧客にとってより遅く、よりイライラするものになります。
これは、Zoroのフルスタックソフトウェアエンジニアとして私が直面した課題であり、見落としがちながらもすべての商品ページに影響を与える問題でした。
私は単に物事を並べ替えるだけの謎めいたブラックボックスAIは望みませんでした。そのようなシステムは信頼、デバッグ、拡張が困難です。代わりに、私は次のようなパイプラインを目指しました:
その結果、LLMからの文脈的推論と明確なルールおよびマーチャンダイザーの制御を組み合わせたハイブリッドAIパイプラインが生まれました。必要に応じて賢く動作しますが、常に予測可能な状態を保ちます。これは制御不能なAIではなく、ガードレール付きのAIです。
すべての属性処理は、リアルタイムではなくオフラインのバックグラウンドジョブで行われます。これは妥協ではなく、戦略的なアーキテクチャの選択でした。
リアルタイムパイプラインは魅力的に聞こえますが、Eコマースの規模では次のような問題が発生します:
一方、オフラインジョブは次のメリットをもたらしました:
数百万のSKUを扱う際、顧客向けシステムとデータ処理パイプラインを分離しておくことは不可欠です。
データにAIを使用する前に、ノイズと混乱を取り除くための明確な前処理ステップを実行しました。このステップはシンプルに聞こえるかもしれませんが、LLMの推論を大幅に改善しました。
クリーニングパイプラインには次のものが含まれます:
これにより、LLMがクリーンで明確な入力を受け取ることが保証され、これが一貫した結果の鍵となります。ゴミを入れればゴミが出る。この規模では、小さなエラーでも後で大きな問題につながる可能性があります。
LLMは単にアルファベット順に値を並べ替えるだけではありませんでした。それらについて推論していました。
サービスは次を受け取りました:
この文脈により、モデルは次を理解できました:
モデルは次を返しました:
これにより、パイプラインはすべてのカテゴリーに対してルールをハードコーディングすることなく、異なる属性タイプを処理できます。
すべての属性にAIが必要なわけではありません。
実際、多くの属性は決定論的ロジックでより適切に処理されます。
数値範囲、単位ベースの値、単純なセットは、多くの場合次のメリットがあります:
パイプラインはこれらのケースを自動的に検出し、それらに決定論的ロジックを使用しました。これによりシステムが効率的に保たれ、不要なLLM呼び出しが回避されました。
マーチャンダイザーは、特にビジネス上重要な属性について、依然として制御が必要でした。
そのため、各カテゴリーは次のようにタグ付けできました:
このデュアルタグシステムにより、AIがほとんどの作業を行う一方で、人々が最終決定を下すことができます。また、マーチャンダイザーがパイプラインを壊すことなく必要に応じてモデルを上書きできるため、信頼が構築されました。
すべての結果は製品MongoDBデータベースに直接保存され、アーキテクチャがシンプルで集中化されました。
MongoDBは次の単一運用ストアになりました:
これにより、変更のレビュー、値の上書き、カテゴリーの再処理、他のシステムとの同期が容易になりました。
ソート後、値は次に流れ込みました:
これにより次が保証されました:
検索は属性ソートが最も目に見える場所であり、一貫性が最も重要な場所です。
数百万のSKUにわたってこれを機能させるために、バックグラウンドジョブ、AI推論、検索統合を中心に構築されたモジュラーパイプラインを設計しました。以下のアーキテクチャ図は完全なフローを捉えています:
このフローにより、AIでソートされたか手動で設定されたかに関わらず、すべての属性値が検索、マーチャンダイジング、顧客体験に反映されることが保証されます。
混乱した値がどのように変換されたかを次に示します:
| 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 |
これらの例は、パイプラインが文脈的推論と明確なルールを組み合わせて、クリーンで理解しやすいシーケンスを作成する方法を示しています。
リアルタイム処理では次が導入されていたでしょう:
オフラインジョブは次をもたらしました:
トレードオフは、データ取り込みと表示の間のわずかな遅延でしたが、メリットは規模での一貫性であり、顧客はこれをはるかに重視しています。
結果は重要でした:
これは単なる技術的な勝利ではありませんでした。ユーザー体験と収益の勝利でもありました。
属性値のソートはシンプルに聞こえますが、数百万の製品に対して行う必要がある場合、真の課題となります。
LLMインテリジェンスと明確なルールおよびマーチャンダイザー制御を組み合わせることで、複雑で隠された問題をクリーンでスケーラブルなシステムに変換しました。
これは、最大の勝利の一部は、退屈な問題、見逃しやすいが、すべての製品ページに表示される問題を解決することから来ることを思い出させてくれます。
\n \n \n


