Быстрая реализация персонализированных рекомендаций по играм для RAG-приложений: практическое руководство по DeepSeek и Ollama

Хотите создать приложение, которое будет давать персональные рекомендации по играм? В этом руководстве вы шаг за шагом узнаете, как использовать технику Retrieval Augmented Generation (RAG) в сочетании с DeepSeek ответить пением Оллама модель для создания индивидуальной системы рекомендаций по играм.

Мы будем использовать набор данных Epic Games Store для games.csv файл в качестве источника данных. Для этого учебника выбран следующий стек технологий:

  • Большие языковые модели (LLM): мы будем использовать Ollama для запуска deepseek-r1:1.5b Модели.
  • Встраивание моделей: Мы будем использовать Weaviate's text2vec_openai компонент со стандартным text-embedding-3-small Модели.
快速实现个性化游戏推荐 RAG 应用:DeepSeek & Ollama 实践指南

 

Шаг 1: Установка зависимых библиотек и настройка ключей API

Во-первых, вам нужно установить следующие библиотеки Python, которые необходимы для сборки и запуска RAG необходимые для применения.

!pip install weaviate-client pandas tqdm ollama

Далее, чтобы использовать модель встраивания OpenAI, вам необходимо настроить ключ API OpenAI. Если вы еще не настроили его, выполните следующие шаги:

from getpass import getpass
import os
if "OPENAI_APIKEY" not in os.environ:
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 вы можете запустить модель DeepSeek в Терминале с помощью следующей команды:

ollama run deepseek-r1:1.5b

Убедитесь, что модель успешно работает, прежде чем переходить к следующему шагу.

 

Шаг 3: Создание и наполнение коллекции Weaviate

Коллекции Weaviate используются для хранения и получения игровых данных. Выполните следующие действия, чтобы создать и заполнить коллекцию Weaviate:

  • Загрузить файл games.csv: Загрузить файл games.csv с сайта Kaggle (Kaggle) в ваш локальный каталог.
  • Запуск докер-контейнера Weaviate: Запустите Weaviate с помощью следующего файла docker-compose.yml и убедитесь, что модули generative-ollama и text2vec-openai включены. Сохраните приведенный ниже файл как docker-compose.yml и запустите Weaviate в терминале командой 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"
...
  • Создание коллекции "Игры": выполните следующий код на Python, чтобы создать коллекцию Weaviate под названием "Игры". Этот код определяет свойства коллекции, включая название игры, цену, платформу, дату выпуска и описание, а также настраивает модули generative-ollama и 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(),
)
  • Импорт данных об играх: Используйте следующий код для импорта данных из файла games.csv в коллекцию "Игры". Код считывает 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()):
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)

 

Шаг 4: Выполните встроенный поиск

Теперь ваша коллекция "Игры" заполнена данными. Вы можете попробовать выполнить встроенный поиск, чтобы получить игры, связанные с запросом пользователя. Следующий код демонстрирует, как сделать запрос на игры, связанные с "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)

Этот код выводит информацию о 3 атрибутах игры, относящихся к запросу, таких как платформа, описание, цена, дата выхода и название.

 

Шаг 5: Создание рекомендуемого приложения RAG

Чтобы реализовать более умные рекомендации игр, нам нужно создать приложение RAG. Для этого используется следующая функция recommend_game. Она принимает на вход запрос пользователя, извлекает 5 наиболее релевантных игр и использует модель deepseek-r1:1.5b для создания персонализированных рекомендаций.

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

Эта функция использует метод games.generate.near_text, который не только выполняет векторный поиск, но и использует генеративную модель для генерации рекомендуемого текста на основе полученной информации об игре. параметр grouped_task определяет генеративную задачу модели, поручая ей сгенерировать ответ на основе запроса пользователя и полученной информации об игре, а также явно запрашивая, чтобы ответ содержал информацию об игровой платформе.

Вы можете протестировать свое приложение для рекомендации игр, вызвав функцию recommend_game и передав в нее запрос пользователя. Например, запрос "Какие есть игры, в которых я могу сыграть роль волшебного существа".

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

Запустите этот код, и вы увидите результаты рекомендаций по игре, сгенерированные моделью, например:

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.

Если вы хотите узнать, о чем думает модель при создании рекомендаций, вы можете вывести свойство response['thought']:

print(response['thought'])

Это выведет мыслительный процесс модели в фоновом режиме и поможет вам лучше понять логику рекомендаций.

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

Поздравляем! Вы успешно создали RAG-приложение для рекомендации игр на основе DeepSeek и Ollama. В этом руководстве вы узнали об основах построения персонализированной рекомендательной системы с помощью методов RAG в сочетании с большой языковой моделью и векторной базой данных. Вы можете расширить и улучшить приложение в соответствии с вашими потребностями, например, добавить больше данных об играх, оптимизировать алгоритм рекомендаций или разработать пользовательский интерфейс, чтобы создать лучший сервис рекомендаций игр.

© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...