大規模言語モデル(LLM)による商品検索の強化

[Enhancing Product Search with Large Language Models \(LLMs\) \- The Databricks Blog](https://www.databricks.com/blog/enhancing-product-search-large-language-models-llms.html)の翻訳です。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

ChatGPT、Dollyのような次世代の能力は真に印象的であり、AIの領域における大きなステップとして適切に認識されています。しかし、これらのモデルが先駆けとなった未来に対する興奮が落ち着くにつれて、多くの企業は質問し始めました、*今、我々はこれらの技術をのどように活用できるのか？*

多くの新技術と同じように、これらの大規模言語モデル(LLM)のアプリケーションの完全な範囲は現在では明らかとなっていませんが、[以前の記事](https://www.databricks.com/jp/blog/2023/04/13/generative-aishengchengaishidainoxiaomaiye)で共有したように、我々が現在行なっていることを拡張、強化するためにこれらを活用できるいくつかの領域を特定することは可能です。情報に基づく意見やガイドを提供するために大規模な文書を要約するタスクを与えられている個人には自然にフィットします。

# お客様は商品検索で助けを必要としています

小売業者は消費財企業の成長の促進に役立つような(そして、単なるコストカットではない)喫緊のニーズがある一つの領域は、検索の領域です。過去数年間におけるオンラインアクティビティの急激な拡大によって、より多くの顧客はより広範なニーズにためにオンラインアウトレットにエンゲージするようになっています。これによって、多くの企業はお客様が欲しいアイテムにアクセスできるように、より多くのコンテンツやグッズをオンラインで提供するように急激にラインアップを拡大しています。

多ければ良いとは言いますが、多くのオンラインサイトはお客様が探している物にたどり着くが困難になってしまう分水嶺を越えてしまっています。特定のトピックにおいて特定の部品や記事を特定するための正確な用語なしには、お客様は見当違いのアイテムをスクロールすることにフラストレーションを感じることになってしまいます。

LLMを用いることで、製品説明、説明コンテンツ、音声レコーディングと関連づけられた文章、プロンプトに適した物事の提示による検索に対するレスポンスをモデルに投入することで、モデルにタスクを課すことができます。ユーザーは探している物に関する正確な用語を必要とせず、LLMが自身をニーズに合わせられるように一般的な説明を指定するだけで良くなります。得られる結果は、ユーザーがサイトにエンゲージするとパーソナライズされエキスパートによるガイドを受け取ることができるパワフルな新たな体験となります。

# ファインチューニングによって目的に合致した検索結果を保証します

このようなソリューションを構築するには、企業はサードパーティのサービスを購読する必要は**ありません**。現在利用できる多くの機械学習モデルと同じように、多くのLLMはオープンソース技術によって構築されており、さまざまなユースケースにライセンスされています。これらの多くは、我々がサポートしたいと考えている多くの言語パターンをすでに学習する大容量のデータに対して事前学習されています。しかし、この知識はいくつかのユースケースをブロックする利用制限を受け継いでいる場合があります。

事前学習LLMは、コンテンツの要件やモデルをオンラインに持ってくる際に必要なトレーニング時間を劇的に削減するために活用することができます。Databricksの[Dolly 2\.0モデル](https://www.databricks.com/jp/blog/2023/04/12/dolly-first-open-commercially-viable-instruction-tuned-llm)によって立証されたように、比較的小規模なコンテンツに対してトレーニングしたとしても、これらのモデルはコンテンツ要約や生成タスクを印象的な判断力でこれらを行います。そして、ドキュメントの本体の検索を効果的に行うために、モデルをそのためにトレーニングする必要はありません。

しかし、ファインチューニングを行うことで、エンゲージメントの意図に合わせて固有のコンテンツにモデルを調整することができます。事前学習モデルを活用し、特定のサイトにある製品説明、製品レビュー、投稿記事、記録などに対する追加トレーニングを行うことで、コンテンツが改善されるほどに、ユーザーのプロンプトに対するモデルの反応能力が改善され、多くの企業が実行するに足りうる価値のあるステップとなります。

# LLMベース検索の有効化をスタートする

それでは、これら全て行うにはどうしたらいいのでしょうか？答えは非常に簡単です。スタートするには:

1. 事前学習済みのオープンソースLLMをダウンロードする
1. 製品テキストをエンベディングに変換するためにモデルを使用する
1. 検索にフォーカスするための知識の本体として、これらのエンべディングを使用するようにモデルを設定する
1. さまざまなアプリケーションにインテグレーションできるマイクロサービスとしてモデルをデプロイする

これらのステップは、驚くべきほど堅牢で基本的かつアウトオブボックスの検索機能を提供します。検索をファインチューニングするには:

1. 検索と製品結果のセットを集める
1. 結果を適切性でラベル付けする
1. これらの結果に対してモデルをフィットさせる
1. 上の2-4のステップを繰り返す

これらのステップはシンプルに見えますが、探索すべき新たな用語とコンセプトが存在します。

# いくつかのキーコンセプトを理解する

最初に、*どこで事前学習済みでオープンソースのLLMを見つけられるのでしょうか？* 上述のDolly 2.0はそのようなモデルの一つであり、[ダウンロードサイト](https://github.com/databrickslabs/dolly/tree/master/data)からライセンス条項に基づいて無料でダウンロード、使用することができます。[Hugging Face](https://huggingface.co/)は、AIコミュニティがセマンティックサーチと呼ぶもので理想的な[(大規模あるいはそれ以外の)言語モデル](https://huggingface.co/models?pipeline_tag=sentence-similarity&sort=downloads)を見つけ出すのに人気の場所です。少々の検索努力によって、おそらくダンロードできる多数のLLMを見つけるでしょうが、商用で再利用できるのかどうかを確認するためにライセンス状況をレビューするようにしてください。

次に、*エンベディングとはなんでしょうか？* この質問に対する回答は非常に技術的な物になりますが、簡単にいうとエンベディングとは文章、段落、文書の数値表現です。これらがどのよう精製されるのかに関するメカニズムはモデルの中に埋め込まれていますが、理解すべき重要なことはモデルが2つの文書をエンベディングに変換する際、数値間の数学的な距離(違い)はそれらの類似度を伝えてくれることになります。

*エンベディングとモデルはどのように組み合わされるのでしょうか？* この部分はさらに複雑なものとなりますが、オープンソースの[langchain](https://python.langchain.com/en/latest/index.html)のようなツールは、このためのビルディングブロックを提供します。理解すべきことは、検索したいと考えている商品カタログの詳細を形成するエンベディングは、従来型のリレーショナルデータベースやNoSQLデータストアからは検索できないということです。代わりに特殊なベクトルストアを活用する必要があります。

次に、*マイクロサービスとはなんでしょうか？* マイクロサービスは検索フレーズのようなリクエストを受け取り、レスポンスを返す軽量アプリケーションです。モデルとマイクロサービス内で検索するエンベディングをパッケージすることで、提供する検索機能を多くのアプリケーションからアクセスできるようにするだけではなく、多くのマイクロサービスインフラストラクチャソリューションは弾力性のあるスケーラビリティを提供しているので、需要の増減に追従できるようにサービスにリソースを割り当てることができます。これは、コストをコントロールしつつも可用性を管理するためには重要なこととなります。

最後に、*検索結果にどのようにラベル付けをおこなうのでしょうか？* これまでの質問の多くが技術的なものでしたが、これは驚くほどにシンプルです。必要なのはクエリーとクエリーによって返却された結果です。(eコマースサイトで提供されている多くの検索エンジンにはこの機能があります。)効果的な物にするためにこのデータセットは非常におきな物である必要はありませんが、検索結果が多いほど優れたものとなります。

そして、検索フレーズに対する適切性を示すために、人間のラベラーがそれぞれの検索結果に数値のスコアを割り当てる必要があります。これは複雑な物になる場合もありますが、適切な検索結果には1.0の値、不適切な検索結果には0.0の値をシンプルに割り当て、部分的に適切な結果にはその間の値を割り当てることで非常に良い成果を得ることができます。

# これが具体的にどのように行われるのかを知りたいですか？

Databricksにおけるゴールは常に、さまざまな企業から広くデータとAIのテクノロジーにアクセスできるようにすることです。これを念頭に置いて、我々は[Wayfair Annotation Dataset \(WANDS\)](https://www.aboutwayfair.com/careers/tech-blog/wayfair-releases-wands-the-largest-and-richest-publicly-available-dataset-for-e-commerce-product-search-relevance)を用いたオンライン検索ソリューションアクセラレーターを開発しました。このデータセットでは、Wayfairウェブサイトの42,000+の製品の説明テキストと、480の検索から生成された233Kのラベル付きの結果を提供しています。

Hugging Faceのオープンソースモデルを用いて、最初に我々はファインチューニングなしのアウトオブボックスの検索を組み立て、驚くべき良い結果を得ることができました。そして、ラベル付けされた検索結果を用いてモデルをファインチューニングし、検索結果を非常にブーストすることができました。そして、これらのモデルはDatabricksモデルサービングでホストされているマイクロサービスとしてパッケージされています。

この取り組みの生々しい詳細は[こちらから無料でダウンロード](https://d1r5llqwmkrl74.cloudfront.net/notebooks/RCG/product-search/index.html)できる4つのノートブックで表現されています。実行されたステップを明確にすることを目的とした説明コンテンツや、組織が自分たちの要件に合致するようにするための代替のパスでノートブックは注釈されています。最初は公開データを用いてas-isでこれらのノートブックを実行し、自身の検索機能を最初から作り始める際に必要なコードを拝借することをお勧めします。

**ノートブックのダウンロード**

https://d1r5llqwmkrl74.cloudfront.net/notebooks/RCG/product-search/index.html

### Databricksクイックスタートガイド

[Databricksクイックスタートガイド](https://www.amazon.co.jp/dp/B09V1YXFVQ/)


### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)