「LLMsを使用したEコマース製品検索の強化」
Enhancing E-commerce Product Search with LLMs.
LLMを適用して、Eコマースの検索エンジンを口語的なクエリに対して頑健にする
近年、ウェブ検索エンジンは、検索能力を高めるために大規模な言語モデル(LLM)を迅速に取り入れています。最も成功した例の1つは、BERTによって強化されたGoogle検索です[1]。比較的に、多くのEコマースプラットフォームは、この新興技術を製品検索に適用することに関しては控えめです。本記事では、LLMを適用することで、Eコマースの製品検索の理解能力を向上させる方法を示します。特に、口語的で暗黙的な検索クエリに遭遇した場合に効果を発揮します。
問題の説明
Amazonなどの先駆者にもかかわらず、多くのEコマースプラットフォームは、製品検索においてTFIDFやBM25のような伝統的な検索手法に依存しています。このような疎な手法は通常、顧客が製品情報に一致する明確なクエリを入力する必要があり、口語的で暗黙的なクエリに対しては十分な関連性を実現するのが難しいです。その結果、検索エンジンは結果を返さないか、関連性の低い結果を返し、関連する結果の存在を無視することになります。これは顧客の体験やビジネス指標に悪影響を及ぼします。
例えば、Ebayはクエリ「5歳以下の男の子への最高のギフトは何ですか?」に対して「一致する結果が見つかりませんでした」と返します。少ない単語に一致する結果の解決策は「結果なし」の状況を避けていますが、その検索の関連性は明らかに改善の余地があります。
人々は、そのようなクエリが発生することは稀であると主張するかもしれません。しかし、始まりの段階で過小評価されたユースケースによって実際に多くの機会と進歩が生まれることは珍しくありません。
LLMベースの解決策
現在、LLMの急速な開発のおかげで、ユーザーはゼロから独自のソリューションを構築するための労力を心配することなく、迅速にプロトタイプを構築することができます。これにより、問題に対処するための素早い発見が可能になります。
以下の画像に示されているように、アイデアは非常にシンプルです。LLMを利用して、生のクエリを製品検索のための明確な製品情報を含む強化クエリに変換します。潜在的に、強化クエリでカバーされる製品の範囲は、暗黙的で曖昧な生のクエリに対して広範囲になります。そのため、強化クエリをキーワードベースの検索エンジンに直接送信すると、曖昧さと不確実性のために結果が悪くなる可能性が高いです。この問題を解決するために、LLM埋め込みが採用され、意味的な複雑さに対処します。具体的には、強化クエリは、前処理された製品の埋め込みを含む埋め込み空間に射影されます。次に、クエリの埋め込みと製品の埋め込みとの類似性を比較することで製品の検索が行われ、トップkの製品が検索結果として生成されます。
各ステップには多くのオプションが存在するため、アイデアを実装するための幅広い技術があります。ここでは、Hugging FaceとLangChainをベースにした1つの実装例を提供します。詳細は以下で説明します。
ML_experiments/LLM_search_exp.ipynb at main · simon19891101/ML_experiments
GitHubでアカウントを作成してsimon19891101/ML_experimentsに貢献してください。
github.com
エンハンストクエリの生成
まず、最近発表されたLlama 2が与えられた生のクエリに対してエンハンストクエリを生成するためのLLMとして採用されます。以下に示すように、Hugging Faceのパイプラインが使用され、そのシンプルさが考慮されています。なお、パイプライン自体はタスクを達成するために十分なので、LangChainの使用は完全にオプションです。ここで採用されているプロンプトテンプレートは、生のクエリの曖昧さに対処するために関連性と多様性のある製品名を生成することを目的としています。
from transformers import AutoTokenizerimport transformersimport torchmodel = "meta-llama/Llama-2-7b-chat-hf"tokenizer = AutoTokenizer.from_pretrained(model, use_auth_token=True)pipeline = transformers.pipeline( "text-generation", model=model, torch_dtype=torch.float16, device_map="auto", do_sample=False, top_k=1, num_return_sequences=1, eos_token_id=tokenizer.eos_token_id, max_length=200)from langchain.llms import HuggingFacePipelinefrom langchain import PromptTemplate, LLMChaintemplate='''[INST] <>製品名だけを教えてください。回答は10個の名前だけを含めるようにしてください。<>{prompt}[/INST]'''prompt_template = PromptTemplate(template=template, input_variables=["prompt"])llm = HuggingFacePipeline(pipeline=pipeline)llm_chain = LLMChain(prompt=prompt_template, llm=llm)
製品の埋め込みの作成
次に、LangChainのセンテンストランスフォーマーとFAISSを使用して、在庫の製品タイトルに基づいて製品の埋め込みを作成し保存します。ここで、実際の検索エンジンへのアクセスがないため、オフラインのEbay製品データセット “products.csv” をEコマース製品在庫のモックアップとして採用しています。このデータセットには、幅広いカテゴリを網羅した約3,000個の製品が含まれています。
Ebay UKの製品データセット — opensnippetsによるデータセット
Ebay UKのEコマース製品無料データセット
data.world
import pandas as pdproducts = pd.read_csv('products.csv', usecols=['name'])from langchain.vectorstores import FAISSfrom langchain.embeddings import HuggingFaceEmbeddingsembeddings = HuggingFaceEmbeddings(model_name='sentence-transformers/all-MiniLM-L6-v2', model_kwargs={'device': 'cpu'})product_names = products['name'].values.astype(str)product_embeddings = FAISS.from_texts(product_names, embeddings)
製品の検索
検索に関しては、製品をエンコードするために再度同じセンテンストランスフォーマーモデルが使用され、エンハンストクエリのクエリ埋め込みが生成されます。最後に、クエリ埋め込みと製品埋め込みの類似性に基づいて上位10個の製品が取得されます。
raw_query = 'example query'enhanced_query = llm_chain.run(raw_query)product_embeddings.similarity_search_with_score(enhanced_query, k=10)
デモ
このアプローチの効果を示すために、上記のクエリ「5歳以下の男の子への最高のギフトは何ですか?」に注目し、LLMの改善を実際のEbayの検索結果と比較します(図1)。
まず、生のクエリを受け取った後、Llama 2はプロンプトテンプレートの指示に従って10個の製品を生成します。これらは男の子のギフトのアイデアとしては非常に素晴らしいものですが、より良い製品レベルの詳細さが期待されています。
次に、埋め込み空間での類似性マッチを見てみましょう。製品在庫のモックアップから取得されるものは、図1の実世界のEbay検索エンジンの結果と比較しても悪くありません。在庫モックアップの製品範囲が限られているため、比較はやや不公平ですが、LLMを適用する前と後の大きな違いを観察することができます。全体的に、埋め込み空間での検索は関連性と多様性の両方を実現しています。
最後の考察
初期の調査を行った結果、LLMはEコマースプラットフォームの商品検索を強化するための強力なツールであることが明らかです。このタスクには、クエリの生成のためのプロンプトエンジニアリング、豊かな属性を持つ商品埋め込み、LLMクエリの強化のためのオンライン遅延最適化など、多くの将来の探索があります。商品検索の改善策を求めているEコマースプラットフォームにこのブログがインスピレーションを与えることを願っています。
参考文献
[1] Nayak, P. (2019) ユーザーの検索理解をこれまで以上に向上させる, Google. オンライン: https://blog.google/products/search/search-language-understanding-bert/ (アクセス日: 2023年8月9日)。[2] Muhamed, A. et al. (日付不明) 大規模な言語モデルを用いたWebスケールの意味論的な商品検索, Amazon Science. オンライン: https://www.amazon.science/publications/web-scale-semantic-product-search-with-large-language-models (アクセス日: 2023年8月9日)。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles