Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Percolatorを廃止し、マルチ検索サービスへ刷新した話 / Search Enginee...

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

Percolatorを廃止し、マルチ検索サービスへ刷新した話 / Search Engineering Tech Talk 2026 Spring

2026年4月28日に開催された「Search Engineering Tech Talk 2026 Spring」の登壇資料です。
https://search-tech.connpass.com/event/385890/

▼関連資料
ブラックボックス化したMLシステムのVertex AI移行
https://speakerdeck.com/visional_engineering_and_design/mlops-community-62

1人1アプリから標準化へ:Vertex AIを活用したMLOps推進
https://speakerdeck.com/visional_engineering_and_design/shibuya-ai-4

ビズリーチにおける検索・推薦の取り組み
https://speakerdeck.com/visional_engineering_and_design/deim2026

ビズリーチの 「企業向けレコメンド」機能について
https://speakerdeck.com/visional_engineering_and_design/shibuya-ai-3

Two-Tower モデルで実現する 検索リランキング
https://speakerdeck.com/visional_engineering_and_design/shibuya-ai-2

生成AIの利活用を加速させるための取り組み「prAIrie-dog」
https://speakerdeck.com/visional_engineering_and_design/shibuya-ai-1

-----
Visionalのエンジニアリングに関する最新情報はX、ブログで発信しています!📣

▼Visional Engineering Blog
https://engineering.visional.inc/blog/

▼BizReach AI Product Studio
https://zenn.dev/p/bizreach_aps

▼VISIONAL ENGINEERING / X
https://twitter.com/VISIONAL_ENG

▼ビズリーチAI 特設サイト
https://www.bizreach.co.jp/ai

More Decks by Visional Engineering & Design

Other Decks in Technology

Transcript

  1. 2 自己紹介 株式会社ビズリーチ プロダクト本部 データプロダクト部 検索基盤2グループ 梅田 裕輔 Yusuke Umeda

    2024〜 株式会社ビズリーチ • 新卒で株式会社ビズリーチに入社 • ビズリーチプロダクトの検索に関わる基盤の開発、保守運用を担当 ポーカー♥♠とサウナ🧖が好きです
  2. Percolatorとは 6 通常の検索とは逆で、ドキュメント(レジュメ)で「検索クエリを検索する」 「Java 5年以上」 レジュメ B レジュメ A 「Java10年やってます」

    「Java 5年以上」 「Python 3年以下」 「Rust 5年以上」 「Java 5年以上」 通常検索 percolator レジュメ A レジュメ C レジュメ B
  3. ビズリーチでは新着求職者通知バッチで使っていた 7 新着求職者 通知バッチアプリ ケーション 新着求職者 のレジュメ 少量ドキュメント× 大量クエリの構造なので、 通常検索と比較してpercolatorは合理的な選択に見えた

    ②マッチした検索クエリを取得 通知 通知 通知 通知 percolateクラスター ①レジュメを投げる 人事・採用担当者 ③マッチした検索クエリの持ち 主に通知 新着求職者 のレジュメ 人事・採用担当者 人事・採用担当者 人事・採用担当者
  4. 9 採用活動 プロダクト 新着求職者通知 バッチ search api resume indexer percolate

    resume indexer 検索条件の DB 検索基盤 クライアント プロダクト resume index percolate resume index resumeクラスター percolateクラスター 人事・採用担当者 mapping定義の依存 「レジュメをインプットに検索 条件を引く」をするためには resume indexとフィールド 名を厳密に合わせる必要が ある 検索基盤 -> クライアントへの依存 Elasticsearchのクエリに変更する際 に、クライアント側で定義された検索条 件に関する知識が必要。 Percolatorの課題: 暗黙的な依存の発生 検索改善をガンガン 回したい領域 search index 新着求職者 にヒットする 「保存された検索条件」 を検索 index 検索条件を 保存 通知 index間とチーム間に 暗黙的な依存が発生していた 気軽に resume index のマッピング変更 ができない!! 依存 レジュメの DB resume情報を取 得 「保存された検索条件」 を取得 レジュメ検索
  5. Percolatorの内部処理 11 中身は「一時インデックス+普通の検索」だった 1. ドキュメントを受け取る 2. メモリ上に一時インデックスを作成 3. index済みクエリで検索 4.

    マッチしたクエリを返す 新着 会員 メモリ 新着求職者 のレジュメ 新着求職者 のレジュメ 新着求職者 のレジュメ percolateクラスター
  6. 新構成の全体像 14 新着求職者通知 バッチ search api resume index index作成 ノーコード

    アプリケーション 検索条件のDB 検索基盤 クライアントプロダクト ①reindex を指示 resumeクラスター マルチ検索用 resumeクラスター ③検索条件 を取得 人事・採用担当者 newcomer resume index ⑤msearch ②remote reindex ④新着求職者 をマルチ検索 Percolatorを「msearch + remote reindex 」で再構築 ⑥通知 新着求職者に絞った indexを作っているのが ポイント
  7. 15 採用活動 プロダクト 新着求職者通知 バッチ search api resume indexer percolate

    resume indexer 検索条件の DB 検索基盤 クライアント プロダクト resume index resumeクラスター percolateクラスター 人事・採用担当者 構成の全体像の Before/After search レジュメ検索 index 新着求職者 にヒットする 「保存された検索条件」 を検索 index 検索条件を 保存 通知 採用活動 プロダクト 新着求職者通知 バッチ search api resume indexer index作成 ノーコード アプリケーション 検索条件の DB 検索基盤 クライアント プロダクト resume index newcomer resume index resumeクラスター マルチ検索用 resumeクラスター 人事・採用担当者 search レジュメ検索 index 検索条件を 保存 通知 msearch remote reindex 新着求職者を マルチ検索 検索条件を 取得 reindex を指示 index間とチーム間 の暗黙的な依存関係 が解消されている! レジュメの DB resume情報を 取得 レジュメの DB resume情報 を取得 percolate resume index 依存 「保存された検索条件」 を取得
  8. 工夫1: 小さなインデックス 17 resume index index作成 ノーコード アプリケーション reindex を指示

    resumeクラスター マルチ検索用 resumeクラスター remote reindex • resumeクラスターから remote reindex でマルチ検索用クラスターに 新着求職者のみ を抽出。 • reindexクエリはindex対象をクエリで 絞り込める。 • 検索対象ドキュメントを絞り込むことで、 Percolatorと同等の実行時間を実現。 そしてクラスターのコストも下げる事がで きた newcomer resume index elastic cloud
  9. 工夫2: ノーコードアプリ導入 18 resume index index作成 ノーコード アプリケーション reindex を指示

    resumeクラスター マルチ検索用 resumeクラスター remote reindex newcomer resume index • index作成アプリケーションはreindexを指 示するだけで良い。 • Elasticsearchの運用支援ツールである Curator を利用することで、ymlファイルの みで制御する「ノーコードな運用」を実現し た。 Curator elastic cloud
  10. 工夫3: ボトルネックの制御 19 ボトルネックをマルチ検索用クラスターの 検索並列数に集約 新着求職者通知 バッチ search api クライアントプロダクト

    マルチ検索用 resumeクラスター newcomer resume index msearch 新着求職者を マ ルチ検索 課題 • 「保存された検索条件」は毎年約2倍成長している • 数年後には数十倍のデータ量になる可能性がある • 「保存された検索条件」が爆発的に増えても 検索並列数を 上げれば追従可能 • 検索並列数を最大化するため、CPU性能を重視したインスタン スを選定
  11. 工夫4: 汎用性 20 • マイクロサービス化の文脈において、特定のビジネスロ ジックに依存せず、純粋な「マルチ検索機能」という適 切な粒度でサービスを切り出した • 他のユースケースで同様のマッチング要件が発生した 際にも、即座に横展開が可能な状態となった

    新着求職者通知に限定されない 「汎用マルチ検索サービス」 として構築した search api newcomer resume index 新着求職者通知 バッチ ???バッチ ???バッチ ??? ??? msearch 新しいユースケース 検索基盤
  12. まとめ 22 Percolatorの内部処理を読み解くことで 標準機能によるシンプルな解にたどり着けた! 1. 負債の解消とコスト削減 • 暗黙的な依存関係を解消し、検索改善のアジリティを向上 • クラスター最適化により、インフラコストを80%

    削減 2. マイクロサービスとしての「適切な粒度」の獲得 • 検索基盤側に特定のビジネスロジック(新着求職者など)を持たせない設計にした。 • 「対象の小さなIndex + msearch」という構成により、 他ユースケースのバッチ処理から流 用可能な汎用マルチ検索サービス となった。
  13. 24