Möchten Sie eine App entwickeln, die personalisierte Spieleempfehlungen liefert? Dieses Tutorial führt Sie Schritt für Schritt durch die Verwendung von Retrieval Augmented Generation (RAG) Techniken, kombiniert mit dem DeepSeek im Gesang antworten Ollama Modell, um ein maßgeschneidertes Spielempfehlungssystem zu erstellen.
Wir werden den Epic Games Store-Datensatz für die spiele.csv
Datei als Datenquelle. Für dieses Lernprogramm wurden die folgenden Technologien gewählt:
- Große Sprachmodelle (LLM): Wir werden Ollama verwenden, um die
Tiefensuche-r1:1.5b
Modelle. - Einbettungsmodelle: Wir verwenden Weaviate's
text2vec_openai
Komponente mit dem Standardtext-einbettung-3-klein
Modelle.
Schritt 1: Installation abhängiger Bibliotheken und Konfiguration von API-Schlüsseln
Zunächst müssen Sie die folgenden Python-Bibliotheken installieren, die für die Erstellung und Ausführung des RAG die für die Anwendung erforderlich sind.
!pip install weaviate-client pandas tqdm ollama
Um das Einbettungsmodell von OpenAI nutzen zu können, müssen Sie als nächstes den OpenAI-API-Schlüssel einrichten. Wenn Sie ihn noch nicht eingerichtet haben, folgen Sie diesen Schritten:
from getpass import getpass
os importieren
wenn "OPENAI_APIKEY" nicht in os.environ enthalten ist: os.environ["OPENAI_APIKEY"] = getpass("Geben Sie Ihren OpenAI-API-Schlüssel ein")
os.environ["OPENAI_APIKEY"] = getpass("Geben Sie Ihren OpenAI-API-Schlüssel ein")
Dieser Code prüft, ob OPENAI_APIKEY bereits in Ihren Umgebungsvariablen vorhanden ist. Ist dies nicht der Fall, werden Sie aufgefordert, Ihren OpenAI-API-Schlüssel einzugeben und ihn als Umgebungsvariable zu setzen.
Schritt 2: Ausführen des DeepSeek-Modells
Dieses Tutorial verwendet Ollama, um das Modell deepseek-r1:1.5b lokal auszuführen. Wenn Sie Ollama noch nicht installiert und das deepseek-r1:1.5b Modell noch nicht gezogen haben, lesen Sie bitte die offiziellen Ollama Docs, um die Installation und das Ziehen des Modells abzuschließen.
Unter macOS können Sie das DeepSeek-Modell zum Beispiel mit folgendem Befehl in Terminal ausführen:
ollama run deepseek-r1:1.5b
Stellen Sie sicher, dass das Modell erfolgreich läuft, bevor Sie mit dem nächsten Schritt fortfahren.
Schritt 3: Erstellen und Auffüllen der Weaviate-Sammlung
Weaviate-Sammlungen werden zum Speichern und Abrufen von Spieldaten verwendet. Führen Sie die folgenden Schritte aus, um Ihre Weaviate-Sammlung zu erstellen und zu füllen:
- games.csv-Datei herunterladen: games.csv-Datei von Kaggle herunterladen (Kaggle) in Ihr lokales Verzeichnis.
- Starten des Weaviate-Docker-Containers: Starten Sie Weaviate mit der folgenden Datei docker-compose.yml und stellen Sie sicher, dass die Module generative-ollama und text2vec-openai aktiviert sind. Speichern Sie die folgende Datei als docker-compose.yml und starten Sie Weaviate in einem Terminal mit dem Befehl docker compose up.
---
Dienstleistungen.
weaviate_anon.
Befehl:
--host
- 0.0.0.0
--port
- '8080'
--scheme
- http
Bild: cr.weaviate.io/semitechnologies/weaviate:1.28.4
Ports.
- 8080:8080
- 50051:50051
Neustart: on-failure:0
Umgebung.
ABFRAGE_VORGABEN_LIMIT: 25
AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'wahr'
PERSISTENZ_DATA_PATH: '/var/lib/weaviate'
ENABLE_API_BASED_MODULES: 'wahr'
BACKUP_FILESYSTEM_PATH: '/var/lib/weaviate/backups'
CLUSTER_HOSTNAME: 'node1'
LOG_LEVEL: 'trace'
ENABLE_MODULES: "text2vec-openai,generative-ollama"
...
- Erstellen Sie die Sammlung "Games": Führen Sie den folgenden Python-Code aus, um eine Weaviate-Sammlung namens "Games" zu erstellen. Dieser Code definiert die Eigenschaften der Sammlung, einschließlich Spielname, Preis, Plattform, Erscheinungsdatum und Beschreibung, und konfiguriert die Module generative-ollama und text2vec-openai.
weaviate importieren
import weaviate.classes.config as wc
from weaviate.util importiere generate_uuid5
from weaviate.util importiere generate_uuid5
from tqdm importieren tqdm
importiere pandas als pd
headers = {"X-OpenAI-Api-Key": os.getenv("OPENAI_APIKEY")}
client = weaviate.connect_to_local(headers=headers)
if client.collections.exists("Spiele"):: client.collections.delete("Spiele").
client.collections.delete("Spiele"):: client.collections.delete("Spiele")
client.collections.create(
name="Spiele",
properties=[
wc.Properties(name="name", data_type=wc.DataType.TEXT),
wc.Properties(name="preis", 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.
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(), )
)
- Importieren von Spieldaten: Verwenden Sie den folgenden Code, um die Daten aus der Datei games.csv in die Sammlung "Games" zu importieren. Der Code liest die CSV-Datei und konvertiert jede Datenzeile in Weaviate-Objekte, die dann der Sammlung in großen Mengen hinzugefügt werden.
Spiele = client.collections.get("Spiele")
df = pd.read_csv('spiele.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": spiel["name"],
"plattform": plattform, "preis": spiel["preis"], spiel["plattform"], spiel["plattform"] ist str
"Beschreibung": game["Beschreibung"],
}
batch.add_object(
properties=game_obj,
uuid=generate_uuid5(game["id"])
)
if len(games.batch.failed_objects) > 0:.
print(f "Es konnten keine {len(games.batch.failed_objects)} Objekte importiert werden")
print(games.batch.failed_objects)
Schritt 4: Durchführen einer eingebetteten Suche
Jetzt ist Ihre Sammlung "Spiele" mit Daten gefüllt. Sie können versuchen, eine eingebettete Suche durchzuführen, um Spiele abzurufen, die mit der Abfrage des Benutzers zusammenhängen. Der folgende Code veranschaulicht die Suche nach Spielen, die mit "I play the vilain" zusammenhängen, und gibt die 3 relevantesten Ergebnisse zurück.
response = games.query.near_text(query="Ich spiele den Bösewicht", limit=3)
for o in response.objects: print(o.properties)
print(o.properties)
Dieser Code gibt Informationen über die 3 für die Abfrage relevanten Attribute des Spiels aus, wie Plattform, Beschreibung, Preis, Veröffentlichungsdatum und Name.
Schritt 5: Erstellen der empfohlenen RAG-Anwendung
Um intelligentere Spieleempfehlungen zu implementieren, müssen wir eine RAG-Anwendung erstellen. Die folgende Funktion recommend_game übernimmt diese Aufgabe. Sie nimmt eine Benutzeranfrage als Eingabe, findet die 5 relevantesten Spiele und verwendet das Modell deepseek-r1:1.5b, um personalisierte Empfehlungen zu generieren.
def recommend_game(query: str):
response = games.generate.near_text(
abfrage=abfrage,
abfrage=abfrage, limit=5, grouped_task=f"
grouped_task=f"""Sie haben einige relevante Spiele auf der Grundlage der Benutzeranfrage erhalten.
Geben Sie eine Antwort auf die Abfrage, wobei Sie die Plattform angeben MÜSSEN, für die das jeweilige Spiel verfügbar ist.
grouped_properties=["Name", "Beschreibung", "Preis", "Plattformen"], )
)
return {'thought': response.generated.split('')[0], 'recommendation': response.generated.split('')[1]}
Diese Funktion verwendet die Methode games.generate.near_text, die nicht nur eine Vektorsuche durchführt, sondern auch das generative Modell verwendet, um empfohlenen Text auf der Grundlage der abgerufenen Spielinformationen zu generieren. Der Parameter grouped_task definiert die generative Aufgabe des Modells und weist das Modell an, eine Antwort auf der Grundlage der Benutzeranfrage und der abgerufenen Spielinformationen zu generieren, und fordert ausdrücklich, dass die Antwort die Informationen über die Spielplattform enthält.
Sie können Ihre Spielempfehlungsanwendung testen, indem Sie die Funktion recommend_game aufrufen und eine Benutzerabfrage übergeben. Zum Beispiel die Abfrage "Welche Spiele gibt es, in denen ich eine magische Kreatur spielen kann".
response = recommendation_game("Welche Spiele gibt es, in denen ich ein magisches Wesen spielen kann")
print(antwort['empfehlung'])
Führen Sie diesen Code aus und Sie werden die Ergebnisse der vom Modell generierten Spielempfehlungen sehen, zum Beispiel:
Hier sind einige Spiele, bei denen du in die Rolle eines magischen Wesens schlüpfen kannst.
1.**Mages of Mystralia**
- **Plattform:** Windows
- Beschreibung: Ein Fantasy-Rollenspiel, in dem Sie Ihre eigenen Zaubersprüche in einer Welt der Magie entwerfen, die Kreativität und Flexibilität ermöglicht.
2. **Geneforge 1 - Mutagen** **Plattformen:** Windows Beschreibung.
- **Plattformen:** Windows, Mac
- Beschreibung: Ein RPG mit offenem Ende, mutierten Monstern, mehreren Fertigkeiten, Schätzen, Fraktionen und Gestaltungsmöglichkeiten, das unvergleichliche Freiheit und Wiederspielbarkeit.
- **Plattform:** Windows
- Beschreibung: Ein 3D-Abenteuerspiel, in dem Sie in die Rolle eines Tierfotografen schlüpfen, der magische Ökosysteme erforscht und sich auf das Erlernen von Verhaltensweisen für Ein 3D-Abenteuerspiel, in dem Sie die Rolle eines Tierfotografen übernehmen, der magische Ökosysteme erforscht und sich auf das Lernen von Verhaltensweisen für die Fotografie konzentriert.
4. **Paper Beast** **Plattformen:** Windows
- **Plattformen:** Windows (PC)
- Beschreibung: Ein Abenteuerspiel über die Störung des Gleichgewichts in der Tierwelt mit dem Schwerpunkt auf exotischen Kreaturen und dem Lösen von Rätseln.
5. **Black Book** **Plattform:** **Windows (PC) Beschreibung.
- **Plattform:** Windows
- Beschreibung: Ein düsteres, auf slawischen Mythen basierendes Rollenspiel, bei dem man als junge Zauberin in einer Welt voller mythologischer Kreaturen durch kartenbasierte Kämpfe kämpft.
Jedes Spiel bietet einzigartige Erfahrungen, die sich für das Rollenspiel als magische Kreatur eignen.
Wenn Sie sehen möchten, worüber das Modell bei der Erstellung der Empfehlungsergebnisse nachdenkt, können Sie die Eigenschaft response['thought'] ausdrucken:
print(Antwort['Gedanke'])
Dadurch wird der Denkprozess des Modells im Hintergrund ausgegeben und Sie können die Empfehlungslogik besser verstehen.
Okay, ich muss also ein paar Spiele finden, bei denen ich in die Rolle eines magischen Wesens schlüpfen kann. Der Benutzer hat mehrere Optionen angegeben, jede mit einer Beschreibung und einer Plattform Lassen Sie mich sie der Reihe nach durchgehen.
Das erste ist "Mages of Mystralia", ein Fantasy-Rollenspiel, bei dem man in einer Welt voller Magie eigene Zaubersprüche entwickelt. Die Plattform ist Windows, so dass der Benutzer es vielleicht auf seinem PC oder einem anderen Desktop-System ausführen kann.
Als Nächstes folgt "Geneforge 1 - Mutagen", ein RPG mit offenem Ende, mutierten Monstern und einer Kampfmechanik. Es wird beschrieben, dass es unzählige Fähigkeiten, Schätze, Fraktionen und Kreationen gibt. Es wird beschrieben, dass es unzählige Fertigkeiten, Schätze, Fraktionen und Kreationsmöglichkeiten gibt. Unerreichte Freiheit und Wiederspielbarkeit machen Sinn, weil es verschiedene Handlungsstränge zulässt. Unerreichte Freiheit und Wiederspielbarkeit sind sinnvoll, weil es verschiedene Handlungsstränge ermöglicht. Die Plattform ist hier Windows und Mac, also wären kompatible Optionen nützlich.
Dann gibt es noch "Beasts of Maravilla Island", ein 3D-Abenteuerspiel, in dem Sie einen Tierfotografen spielen, der Ökosysteme erforscht. Der Schwerpunkt liegt auf Verhaltenslernen und Fotografie, was für jemanden, der ein Rollenspiel in der Natur sucht, spannend sein könnte. Die Plattform ist Windows, also sollte das Die Plattform ist Windows, das sollte also zugänglich sein.
Paper Beast" ist ein weiteres erwähntes Abenteuerspiel, bei dem es um eine unbekannte Macht geht, die das Gleichgewicht der Tierwelt stört, und bei dem sich die Spieler exotischen Kreaturen anschließen, um Rätsel zu lösen. Es ist zwar auf den PC ausgerichtet, aber vielleicht gibt es Portierungsmöglichkeiten oder verschiedene Geräte, auf denen es laufen kann, wenn der Benutzer Zugang dazu hat.
Black Book" schließlich ist ein düsteres Rollenspiel, das auf slawischen Mythen basiert und in dem der Spieler die Rolle einer jungen Zauberin übernimmt. Es beinhaltet kartenbasierte Kämpfe in einer Welt mit mythologischen Kreaturen. Die Plattform ist hier Windows, so dass ältere Hardware vielleicht ein wenig einschränkend sein könnte, es sei denn, der Benutzer hat einen aktualisierten PC oder eine spezielle Konsole.
Ich sollte sicherstellen, dass jedes Spiel klar mit seinen Plattformen und allen notwendigen Details darüber, wie sie als magische Kreaturen funktionieren, aufgelistet wird. Außerdem ist es gut, die Es ist auch gut, ein paar Optionen anzubieten, wenn einige nicht verfügbar sind. Vielleicht plattformübergreifende Spiele oder Plattformen vorschlagen, die zum Spielen verwendet werden können.
Vielleicht können Sie plattformübergreifende Spiele oder Plattformen vorschlagen, die zum Spielen verwendet werden können.
Herzlichen Glückwunsch! Sie haben erfolgreich eine Spielempfehlungs-RAG-Anwendung auf Basis von DeepSeek und Ollama erstellt. In diesem Tutorial haben Sie die Grundlagen gelernt, wie man ein personalisiertes Empfehlungssystem mit RAG-Techniken in Kombination mit einem großen Sprachmodell und einer Vektordatenbank erstellt. Sie können die Anwendung nach Ihren Bedürfnissen erweitern und verbessern, z. B. indem Sie weitere Spieldaten hinzufügen, den Empfehlungsalgorithmus optimieren oder die Benutzeroberfläche entwickeln, um einen besseren Spielempfehlungsdienst zu schaffen.