AIパーソナル・ラーニング
と実践的なガイダンス
ビーンバッグ・マースコード1

RAGアプリケーションのためのパーソナライズされたゲーム推薦の迅速な実装:DeepSeekとOllamaのハンズオンガイド

パーソナライズされたおすすめゲームを提供するアプリを作りたいですか?このチュートリアルでは、RAG(Retrieval Augmented Generation)テクニックの使用方法をステップバイステップで説明します。 ディープシーク 歌で応える オーラマ モデルを使用して、カスタマイズされたゲーム推奨システムを作成します。

Epic Games Storeのデータセットを使用します。 ゲーム.csv ファイルをデータソースとして使用します。このチュートリアルで選択するテクノロジー・スタックは以下の通りです:

  • 大規模言語モデル(LLM):Ollamaを使用する。 ディープシークR1:1.5b モデル
  • 埋め込みモデル:Weaviateの テキスト2vec_openai コンポーネントをデフォルトの テキスト埋め込み-3-小 モデル

blank


 

ステップ1: 依存ライブラリのインストールとAPIキーの設定

まず、以下のPythonライブラリをインストールする必要がある。 ラグ アプリケーションに必要な

!pip install weaviate-client pandas tqdm ollama

次に、OpenAIのエンベッディングモデルを使うために、OpenAIのAPIキーを設定する必要があります。まだ設定していない場合は、以下の手順に従ってください:

from getpass import getpass
インポート os
"OPENAI_APIKEY "がos.environにない場合: os.environ["OPENAI_APIKEY"] = getpass("OpenAIのAPIキーを入力してください")
os.environ["OPENAI_APIKEY"] = getpass("Enter your OpenAI API Key")

このコードでは、OPENAI_APIKEYが環境変数にすでに存在するかどうかをチェックし、存在しない場合は、OpenAIのAPIキーを入力して環境変数として設定するよう促します。

 

ステップ 2: DeepSeek モデルの実行

このチュートリアルでは、Ollamaを使ってdeepseek-r1:1.5bモデルをローカルで実行します。まだOllamaをインストールしておらず、deepseek-r1:1.5bモデルを引っ張ってきていない場合は、Ollamaの公式ドキュメントを参照してインストールとモデルの引っ張りを完了してください。

たとえば、macOS では、Terminal で以下のコマンドを使用して DeepSeek モデルを実行できます:

オラマ・ラン・ディープシーク-R1:1.5B

次のステップに進む前に、モデルが正常に実行されることを確認する。

 

ステップ3:Weaviateコレクションを作成し、入力する

Weaviateコレクションは、ゲームデータの保存と取得に使用されます。以下の手順に従って、Weaviateコレクションを作成し、データを入力してください:

  • games.csvファイルのダウンロード: Kaggleからgames.csvファイルをダウンロード(カグル) をローカル・ディレクトリにコピーする。
  • Weaviate Dockerコンテナの起動:以下のdocker-compose.ymlファイルを使用してWeaviateを起動し、generative-ollamaモジュールとtext2vec-openaiモジュールが有効になっていることを確認する。以下を docker-compose.yml ファイルとして保存し、ターミナルで docker compose up コマンドを使って Weaviate を起動する。
---
サービス
weaviate_anon.
命令:
--host
- 0.0.0.0
--ポート
- '8080'
---スキーム
- http
image: cr.weaviate.io/semitechnologies/weaviate:1.28.4
ポート
- 8080:8080
- 50051:50051
再起動:on-failure:0
環境
query_defaults_limit: 25
AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true'
PERSISTENCE_DATA_PATH: '/var/lib/weaviate'
ENABLE_API_BASED_MODULES: 'true'
BACKUP_FILESYSTEM_PATH: '/var/lib/weaviate/backups'
CLUSTER_HOSTNAME: 'node1'
LOG_LEVEL: 'trace'
ENABLE_MODULES: "text2vec-openai,generative-ollama"
...
  • Games」コレクションの作成:以下の Python コードを実行し、「Games」という Weaviate コレクションを作成する。このコードでは、ゲーム名、価格、プラットフォーム、リリース日、説明など、コレクションのプロパティを定義し、generative-ollamaモジュールとtext2vec-openaiモジュールを設定します。
weaviate をインポートする
import weaviate.classes.config as wc
from weaviate.util import generate_uuid5
from weaviate.util import generate_uuid5
from tqdm import tqdm
import pandas as pd
headers = {"X-OpenAI-Api-Key": os.getenv("OPENAI_APIKEY")}.
client = weaviate.connect_to_local(headers=headers)
if client.collections.exists("Games"): client.collections.delete("Games").
client.collections.delete("Games").
client.collections.create(
name="Games"、
properties=[
wc.Properties(name="name", data_type=wc.DataType.TEXT)、
wc.Properties(name="price", data_type=wc.DataType.INT)、
wc.Property(name="platforms", data_type=wc.DataType.TEXT_ARRAY), wc.Property(name="platforms", data_type=wc.DataType.TEXT_ARRAY), wc.Property(name="platform", data_type=wc.DataType.TEXT_ARRAY), wc.Property(name="platform", data_type=wc.DataType.TEXT_ARRAY)
wc.Property(name="release_date", data_type=wc.DataType.DATE), wc.Property(name="release_date", data_type=wc.DataType.DATE), wc.
wc.Property(name="description", data_type=wc.DataType.TEXT)、
],
generative_config=wc.Configure.Generative.ollama(model="deepseek-r1:1.5b"、
api_endpoint="http://host.docker.internal:11434")、
vectorizer_config=wc.Configure.Vectorizer.text2vec_openai(), )
)
  • ゲームデータのインポート: games.csvファイルのデータを "Games "コレクションにインポートするには、以下のコードを使用します。このコードはCSVファイルを読み込み、各行のデータをWeaviateオブジェクトに変換し、コレクションに一括で追加します。
games = client.collections.get("Games")
df = pd.read_csv('games.csv')
with games.batch.dynamic() as batch: for i, game in tqdm(df.iterrows())
for i, game in tqdm(df.iterrows()):: platforms = game["platform"].
platforms = game["platform"].split(',') if type(game["platform"]) is str else [].
game_obj = { { "name": game["name"].
"name": game["name"]、
"platforms": platforms, "price": game["price"], game["platform"], game["platform"] is str


"description": game["description"]、
}
batch.add_object(
properties=game_obj、
uuid=generate_uuid5(game["id"])
)
if len(games.batch.failed_objects) > 0:.
print(f "{len(games.batch.failed_objects)} オブジェクトのインポートに失敗しました")
print(games.batch.failed_objects)

 

ステップ4:埋め込み検索の実行

これで、「Games」コレクションにデータが入力されました。ユーザーのクエリに関連するゲームを取得するために、埋め込み検索を試すことができます。次のコードは、"I play the vilain "に関連するゲームを検索し、最も関連性の高い3つの結果を返す方法を示しています。

response = games.query.near_text(query="I play the vilain", limit=3)
for o in response.objects: print(o.properties)
print(o.properties)

このコードは、プラットフォーム、説明、価格、リリース日、名前など、クエリに関連するゲームの3つの属性に関する情報を出力します。

 

ステップ5:推奨RAGアプリケーションの構築

よりスマートなゲーム推薦を実装するためには、RAGアプリケーションを作成する必要がある。以下のrecommend_game関数がこれを行います。ユーザーのクエリを入力として受け取り、最も関連性の高い5つのゲームを検索し、deepseek-r1:1.5bモデルを使用してパーソナライズされた推奨を生成します。

def recommend_game(query: str):
response = games.generate.near_text(
query=query、
query=query, limit=5, grouped_task=f""
grouped_task=f"""ユーザーのクエリに基づいて、関連するゲームがいくつか提供されました。
最終的な回答には、各ゲームが利用可能なプラットフォームを示さなければなりません。

grouped_properties=["name", "description", "price", "platforms"], )
)
return {'thought': response.generated.split('')[0], 'recommendation': response.generated.split('')[1]}.

この関数はgames.generate.near_textメソッドを使用し、ベクトル検索を実行するだけでなく、生成モデルを使用して、検索されたゲーム情報に基づいて推奨テキストを生成します。grouped_taskパラメータはモデルの生成タスクを定義し、ユーザーのクエリと検索されたゲーム情報に基づいて答えを生成するようモデルに指示し、答えにゲームプラットフォームに関する情報が含まれていることを明示的に要求します。を含むことを明示的に要求します。

recommend_game関数を呼び出してユーザークエリを渡すことで、ゲーム推薦アプリケーションをテストできます。例えば、"魔法の生き物をロールプレイできるゲームは?"というクエリです。

response = recommendation_game("魔法生物をロールプレイできるゲームを教えてください")
print(response['recommendation'])

このコードを実行すると、モデルによって生成された推奨試合結果が表示される:

魔法生物になりきってロールプレイできるゲームをいくつか紹介しよう。
1.**Mages of Mystralia** (ミストラリアの魔法士たち)
- プラットフォーム:** Windows
- 概要:魔法の世界で自分だけの呪文をデザインするファンタジーRPG。

- プラットフォーム:** Windows、Mac
- 商品概要: ミュータントモンスター、複数のスキル、宝物、派閥、創造の可能性を持つオープンエンドRPG。自由度とリプレイ性を提供します。

- プラットフォーム:** Windows
- 商品概要:野生動物写真家として不思議な生態系を探索する3Dアドベンチャーゲーム。野生動物カメラマンとして不思議な生態系を探索する3Dアドベンチャーゲーム。
4.ペーパー・ビースト** **プラットフォーム:** Windows
- プラットフォーム:** Windows (PC)
- 商品概要: エキゾチックな生き物と謎解きに焦点を当てた、野生動物のバランスを崩すアドベンチャーゲーム。
5.ブラックブック*** **プラットフォーム:** ** Windows (PC) 説明: エキゾチックな生き物と謎解きに焦点を当てた、野生動物のバランスを崩すアドベンチャーゲームです。
- プラットフォーム:** Windows
- 説明:スラブ神話をベースにしたダークなRPGで、若き魔術師として神話に登場するクリーチャーの世界でカードベースのバトルを繰り広げます。
魔法生物としてのロールプレイに適したユニークな体験が各ゲームで楽しめます。

推薦結果を生成するときにモデルが何を考えているかを見たい場合は、response['thought']プロパティを表示できます:

print(response['thought'])

これにより、モデルの思考プロセスがバックグラウンドで出力され、推奨ロジックをより理解しやすくなる。

<考える
さて、魔法生物としてロールプレイできるゲームをいくつか考えなければならない。 ユーザーはいくつかの選択肢を提供し、それぞれに説明とプラットフォームがある。一つずつ見ていこう。
まずは「Mages of Mystralia」。説明を読むと、魔法の世界で自分の呪文をデザインするファンタジーRPGだ。プラットフォームはWindowsなので、PCやデスクトップ・システムでプレイできるかもしれない。
次に「Geneforge 1 - Mutagen」ですが、これはミュータント・モンスターとバトル・メカニックを持つオープンエンドのRPGのようです。 無数のスキル、宝物、派閥、創造物があると説明されています。無数のスキル、宝物、派閥、創造の可能性があると説明されている。 比類のない自由度とリプレイ性は、様々なストーリーを可能にするので理にかなっている。プラットフォームがWindowsとMacなので、互換性のあるオプションがあれば便利だろう。
次に『マラヴィラ島の獣たち』だが、その名の通り、野生動物の写真家となって生態系を探索する3Dアドベンチャーゲームだ。行動学習と写真撮影に重点を置いており、自然の中でロールプレイを楽しみたい人にはエキサイティングかもしれない。 プラットフォームはWindowsである。プラットフォームはWindowsなので、アクセスできるはずだ。
プラットフォームはWindowsなので、アクセスしやすいはずだ。 "Paper Beast "もアドベンチャーゲームとして挙げられている。 野生生物のバランスを崩す未知の力がテーマで、プレイヤーはエキゾチックな生き物と一緒に謎を解いていく。PCに特化したゲームだが、移植オプションが用意されているかもしれないし、ユーザーがアクセスできるのであれば、それを実行できる別のデバイスがあるかもしれない。
最後に「Black Book」。スラブ神話をベースにしたダークなRPGで、若き魔術師として、神話に登場するクリーチャーたちとカードバトルを繰り広げる。このゲームのプラットフォームはWindowsなので、古いハードウェアでは、PCをアップデートするか、専用コンソールを持っていない限り、少し制限されるかもしれない。
各ゲームのプラットフォームと、魔法生物としての働きについて必要な詳細が明確に記載されていることを確認する必要があります。 また、以下のようなことも良いでしょう。また、もしいくつかの選択肢がないのであれば、いくつかの選択肢を提示するのもいいだろう。 クロスプラットフォームのゲームや、プレイに使用できるプラットフォームを提案するのもいいかもしれない。
</Maybe クロスプラットフォームのゲームや、プレイに使用できるプラットフォームを提案する。

おめでとうございます!あなたは、DeepSeek と Ollama をベースとしたゲーム推薦 RAG アプリケーションの構築に成功しました。このチュートリアルでは、大規模な言語モデルとベクトルデータベースを組み合わせた RAG テクニックを使用して、パーソナライズされたレコメンデーションシステムを構築する方法の基本を学びました。ゲームデータの追加、レコメンデーションアルゴリズムの最適化、より良いゲームレコメンデーションサービスを実現するためのユーザーインターフェイスの開発など、ニーズに応じてアプリケーションを拡張・改善することができます。

無断転載を禁じます:チーフAIシェアリングサークル " RAGアプリケーションのためのパーソナライズされたゲーム推薦の迅速な実装:DeepSeekとOllamaのハンズオンガイド

チーフAIシェアリングサークル

チーフAIシェアリングサークルは、AI学習に焦点を当て、包括的なAI学習コンテンツ、AIツール、実践指導を提供しています。私たちの目標は、高品質のコンテンツと実践的な経験の共有を通じて、ユーザーがAI技術を習得し、AIの無限の可能性を一緒に探求することです。AI初心者でも上級者でも、知識を得てスキルを向上させ、イノベーションを実現するための理想的な場所です。

お問い合わせ
ja日本語