Mise en œuvre rapide d'une recommandation de jeu personnalisée pour les applications RAG : un guide pratique de DeepSeek et Ollama

Vous souhaitez créer une application qui fournit des recommandations de jeux personnalisées ? Ce tutoriel vous guidera pas à pas dans l'utilisation des techniques de Retrieval Augmented Generation (RAG), combinées à l'application DeepSeek répondre en chantant Ollama pour créer un système de recommandation de jeux personnalisé.

Nous utiliserons l'ensemble de données de l'Epic Games Store pour la games.csv comme source de données. Les choix de la pile technologique pour ce tutoriel sont les suivants :

  • Grands modèles de langage (LLM) : nous utiliserons Ollama pour exécuter les modèles de langage (LLM). deepseek-r1:1.5b Modèles.
  • Intégration de modèles : nous utiliserons le modèle de Weaviate text2vec_openai avec le composant par défaut text-embedding-3-small Modèles.
快速实现个性化游戏推荐 RAG 应用:DeepSeek & Ollama 实践指南

 

Étape 1 : Installation des bibliothèques dépendantes et configuration des clés API

Tout d'abord, vous devez installer les bibliothèques Python suivantes, qui sont nécessaires à la construction et à l'exécution de l'application RAG nécessaires à l'application.

!pip install weaviate-client pandas tqdm ollama

Ensuite, pour utiliser le modèle d'intégration d'OpenAI, vous devez configurer la clé API d'OpenAI. Si vous ne l'avez pas encore configurée, suivez ces étapes :

from getpass import getpass
import os
if "OPENAI_APIKEY" not in os.environ:
os.environ["OPENAI_APIKEY"] = getpass("Enter your OpenAI API Key")

Ce code vérifie si OPENAI_APIKEY existe déjà dans vos variables d'environnement, et si ce n'est pas le cas, il vous invite à saisir votre clé d'API OpenAI et à la définir comme variable d'environnement.

 

Étape 2 : Exécuter le modèle DeepSeek

Ce tutoriel utilise Ollama pour exécuter le modèle deepseek-r1:1.5b localement. Si vous n'avez pas encore installé Ollama et tiré le modèle deepseek-r1:1.5b, veuillez vous référer à la documentation officielle d'Ollama pour compléter l'installation et tirer le modèle.

Sur macOS, par exemple, vous pouvez exécuter le modèle DeepSeek dans Terminal à l'aide de la commande suivante :

ollama run deepseek-r1:1.5b

Assurez-vous que le modèle fonctionne correctement avant de passer à l'étape suivante.

 

Étape 3 : Créer et alimenter la collection Weaviate

Les collections Weaviate sont utilisées pour stocker et récupérer les données du jeu. Suivez les étapes ci-dessous pour créer et remplir votre collection Weaviate :

  • Télécharger le fichier games.csv : Télécharger le fichier games.csv de Kaggle (Kaggle) dans votre répertoire local.
  • Démarrer le conteneur Docker Weaviate : Démarrer Weaviate en utilisant le fichier docker-compose.yml suivant et s'assurer que les modules generative-ollama et text2vec-openai sont activés. Sauvegardez le fichier suivant en tant que fichier docker-compose.yml et démarrez Weaviate dans un terminal en utilisant la commande docker compose up.
---
services:
weaviate_anon:
command:
- --host
- 0.0.0.0
- --port
- '8080'
- --scheme
- http
image: cr.weaviate.io/semitechnologies/weaviate:1.28.4
ports:
- 8080:8080
- 50051:50051
restart: on-failure:0
environment:
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"
...
  • Créer la collection "Games" : Exécutez le code Python suivant pour créer une collection Weaviate appelée "Games". Ce code définit les propriétés de la collection, y compris le nom du jeu, le prix, la plateforme, la date de sortie et la description, et configure les modules generative-ollama et text2vec-openai.
import weaviate
import weaviate.classes.config as wc
from weaviate.util import generate_uuid5
import os
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.create(
name="Games",
properties=[
wc.Property(name="name", data_type=wc.DataType.TEXT),
wc.Property(name="price", data_type=wc.DataType.INT),
wc.Property(name="platforms", data_type=wc.DataType.TEXT_ARRAY),
wc.Property(name="release_date", data_type=wc.DataType.DATE),
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(),
)
  • Importation des données de jeu : Utilisez le code suivant pour importer les données du fichier games.csv dans la collection "Games". Le code lit le fichier CSV et convertit chaque ligne de données en objets Weaviate, qui sont ensuite ajoutés en masse à la collection.
games = client.collections.get("Games")
df = pd.read_csv('games.csv')
with games.batch.dynamic() as batch:
for i, game in tqdm(df.iterrows()):
platforms = game["platform"].split(',') if type(game["platform"]) is str else []
game_obj = {
"name": game["name"],
"platforms": platforms,
"price": game["price"],
"release_date": game["release_date"],
"description": game["description"],
}
batch.add_object(
properties=game_obj,
uuid=generate_uuid5(game["id"])
)
if len(games.batch.failed_objects) > 0:
print(f"Failed to import {len(games.batch.failed_objects)} objects")
print(games.batch.failed_objects)

 

Étape 4 : Effectuer une recherche intégrée

Votre collection "Jeux" est maintenant remplie de données. Vous pouvez essayer d'effectuer une recherche intégrée pour récupérer les jeux liés à la requête de l'utilisateur. Le code suivant montre comment rechercher des jeux liés à "I play the vilain" et renvoyer les 3 résultats les plus pertinents.

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

Ce code fournit des informations sur les trois attributs du jeu pertinents pour la requête, tels que la plate-forme, la description, le prix, la date de sortie et le nom.

 

Étape 5 : Création de l'application RAG recommandée

Pour mettre en œuvre des recommandations de jeux plus intelligentes, nous devons créer une application RAG. C'est ce que fait la fonction recommend_game suivante. Elle prend en entrée une requête de l'utilisateur, récupère les 5 jeux les plus pertinents et utilise le modèle deepseek-r1:1.5b pour générer des recommandations personnalisées.

def recommend_game(query: str):
response = games.generate.near_text(
query=query,
limit=5,
grouped_task=f"""You've been provided some relevant games based on the users query.
Provide an answer to the query. Your final answer MUST indicate the platform each game is available on.
User query: {query}""",
grouped_properties=["name", "description", "price", "platforms"],
)
return {'thought':response.generated.split('</think>')[0], 'recommendation': response.generated.split('</think>')[1]}

Cette fonction utilise la méthode games.generate.near_text, qui non seulement effectue une recherche vectorielle, mais utilise également le modèle génératif pour générer un texte recommandé basé sur les informations de jeu récupérées. le paramètre grouped_task définit la tâche générative du modèle, demandant au modèle de générer une réponse basée sur la requête de l'utilisateur et les informations de jeu récupérées, et demandant explicitement que la réponse contienne les informations sur la plate-forme de jeu. informations sur la plate-forme de jeu.

Vous pouvez tester votre application de recommandation de jeux en appelant la fonction recommend_game et en lui transmettant une requête de l'utilisateur. Par exemple, la requête "Quels sont les jeux dans lesquels je peux jouer le rôle d'une créature magique ?

response = recommend_game("What are some games that I get to role play a magical creature")
print(response['recommendation'])

Exécutez ce code et vous verrez les résultats des recommandations de jeu générées par le modèle, par exemple :

Here are several games that allow you to role-play as a magical creature:
1. **Mages of Mystralia**
- **Platform:** Windows
- Description: A fantasy RPG where you design your own spells in a world of magic, allowing creativity and flexibility.
2. **Geneforge 1 - Mutagen**
- **Platforms:** Windows, Mac
- Description: An open-ended RPG with mutant monsters, multiple skills, treasures, factions, and creation possibilities, offering unparalleled freedom and replayability.
3. **Beasts of Maravilla Island**
- **Platform:** Windows
- Description: A 3D adventure game where you role as a wildlife photographer exploring magical ecosystems, focusing on behavior learning for photography.
4. **Paper Beast**
- **Platforms:** Windows (PC)
- Description: An adventure game about disrupting wildlife balance with a focus on exotic creatures and mystery-solving.
5. **Black Book**
- **Platform:** Windows
- Description: A dark RPG based on Slavic myths, played as a young sorceress in a world of mythological creatures through card-based battles.
Each game offers unique experiences suitable for role-playing as a magical creature.

Si vous souhaitez savoir à quoi le modèle pense lorsqu'il génère des résultats de recommandation, vous pouvez imprimer la propriété response['thought'] :

print(response['thought'])

Le processus de réflexion du modèle est ainsi restitué en arrière-plan, ce qui vous permet de mieux comprendre la logique de la recommandation.

<think>
Okay, so I need to figure out some games that let me role-play as a magical creature. The user provided several options, each with a description and platform. Let me go through them one by one.
First up is "Mages of Mystralia." From the description, it's a fantasy RPG where you design your own spells in a world of magic. That sounds perfect because it allows for a lot of creativity as a magical creature. The platform is Windows, so maybe the user can run it on their PC or any desktop system.
Next is "Geneforge 1 - Mutagen." This seems like an open-ended RPG with mutant monsters and a battle mechanic. It's described as having countless skills, treasures, factions, and creation possibilities. Unmatched freedom and replayability make sense because it allows for various storylines. The platform here is Windows and Mac, so compatible options would be useful.
Then there's "Beasts of Maravilla Island." As the name suggests, it's a 3D adventure game where you take on a wildlife photographer exploring ecosystems. It focuses on behavior learning and photography, which could be exciting for someone looking to role-play in nature. The platform is Windows, so that should be accessible.
"Paper Beast" is another adventure game mentioned. It's about an unknown power disrupting wildlife balance, with players joining exotic creatures to solve mysteries. While it's PC-focused, maybe there are porting options available or different devices that can run it if the user has access to them.
Lastly, "Black Book." This dark RPG is based on Slavic myths and played as a young sorceress. It involves card-based battles in a world with mythological creatures. The platform here is Windows, so maybe older hardware might be a bit limiting unless the user has an updated PC or a dedicated console.
I should make sure each game is listed clearly with their platforms and any necessary details about how they work as magical creatures. Also, it's good to offer a couple of options if some aren't available. Maybe suggest cross-platform games or platforms that can be used for playing.
</think>

Félicitations ! Vous avez réussi à construire une application RAG de recommandation de jeux basée sur DeepSeek et Ollama. Dans ce tutoriel, vous avez appris les bases de la construction d'un système de recommandation personnalisé en utilisant les techniques RAG combinées avec un grand modèle de langage et une base de données vectorielle. Vous pouvez étendre et améliorer l'application en fonction de vos besoins, par exemple en ajoutant davantage de données sur les jeux, en optimisant l'algorithme de recommandation ou en développant l'interface utilisateur afin de créer un meilleur service de recommandation de jeux.

© déclaration de droits d'auteur

Articles connexes

Pas de commentaires

Vous devez être connecté pour participer aux commentaires !
S'inscrire maintenant
aucun
Pas de commentaires...