Airbnb EngineeringとData Scienceは先頃、ユーザの宿泊先やアクティビティの決定を支援するための構造化データベースである,同社のナレッジグラフ(knowledge graph)に関する記事を投稿した。
Airbnbのナレッジグラフは,同社の持つ世界中のインベントリ情報をグラフ構造にエンコードしたものだ。構造は階層的分類に基づいており,概念(サーフィンやスポーツのような)がノードとして,その関係性(サーフィンはスポーツである,というように)がエッジとしてグラフ内に表現されている。Airbnbの持つHomes,Experiences,Placesといったインベントリに関する属性は,そのような分類法の概念でタグ付けされている。その上で,例えばサーフィンのような特定のタイプのスポーツとタグ付けされた場所を見つけるために,スポーツとタグ付けされた場所が検索される。
InfoQはAirbnbのソフトウェアエンジニアであるXiaoya Wei氏にコンタクトを取り、同社のナレッジグラフと、それがどのようにインベントリを分類し、ユーザに旅行のコンテキストを提供する上で役立っているかを聞くことにした。
InfoQ: ナレッジグラフの構築によって,どのような問題の解決を目指したのでしょうか?
Xiaoya Wei: ナレッジグラフはおもに,カテゴリ化とコンテキスト化に使用しています。
カテゴリ化することで,Airbnbのすべてのサプライ(Homes,Experiences,Places)と旅行エンティティ(目的地と近郊)の持つ属性を参照します。このようなデータのすべてに関して,ユーザが自身の望むものを,Exploreのナビゲーションや自由文検索/自動補完やフィルタなど,関連するプロダクト機能を通じて検索しやすいように,用的な方法で分類するのです。
もう一方のコンテキスト化は,現状ではGoogleやTripAdvisorといったプラットフォームから取得するような,旅行予約やプラン決定を自信を持って行う上で重要な旅行データ(天候,イベント,ビザの要否など)を参照します。
こうした処理のすべてが、私たちのミッションである,"予約可能なインベントリと予約不可能なインベントリすべてを表現する,クリーンで最新,かつ完全に構造化されたデータに対する一貫したインターフェースの提供を実現する"上で有用であるように設計されているのです。
InfoQ: データの投入と管理はどのように行っているのでしょう?手作業と自動化の割合はどうなっていますか?
Wei: さまざまなアプローチを組み合わせています。
- 手作業による編集入力: Airbnb Experiencesのカテゴリ化のようなユースケースでは,編集者やサードパーティ用の内製ツールを用意して,データの入力やメンテナンスを行っています。作業を一回で済ませるために,編集したコンテンツをナレッジグラフにインポートする場合もあります。
- モデル: Homesのカテゴリ化のような場合については,ルールベースのMLモデルによるデータ生成を試行中ですが,ユーザの確認が必要な場合もあります。
- サードパーティデータ: 過去の天気や今後のイベントなどのユースケースでは,サードパーティのデータ提供者からでーたを取得するパイプラインを用意して,データをナレッジグラフに取り入れたり,定期的に更新したりしています。
手作業によるアプローチは,(Experiencesのカテゴリ化のように)ユースケースが限られています。データ入力に関しては,今後も引き続き,よりスケーラブルなアプローチを模索していきます。
InfoQ: Airbnbの顧客への価値提供については,システムとしてどの程度成功していますか?
Wei: このシステムは現在,Airbnb全体の予約フローや,他のトリッププランナなどのコンポーネントにコンテンツを提供しています。今のところは,ユーザのエンゲージメント指数(ページビューやクリックなど)の改善に成功しています。試験の結果では予約の数が増えているので,一部のユースケースにおいては,ユーザの旅行計画を支援しています。
InfoQ: ナレッジグラフのソリューションで使われているテクノロジについて,説明をお願いします。
Wei: グラフのストレージは内部リレーションデータベース上に構築されています。詳細は元の記事の"Graph Storage"の章を参照してください。サービスの開発には,Airbnbサービスフレームワークを使用しています(詳細は"Building Services at Airbnb"にあります)。多くのユースケースでは,Kafkaに強く依存しています。元の記事の"Storage Mutator"の部分はその一例です。