6 回目の配信です。 今回のむチオシは、DoorDash の怜玢システム刷新の蚘事です。

Apache Solr Release Notes

Solr 9.0.0 がリリヌスされたした。 Elasticsearch ず同じく、 Lucene 9 の ANN をサポヌトしたこずにより、近傍探玢機胜が远加された。

Apache Solr 9.0.0 がリリヌスされたした - KandaSearch

リリヌス文の日本語蚳も公開されおいたした。

Also in 9.0 is a brand new Solr Ref Guide, completely re-organized and built on @antoraproject which gives us a dozen features we’ve wanted like search. Which is probably the one you really wanted too: https://solr.apache.org/guide/solr/latest/ > https://twitter.com/childerelda/status/1524854759022379017

Solr 9 のリリヌスに䌎い、Apache Solr Reference Guide も再線成されたした。怜玢機胜がサむトに搭茉されたず蚀及されおいるので䟿利になったのでは?

On-device Text-to-Image Search with TensorFlow Lite Searcher Library — The TensorFlow Blog

TensorFlow Lite を䜿っおデバむス䞊での蚀語ク゚リから画像怜玢を行った解説蚘事。 デバむス䞊で、怜玢ク゚リに察応する画像の埋め蟌みベクトルを ScaNN(Google が開発した近䌌近傍探玢のアルゎリズム)で近䌌近傍を行い、Top N 枚の画像のメタデヌタを怜玢する。぀たり、デバむス䞊には画像のメタデヌタのみ保有しおおり、画像自䜓は䟋えばネット経由で衚瀺させるこずも可胜。 蚘事内では、画像をデバむスに保存しおいるような蚘述はなかったので、画像の埋め蟌み空間のみ保持しおいる暡様。 Pixel 6 での実機テストでは、各怜玢ク゚リは 6m sec で完結しおいるらしくすべおデバむス䞊で完結するだけはある鬌の速さ。

初めお知ったが、TensorFlow Lite Model Maker ずいうラむブラリを䜿うこずで、TensorFlow Lite の孊習を簡玠化できるらしい。

ナヌザの地域考慮機械孊習モデルによる CTR 改善 〜 ダフヌ怜玢の入力補助機胜での事䟋 - Yahoo! JAPAN Tech Blog

関連怜玢ワヌドの粟床を地理情報によりパヌ゜ナラむズしおみたお話。 地理に䟝存したク゚リにおいお曖昧性回避のために有効だが、地理情報ごずに QAC のむンデックスを䜜成するの倧倉そう。 倧たかに分けおも地方ごず(関西・関東ずか?)にむンデックスを䜜成するのだろうか…?

実隓結果で、CTR がスマヌトフォンず PC だず結果が顕著に分かれおおり、怜玢結果の䞊郚ず䞋郚で PC だず䞋郚が CTR が䞋がっおいお面癜かった。 考察しようずしたけどここたで差異がでるのはなぜか思い぀かなかった.. これも Web 怜玢ならではの取り組みがいがある課題ですね。

OpenSearchCon 2022 · OpenSearch

2022.09.21 に OpenSearch(Elasticsearch をベヌスに AWS 䞻䜓で開発しおいる怜玢゚ンゞン)のカンファレンスが開催予定。 OpenSearch は近䌌近傍探玢1で、 nmslib や faiss を利甚しおおり本元の Elasticsearch ず違う方向性に倉化しおいきそうなので、今埌に期埅しおいる。

3 Changes to Expand DoorDash’s Product Search Beyond Delivery

フヌドデリバリヌナニコヌンの DoorDash が怜玢システムで機胜を刷新した 3 ぀の点を解説した蚘事。 DoorDash の技術ブログは、機械孊習2や怜玢システム3など、自分の興味ある分野で良質な蚘事が目癜抌しなので毎回曎新を楜しみにしおいたす。

かなり面癜かったので深堀りしお抄蚳したした。


3 Changes to Expand DoorDash’s Product Search Beyond Delivery 芁点たずめ

圓初はフヌドデリバリヌのみだったが DoorDash の怜玢機胜は、料理のメニュヌ怜玢のために䜜成された。 ビゞネス拡倧に䌎い、料理のメニュヌ以倖にも、スヌパヌの食材や雑貚、アルコヌルやペットフヌドなど様々な皮類の補品を怜玢可胜にする必芁があった。

  1. たず、デヌタレむダヌの芖点では、商品のメニュヌ以倖に怜玢機胜を拡倧する際に、スヌパヌの食材などは SKU の単䜍ずしお非垞に粒床が现かく、領域が拡倧するたびにその領域に合わせたデヌタをむンデックスする必芁がある。
  2. たた、新しい領域にビゞネスを拡倧する際には、膚倧な数の SKU にラベル付をする必芁があるが、スケヌルさせるために機械孊習ベヌスの手法でラベリングをスケヌルさせた。

それら぀の課題を解決するために新しく怜玢システムのむンフラを刷新し、 Query undestanding, Document Understanding によっお怜玢結果のランキングを改善する。

具䜓的に䜕をやったのか?

  • Rebuilding search infrastructure for new challenges
    • active/nextgen indexing: たず DoorDash の事業圢態ずしお、高速にむンデックスを曎新する必芁がある。(NOTE:オンラむン䜕かをオヌダヌする際に、怜玢むンデックスが曎新されおいなかったので、怜玢結果には衚瀺されおいたけど売り切れおるような䜓隓は避けたいですよね)
    • federated search: 食料品、料理、アルコヌルなど耇数領域の怜玢結果を混ぜる
    • new search storage: 䞊蚘を可胜にする怜玢むンフラ
  • Improving query and document understanding
    • new taxonomies: Query & Document understanding のために、機械孊習を甚いた補品のラベリングシステムを開発
  • Learning-to-rank
    • learning-to-rank & evaluation system: Rerank の仕組みず、怜玢結果の評䟡を可胜にするフレヌムワヌクを開発。(モデルの詳现は埌日デヌタサむ゚ンスチヌムがブログ蚘事を曞いおくれるずのこず)

Rebuilding search infrastructure for new challenges

Implementing active/nextgen indexing

以前 DoorDash はBuilding Faster Indexing with Apache Kafka and Elasticsearch - DoorDash Engineering Blog の蚘事で玹介されたように、Apache Kafka を䜿っお Elasticsaerch ぞのむンデキシング速床を

  • 店舗のカタログ党䜓を backfill する時間を 1 週間から 6.5 時間に短瞮
  • 商品のカタログ党䜓を backfill する時間を 2 週間から 6.5 時間に短瞮
  • 再むンデックス(re-index)の時間を 1 週間から 2 時間に短瞮

ず劇的に改善したが、そこから曎にむンデキシング速床を向䞊させた。

具䜓的なアプロヌチずしお再むンデックスをやめお逐次むンデキシングを採甚するこずで、優先床の高いデヌタをリアルタむムに怜玢゚ンゞンに反映するこずができるようになった。

料理、雑貚、食品など耇数領域の怜玢結果を混ぜる federated saerch を導入。 NOTE: むメヌゞずしおは、各領域ごずに怜玢システムのマむクロサヌビスを䜜成しお、それらの怜玢結果を混ぜるマむクロサヌビスも開発した感じです。

初期はレストラン(料理)怜玢のみに察応した怜玢゚ンゞンだったが、新システムでは氎平に各領域の怜玢を行い混ぜるこずができるようになったので、察応領域拡倧の際に、むンデックスなどの既存のコヌドを曞き換え察応する必芁がなくなった。 たた、怜玢ずランキングが氎平に分離されたこずで、各領域に特化しお柔軟に怜玢性胜を向䞊させるこずができる。

たた、 federated saerch の実珟により䟋えば䞀぀の領域の怜玢システムがダりンしたずしおも怜玢システム党䜓がダりンするこずは避けるこずが可胜になった。

New search storage engine

Elasticsearch を採甚しおいたが、様々な課題が芋えおきたので新しい怜玢゚ンゞンの怜蚎を開始した。 Apache Lucene をベヌスにしお怜玢システムを構築した。 利点ずしお、速床向䞊の他にも、Lucene 9 から䜿甚可胜な 近䌌近傍探玢も魅力的な点だった。

NOTE: yelp の nrtsaerch 4もそうだが、既存の Elasticsaerch や Solr がボトルネックになるず自䜜怜玢゚ンゞンを䜜り始めるのかっこよすぎる。

Improving query and document understanding

  • 手䜜業でのラベリングを行う。手䜜業はスケヌラブルではないが、高速に仮説を立蚌しお、数癟芏暡のデヌタセットを䜜成する。
  • プロセスが暙準化された埌は、オペレヌションチヌムや倖郚パヌトナヌず連携しお、数千芏暡のラベリングを行う。
  • 収集した数千のデヌタを基に機械孊習モデルを構築しお、そのモデルを䜿っおラベリングをスケヌルさせる。
  • 䞊蚘のデヌタに察しお、定期的な品質確認を行う。ラベリングの品質確認は、バむアスの排陀やモデルの粟床向䞊に䞍可欠
Using human annotations to create labels

アノテヌションの分散を最小化するために、アノテヌションプロセスを文曞化したガむドラむン䜜成はずおも重芁である。 Google 怜玢が公開しおいる怜玢品質の玠晎らしいガむドラむンがあるが、同様に DoorDash もアノテヌションガむドラむンを䜜成した。

だが、もし DoorDash のすべおの埓業員がフルタむムでマニュアルに則っおアノテヌションしたずしおも数十䞇芏暡のアノテヌションタスクを終わらせるこずはできない。 人間によるアノテヌションをスケヌルさせるためには倖郚の専門のベンダヌに頌らざるを埗ない。 Amazon Mechanical Turk や、Google Cloud AI Labeling Service, Scale.AI, Appen など倚くのアノテヌションビゞネスが存圚しおいる。

基本的にアノテヌションタスクは、䞀人のアノテヌタヌの刀断を信頌するこずはできない。 バむアス陀去のために、よく䜿われる手法ずしおは倚数決を取り入れた手法がある。 適切な粟床のレベルたで匕き䞊げるに 3-4 人、もしくはそれ以䞊の人数で同䞀のアノテヌションタスクを行う必芁がある。 たた、良質なガむドラむンはアノテヌションの品質や速床の向䞊にも寄䞎する。

ベンダヌに䟝頌埌、アノテヌションデヌタセットが䜜成された埌にも、我々はデヌタセットに察する監査を行う必芁がある。 (機械孊習のシステムであろうず)他のシステムず同様に、品質保蚌は重芁です。

NOTE: 同意しか無い。機械孊習だから仕方ないよねだず、その先には行けないので出来埗る限り (倚皮倚様な状況があるので、それに応じたベストな行動を指す)の取り組みで品質保蚌を行う必芁がある。

アノテヌションデヌタセットぞ監査を行った際に、面癜いテヌマが芋぀かった。

  • いくらかのベンダヌは特定の地域のアノテヌタヌで構成されおおり、文化の差異によっお誀った刀断が発生しおいた
  • 特定のベンダヌは他のベンダヌず比べお、アノテヌタヌが蚓緎されおおり、アノテヌション結果がずおも良質だった
  • 䞀郚の皮類のラベルはアノテヌションガむドラむンに曖昧性が倚すぎた。
  • アノテヌションタスクの耇雑さを過小評䟡した堎合、ベンダヌはアノテヌションタスクの立ち䞊げず凊理に長時間必芁ずした。
Using natural language processing to enrich query context

ク゚リに察する品詞のアノテヌションを行うこずで、ク゚リの蚀語的な構造を理解ができる。 䟋えば、 「red pizza」ずいうク゚リに察しお、パヌスを行い[JJ NN]ずいうアノテヌションを行う。 JJは圢容詞で、NN は名詞を指しおいる。 結果ずしお、このク゚リは圢容詞が名詞を修食しおいるずいうこずがわかる。 怜玢の際に、「red pizza」ずいう単語が完党䞀臎で存圚しなかった堎合、緩和を行い「pizza」のみの単語で怜玢を行うこずが可胜になる。(䞀般的にク゚リ拡匵ず呌ばれる技術)

NOTE: この POS のアノテヌションでわからないのは、ク゚リ自䜓正しい英語ではなく誀怍たみれの英語がくるから POS アノテヌションが必芁問事なのかなず思ったりした? 専門分野ではないので玠人的発想だが、圢態玠解析が必芁なく誀怍ももしなければ POS アノテヌションせずずも品詞はすべお把握できそう? だが、埌述の Spacy で

NLP libraries involve far more than POS tagging

ず曞いおあるので、アノテヌション自䜓は必芁なタスクなんだず理解。

POS タギング自䜓は Spacy を䜿っおいる。 POS タギングのサヌビングだが、怜玢時にオンラむン(リアルタむム)でのサヌビングが必芁なので速床向䞊のために以䞋のような遞択肢がある。

  • オフラむンで蚈算したク゚リの品詞のペアを Redis などのむンメモリ DB に栌玍しおルックアップテヌブルを構築しお掚論を行わないようにした。(人気のあるク゚リのみに焊点をあお、テむルク゚リ(頻床の䜎いク゚リ)はカヌディナリティが爆発するので DB には栌玍しない)
  • Spacy を䜿わずに JVM で動く NLP ラむブラリを䜿っおサヌビングする
  • Roblox のようにチュヌニングを極めるこずで、トランスフォヌマヌモデルでもオンラむン毎日 10 億芏暡の掚論を実珟するこず5も可胜

NOTE: 遞択肢は色々ずありたすずいい぀぀も䜕を採甚したかは次の蚘事に期埅しおねず曞いおいた。個人的には DB でルックアップテヌブル䜿うのが初手だず䞀番良さそう

Learning-to-rank

DoorDash の ランキングアルゎリズムの倉遷

  1. Heuristic Ranker (BM25+ 店舗の人気床)
  2. LTR:Pointwise
  3. LTR + Personalization

初期の LTR モデルをデプロむ時に、オンラむンでの怜玢評䟡のフレヌムワヌクを瀟内で議論しお方向性を固めおいった。 ビゞネス指暙ず情報怜玢指暙の぀のカテゎリの指暙を持぀

  • ビゞネス指暙: 怜玢のコンバヌゞョン率、CTR、first click rank position などは North star 指暙
  • 情報怜玢指暙: mean-reciprical rank, nDCG

定垞的にゎヌルデンデヌタを䜜成する仕組みを䜜成。アノテヌタヌを配眮しお、関連性のレヌティングを行い、最新のゎヌルデンデヌタを垞に䜜成できるようにしおいる。

Heuristic Ranker から pointwise LTR に切り替えたこずで、怜玢関係のすべおの指暙が倧きく向䞊。

䞀方で pointwise LTR の導入には 6 ヶ月以䞊が費やされた。

その埌、LTR + Personalization によっお、曎に指暙が向䞊。 DoorDash では、぀の明確な怜玢の䜿甚方法が存圚し、

  • ブランド怜玢: レストランの名前を怜玢する、匷い意図を持った怜玢
  • 非ブランド怜玢: 料理や食品を目的にした怜玢、怜玢意図は個人的な思考に匷く䟝存

LTR + Personalization による改善では、非ブランド怜玢が倧きく改善された。(そしお怜玢ボリュヌムでもかなりの郚分を占める)


Mercari ML&Search Talk #3 ~MLOps & Platform~ - YouTube

  • Build ML platform using Open-Source (English)
    • メルカリ JP 内の機械孊習基盀に぀いお語っおくれおいたす。積極的に倖郚発信されおいなかったず思うので気になる方は埡芧ください。
  • How search system evolves in mercari (Japanese)
  • Mercari Lens beta - product development with WebAssembly × AI (Japanese)
    • @tkat0 さんによる、WebAssembly を䜿った機械孊習プロダクト開発の裏偎の玹介。毎回感嘆するのは、クラむアント呚りの開発を自分たちでやっおいるためお客さたの䜓隓に盎面する開発になる。むンタビュヌを重ね぀぀改善しおいくのはすごく難しいず思うけど、その姿勢が良いなぁず思っおいる。バック゚ンドだけになりがちな機械孊習適甚ですが、クラむアントの芁玠も考慮しないずいけなくなるので、Edge の醍醐味ですね。

新刊『怜玢システム ― 実務者のための開発改善ガむドブック』のお知らせ – 技術曞出版ず販売のラムダノヌト

本曞は、探玢的怜玢たで考慮しながら「怜玢システム」ず日々栌闘しおいる実務家 6 名による実務家のためのガむドブックです。怜玢゚ンゞンを支えるデヌタ構造ずアルゎリズム、䜿い勝手のよい UI、怜玢システムを定量的に評䟡し぀぀改善する手法、個々のナヌザヌのニヌズに寄り添った怜玢結果を返すための工倫などなど、「よい怜玢システムを぀くる」ために䜕をどのように始めたらいいのかを䌝える矅針盀ずなっおいたす。

mocobeta/building-search-system-book: 「仕事ではじめる怜玢システム」ずいう本があったならずいう想像の産物です -> 「怜玢システム ― 実務者のための開発改善ガむドブック」になりたした 1 幎半前の構想から、぀いに曞籍になったずいう良いお話。 この話題が Twitter で話題になった際に、リポゞトリの存圚は知ったのですが、commit history を芋おみるず、ちょこちょこ @mocobeta さんが曎新されおいたみたいでこの倉遷をみるのが曞籍完成たでの远䜓隓できお面癜い。(web 日蚘みたいで良いですよね 🙂)

発売日に即賌入させおいただきたしたが、ただじっくりず読めおいないので粟読埌に感想蚘事を曞かせおいただこうかなず思っおいたす。

10X の怜玢を 10x したい - 10X Product Blog

ネットスヌパヌのプラットフォヌムである Stailer の怜玢システムを改善したお話。 珟状の怜玢システムを理解、ログからパフォヌマンスボトルネックを発芋しお解消するずいうお手本のようなストヌリヌで面癜かったです。 実際に速床も 10 倍、CPU 䜿甚率も 68%削枛ずいうデカむ成果がでおいたすね。 たた、既存のシステム蚭蚈も芋盎すこずで費甚も 8 割削枛ず玠晎らしい。

あず冒頭の

ずころで、怜玢むンフラの改善ができるずいうこずは、先人たちが怜玢機胜を䜜り、PMF しおサヌビスが利甚されるようになったおかげです。感謝しお改善したしょう。

の蚀葉がリスペクトに満ちおいお個人的にずおも奜きなのず、

最埌の

怜玢速床の改善や、むンフラ負荷察策は楜しく、改善点は無くならないので氞遠にできたす。しかし、わたしたちの目的は、よい怜玢機胜をお客さたに提䟛するこずであるこずを忘れおはなりたせん。

も怜玢を通じた先の䜓隓改善を念頭においおいお玠晎らしくないですか?

著者の @metalunk さんは、䞀緒に取り組んでくれる゚ンゞニアを募集䞭なので、カゞュアル面談倧歓迎6ずのこずです。

感想など

Twitter で #searchengineeringnewsletter のハッシュタグで぀ぶやいおいただくか、 Google フォヌム での感想投皿をお埅ちしおおりたす。

投皿の励みにさせおいただきたす。

Search Engineering Newsletter の賌読方法

配信蚘事が蓄積される RSSを䜜成しおいたす。

たた、今たでの配信蚘事䞀芧もこちらから閲芧できたす。

䜙談

前回ず同じく、蚘事を曞く時間の䞊限を決めた運甚にしおみるず、頻床も高たりうたく回っおいるず思う。 DoorDash の蚘事が面癜すぎお抄蚳しおたら、他の蚘事を曞く時間が消えおしたった。 だが、骚倪な蚘事を公開しおくれる DoorDash に感謝。

たた、Yuki さんずいう方から、buymeacoffee で ☕ を 3 杯も買っおいただき7、非垞にテンションが䞊がりたした。


  1. Approximate search - OpenSearch documentation ↩︎

  2. Machine Learning - DoorDash Engineering Blog ↩︎

  3. Things Not Strings: Understanding Search Intent with Better Recall ↩︎

  4. Yelp/nrtsearch: A high performance gRPC server on top of Apache Lucene ↩︎

  5. https://blog.roblox.com/2020/05/scaled-bert-serve-1-billion-daily-requests-cpus/ 。知らなかったので埌から読むリストに突っ蟌んだ。 ゲヌム䌚瀟の Roblox がそんなに機械孊習に力を入れおいるずは知らなかった…。面癜い ↩︎

  6. @metalunk さんに Twitter で声をかけるずいいらしいです https://twitter.com/metalunk ↩︎

  7. https://www.buymeacoffee.com/hurutoriya/c/3287909 ↩︎

See Also

Support

蚘事をお読みくださりありがずうございたす。このりェブサむトの運営を支揎しおいただける方を募集しおいたす。 もしよろしければ、䞋のボタンからサポヌト(投げ銭)しおいただけるず、ブログ執筆、情報発信のモチベヌションに繋がりたす✚