Original Blog : Enhancing Product Search with Large Language Models (LLMs)
翻訳: junichi.maruyama
ChatGPTやDollyなどのテキスト生成能力は実に素晴らしく、AIの分野での大きな一歩として当然のように認識されています。しかし、これらのモデルによってもたらされる未来への興奮が落ち着くにつれて、多くの組織が、これらのテクノロジーを今日どのように活用できるのか、という疑問を持ち始めています。
多くの新技術と同様、大規模言語モデル(LLM)の完全な応用範囲は現時点では不明ですが、以前のブログで紹介したように、私たちが現在行っていることを補強し強化するために使用できるいくつかの領域を特定することができます。大量の文章を要約し、十分な情報を得た上で意見を述べたり、指導したりするような場は、まさにうってつけです。
製品カタログの検索にお困りのお客様へ
小売業や消費財メーカーにとって、コスト削減だけでなく、成長促進にもつながる緊急のニーズがあると思われるのが、検索の分野です。ここ数年のオンライン活動の急速な拡大に伴い、より多くの顧客がより幅広い ニーズでオンラインショップを利用するようになっています。それに応えるように、多くの企業は、顧客が欲しいものに確実にアクセスできるように、オンラインで利用できるコンテンツや商品の範囲を急速に拡大しました。
しかし、多ければ多いほど良いというものでもありませんが、多くのオンラインサイトでは、コンテンツが増えすぎると、お客様が探しているものを見つけるのが難しくなってしまいます。特定の商品を探すための正確な用語や、狭い範囲のトピックの記事を探すための正確な用語がなければ、消費者は、適切でない商品のリストをスクロールすることにイライラしてしまうのです。
LLMを使えば、商品説明や文章、音声の記録などに目を通し、ユーザーの検索に応えて、その内容に関連するものを提案するよう、モデルに課すことができます。ユーザーは、探しているものを見つけるために正確な用語を必要とせず、LLMがニーズに合わせて方向付けることができる一般的な説明だけでよいのです。その結果、ユーザーがサイトを利用する際に、まるでパーソナライズされた専門家のガイダンスを受けたかのような感覚に陥る、パワフルな新しい体験が得られました。
検索結果を最適化するためのファインチューニング
このようなソリューションを構築するために、組織はサードパーティーのサービスを利用する必要はありません。現在利用可能な多くの機械学習モデルと同様に、LLMのほとんどはオープンソース技術で構築されており、幅広い用途で利用できるようにライセンスされています。これらのモデルの多くは、大量のデータで事前にトレーニングされており、そこから私たちがサポートしたい言語パターンの多くをすでに学習しています。しかし、この知識は、いくつかの使用例を妨げる使用上の制限を受け継いでいる場合があります。
事前に訓練されたLLMを使用することで、モデルのオンライン化に伴うコンテンツ要件と訓練時間を大幅に削減することができます。Databricks社のDolly 2.0 modelで証明されているように、比較的少量のコンテンツでもトレーニングすれば、これらのモデルはコンテンツの要約や生成タスクを驚くほど正確に実行することができます。また、特定の文書群を効果的に検索するためには、その文書に特化して学習させる必要すらありません。
しかし、ファインチューニングを行うことで、モデルの方向性を、それが意図する特定のコンテンツに対して調整することができます。事前にトレーニングしたモデルを、特定のサイトを構成する製品説明、製品レビュー、投稿、原稿などで追加トレーニングすることで、このコンテンツとより一致した方法でユーザーのプロンプトに応答するモデルの能力が向上し、多くの組織にとって実行する価値のあるステップとなります。
はじめに LLMベースの検索を有効にする
では、このようなことをするにはどうしたらいいのでしょうか。その答えは、意外と簡単です。まず始めに
- 訓練済みのオープンソースのLLMモデルをダウンロードする。
- モデルを使って、製品テキストをエンベッディングに変換する
- これらの埋め込みを検索対象の知識として使用するようモデルを構成する。
- モデルをマイクロサービスとしてデプロイし、様々なアプリケーションと統合することができます。
これらの手順により、基本的な、すぐに使える検索機能が提供されますが、驚くほど堅牢です。検索を微調整するには
- 検索と製品結果のセットを収集する
- 結果に関連性のあるラベルを付ける
- これらの結果にモデルを当てはめ、アン
- 上記のステップ2~4を繰り返す
これらの手順は一見簡単そうに見えますが、新しい用語や概念もあり、探求する価値があります。
いくつかのキーコンセプトの理解
まず、訓練済みのオープンソースのLLMはどこにあるのでしょうか。前述のDolly 2.0はそのようなモデルの1つで、ダウンロードサイトに提示されているライセンス条項に従って自由にダウンロードし、広く使用することができます。Hugging Face は、AIコミュニティがセマンティック検索と呼ぶものに最適な言語モデル(大規模なもの、そうでないものも)を発見できる人気の場所です。もう少し検索すれば、ダウンロード可能な他の多くのLLMを見つけることができるでしょうが、商用再利用の可能性を理解するために、それぞれに関連するライセンス条項を確認する時間を取る必要があります。
次に、エンベッディングとは何でしょうか?この質問に対する答えはかなり専門的になりますが、一言で言えば、エンベッディングとは、文章、段落、文書を数値で表したものです。どのように生成されるかの仕組みは、モデルの中に埋もれていますが、理解すべき重要なことは、モデルが2つの文書をエンベッディングに変換したとき、数値の間の数学的距離(差)が、それらの間の類似性の程度について何かを教えてくれることです。
エンベッディングはどのようにモデルと結合されるのか?この部分は少し複雑ですが、オープンソースのlangchainのようなツールは、このためのビルディングブロックを提供しています。重要なのは、検索したい商品カタログの詳細を形成する埋め込みデータは、従来のリレーショナルデータベースやNoSQLデータストアの中からは検索できないことです。その代わりに、特殊なベクトルストアを使用する必要があります。
次に、マイクロサービスとは何でしょうか。マイクロサービスとは、検索フレーズなどのリクエストを受け取り、レスポンスを返す軽量なアプリケーションのことです。モデルと検索する埋め込みをマイクロサービス内にパッケージ化することで、マイクロサービスが提供する検索機能にアプリケーションから広くアクセスできるようになるだけでなく、ほとんどのマイクロサービス基盤ソリューションは弾力的なスケーラビリティをサポートしているので、需要の増減に対応できるようにサービスにリソースを割り当てることができる。これは、コストを抑えながらアップタイムを管理するために不可欠です。
最後に、検索結果にどのようなラベルを貼るのでしょうか。これ までの質問で取り上げた項目の多くは非常に専門的なものでしたが、この項目は驚くほどシンプルです。必要なのは、一連のクエリと、それに対して返される結果だけです。(このデータセットは、検索結果が多ければ多いほど良いというわけではありませんが、効果的な方法として、超大規模である必要はありません。
次に、人間が各検索結果に対して、検索フレーズとの関連性を示す数値的なスコアを割り当てる必要があります。この作業は複雑ですが、関連性の高い検索結果には1.0、関連性の低い検索結果には0.0、部分的に関連性の高い検索結果にはその中間の値を割り当てるだけで、非常に良い結果を得ることができるでしょう。
どのように行われているのか、ご覧になりたいですか?
Databricksの目標は常に、データとAIの技術を幅広い組織で広く利用できるようにすることです。このような考えのもと、私たちはWayfair Annotation Dataset (WANDS)を利用したオンライン検索ソリューションアクセラレータを開発しました。このデータセットは、Wayfairのウェブサイト上の42,000以上の商品の説明テキストと、480回の検索から生成された233Kのラベル付き結果を提供します。
Hugging Faceのオープンソースモデルを使用し、まず、ファインチューニングを行わず、そのままの状態で検索を行ったところ、驚くほど良い結果を得ることができました。その後、ラベル付き検索結果を使ってモデルをファインチューニングし、 検索性能を大幅に向上させました。これらのモデルは、Databricksのモデルサービングでホストされるマイクロサービスとして展開するためにパッケージ化されます。
この作業の詳細については、4つのノートブック資産で紹介されており、ここから自由にダウンロードすることができます。ノートブックには、実行された手順と、組織が特定のニーズを満たすために取るべき代替経路を明確にするための説明的なコンテンツが注釈されています。まずは、公開されているデータを使ってこれらのノートブックをそのまま実行し、その後、独自の検索機能を実現するために必要なコードを借用することをお勧めします。