最近取り組んでいること(データの管理と検索改善)
Ubie にMLエンジニアとして転職してからメインで所属しているグループ(ホラクラシーでいうサークル)が3回ほど変わりました。
入社してからやっていたこと
当初メインで所属していた2つサークルでは以下のような仕事をしていました。
検索精度の向上 - 入社する前は Ubie ではあまり検索の仕事は無いのではないかと思っていたんですが、以外に結構ありました。Ubieが提供する各種サービスでは検索機能を提供しておりその精度を向上する作業に携わっていました。
自然言語を入力とするAPI開発 - 問診もそうですが、それ以外にも Ubieでは自然言語を扱うサービスは多いです。自然言語を入力として、そこから必要な情報を抽出するAPIを作っていました。使っている技術は機械学習から検索、辞書ルールなどなど組み合わせて精度を稼いでいました。
そして今ですが、共通データを管理するサークルに所属しています。
共通データ管理
共通データ管理サークルに所属するまで正直やっていることのイメージがつかなったのですが、全社で共通して使用する重要なデータをマスターデータとよび、それらの管理をしているサークルでした。
ChatGPT に「マスターデータ管理」の定義について質問すると、以下のような回答が得られました。
日々更新されてゆく共通データを各サービスが独自に使うとそれぞれが使っているデータのバージョンや前処理の違いなどによって齟齬が発生やすくなります。
そこで重要なデータを一元管理するサービスを提供して、各サービスが同一バージョンのデータを安定してあつかえるようにするというのがサークルの責務です。
マスターデータ管理チームのタスク
マスターデータ管理チームは全社で扱うデータを適切なデータストレージ(データベース、検索エンジン)にポートして、それをもとにAPIを作っています。APIは大きく分けて2種類存在します。それぞれデータベース(Postgresql)に保持されているデータから結果を返すものと、検索エンジン(Elasticsearch)からデータを返すものからなります。自分は主にデータベースに存在するデータを利用して検索APIを作成、保守しています。
共通データサークルでの検索改善
共通データサークルで扱うデータに検索機能が必要な場合、サーバを立てるのと一緒に精度を改善します。特によく使われている(重要な)ものについては、検索ログを使って精度を稼ぐようにしています。
この作業をしていて dbt を触っています。このツール、小さくて拡張性に富んでて、いいですね。検索精度をログを使って改善する作業がこのツールのお陰で、これまでよりもかなり省コストでできるようになったのを感じてます。
データベース周りのお仕事
検索エンジンを利用したAPIで利用する元データの多くはデータベースに保存されています。単純にはそれらをダンプしつつインデクスを作ればいいのですが、データ自体を変更する必要があることもあります。正直これまでデータベースの扱いには自信がなかったのですが、データベース周りのタスクをアサインしてもらって色々こなしているうちに大分経験値が溜まってきた気がしています。
所感
これまで、Rails などのWebアプリケーションのコードを触る経験(たとえば、アプリケーションに検索やらMLやらの機能を追加する)はあったんですが、データを基軸とするアプリを構築、管理することはなかったのでこういったタスクができるのは新鮮です。
また、検索やらMLで利用するデータを用意する部分の知見がつくと、自分一人でアレコレできることが増えるんで以前よりはかなりROIよくタスクをさばけることがありました。これは自分の技術スタックを広げる意味でありがたい経験だなぁと思ってます。