Aprendizagem pessoal com IA
e orientação prática
Beanbag Marscode1

Implementação rápida de recomendações de jogos personalizados para aplicativos RAG: um guia prático para DeepSeek e Ollama

Deseja criar um aplicativo que forneça recomendações personalizadas de jogos? Este tutorial o guiará passo a passo pelo uso das técnicas de Geração Aumentada de Recuperação (RAG), combinadas com o DeepSeek responder cantando Ollama para criar um sistema de recomendação de jogos personalizado.

Usaremos o conjunto de dados da Epic Games Store para a games.csv como fonte de dados. As opções de pilha de tecnologia para este tutorial são as seguintes:

  • Modelos de linguagem grandes (LLM): usaremos o Ollama para executar o deepseek-r1:1.5b Modelos.
  • Modelos de incorporação: Usaremos o modelo de incorporação da Weaviate text2vec_openai com o componente padrão text-embedding-3-small Modelos.


 

Etapa 1: Instale as bibliotecas dependentes e configure as chaves de API

Primeiro, você precisará instalar as seguintes bibliotecas Python, que são necessárias para criar e executar o RAG necessário para o aplicativo.

!pip install weaviate-client pandas tqdm ollama

Em seguida, para usar o modelo de incorporação da OpenAI, você precisa configurar a chave da API da OpenAI. Se você ainda não a configurou, siga estas etapas:

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

Esse código verifica se OPENAI_APIKEY já existe em suas variáveis de ambiente e, se não existir, ele solicita que você insira sua chave de API OpenAI e a defina como uma variável de ambiente.

 

Etapa 2: Execute o modelo DeepSeek

Este tutorial usa o Ollama para executar o modelo deepseek-r1:1.5b localmente. Se você ainda não instalou o Ollama e extraiu o modelo deepseek-r1:1.5b, consulte os documentos oficiais do Ollama para concluir a instalação e a extração do modelo.

No macOS, por exemplo, você pode executar o modelo DeepSeek no Terminal usando o seguinte comando:

ollama run deepseek-r1:1.5b

Certifique-se de que o modelo seja executado com êxito antes de passar para a próxima etapa.

 

Etapa 3: Criar e preencher a coleção Weaviate

As coleções Weaviate são usadas para armazenar e recuperar dados de jogos. Siga as etapas abaixo para criar e preencher sua coleção Weaviate:

  • Baixe o arquivo games.csv: Baixe o arquivo games.csv do Kaggle (Kaggle) em seu diretório local.
  • Iniciando o contêiner do Weaviate Docker: inicie o Weaviate usando o seguinte arquivo docker-compose.yml e verifique se os módulos generative-ollama e text2vec-openai estão ativados. Salve o seguinte como um arquivo docker-compose.yml e inicie o Weaviate em um terminal usando o comando 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"
...
  • Criar a coleção "Games": execute o seguinte código Python para criar uma coleção Weaviate chamada "Games". Esse código define as propriedades da coleção, incluindo nome do jogo, preço, plataforma, data de lançamento e descrição, e configura os módulos generative-ollama e 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(),
)
  • Importação de dados de jogos: use o código a seguir para importar os dados do arquivo games.csv para a coleção "Games". O código lê o arquivo CSV e converte cada linha de dados em objetos Weaviate, que são então adicionados à coleção em massa.
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)

 

Etapa 4: Executar uma pesquisa incorporada

Agora, sua coleção "Games" está preenchida com dados. Você pode tentar fazer uma pesquisa incorporada para recuperar jogos relacionados à consulta do usuário. O código a seguir demonstra como consultar os jogos relacionados a "I play the vilain" e retornar os três resultados mais relevantes.

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

Esse código gera informações sobre os três atributos do jogo relevantes para a consulta, como plataforma, descrição, preço, data de lançamento e nome.

 

Etapa 5: Criar o aplicativo RAG recomendado

Para implementar recomendações de jogos mais inteligentes, precisamos criar um aplicativo RAG. A função recommend_game a seguir faz isso. Ela recebe uma consulta do usuário como entrada, recupera os 5 jogos mais relevantes e usa o modelo deepseek-r1:1.5b para gerar recomendações personalizadas.

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]}

Essa função usa o método games.generate.near_text, que não só executa uma pesquisa vetorial, mas também usa o modelo generativo para gerar texto recomendado com base nas informações recuperadas do jogo. O parâmetro grouped_task define a tarefa generativa do modelo, instruindo-o a gerar uma resposta com base na consulta do usuário e nas informações recuperadas do jogo, e solicitando explicitamente que a resposta contenha as informações sobre a plataforma do jogo.

Você pode testar seu aplicativo de recomendação de jogos chamando a função recommend_game e passando uma consulta do usuário. Por exemplo, a consulta "Quais são alguns jogos em que posso interpretar uma criatura mágica".

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

Execute esse código e você verá os resultados das recomendações de jogos geradas pelo modelo, por exemplo:

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.

Se quiser ver o que o modelo está pensando ao gerar resultados de recomendação, você pode imprimir a propriedade response['thought']:

print(response['thought'])

Isso produzirá o processo de pensamento do modelo em segundo plano e o ajudará a entender melhor a lógica da recomendação.

<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>

Parabéns! Você criou com êxito um aplicativo RAG de recomendação de jogos com base no DeepSeek e no Ollama. Neste tutorial, você aprendeu os conceitos básicos de como criar um sistema de recomendação personalizado usando técnicas RAG combinadas com um modelo de linguagem grande e um banco de dados vetorial. Você pode estender e aprimorar o aplicativo de acordo com suas necessidades, como adicionar mais dados de jogos, otimizar o algoritmo de recomendação ou desenvolver a interface do usuário para criar um serviço de recomendação de jogos melhor.

Não pode ser reproduzido sem permissão:Chefe do Círculo de Compartilhamento de IA " Implementação rápida de recomendações de jogos personalizados para aplicativos RAG: um guia prático para DeepSeek e Ollama
pt_BRPortuguês do Brasil