【要約】BigQueryのベクトル検索でJICFSカテゴリ推定精度を+35%改善した話 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
WED株式会社は、取得した商品データにJICFSカテゴリを自動付与する仕組みを運用している。しかし、従来のLUKEを用いたクラス分類モデルでは、以下の課題に直面していた。
- ・対応カテゴリ数の制限:頻出カテゴリに絞る必要があり、全2,679カテゴリをカバーできなかった。
- ・表記の多様性への対応不足:商品名の表記揺れや、文脈による誤分類が発生した。
- ・学習データの不足:一部のマイナーなカテゴリにおいて、十分な精度が出せなかった。
// Approach
従来の分類モデルに代わり、BigQueryのベクトル検索を用いた検索ベースのアプローチを採用した。商品マスタをデータベースとして活用し、類似度に基づいた推定を行う。
- ・商品マスタのベクトル化:
gemini-embedding-001を用い、約600万件のマスタをエンベディング化して格納。 - ・クエリのベクトル化:推定対象の商品名を
ML.GENERATE_EMBEDDINGでベクトルに変換。 - ・ベクトル検索の実行:
VECTOR_SEARCH関数を用い、コサイン類似度に基づき上位10件を取得。 - ・最頻カテゴリの選択:取得した上位候補の中から、最も出現頻度が高いカテゴリを最終的な推定値とする。
// Result
新手法の導入により、JICFSカテゴリの推定精度が劇的に向上した。
- ・正解率(Accuracy):43%から78%へ向上。
- ・macro-F1スコア:0.13から0.65へ大幅改善。
- ・マイナーカテゴリへの対応:出現頻度が低いカテゴリでも、類似商品に基づいた精度の高い推定が可能となった。
Senior Engineer Insight
> 本手法の真価は、インフラ管理コストを最小化しつつ、大規模データへのスケーラビリティを確保した点にある。600万件のデータをBigQuery上で完結させる構成は、運用負荷が極めて低い。ただし、検索精度はエンベディングモデルの性能に直結するため、ドメイン特化の追加学習が次の鍵となる。また、
fraction_lists_to_searchによる精度と速度の調整は、実運用時のレイテンシ要件に応じて慎重に行うべきである。