InnoGames

Der GenAI-Alltag in Hamburgs größtem Gaming-Unternehmen

Volker Janz ist seit über einem Jahrzehnt Teil des Data-Teams bei der InnoGames GmbH. Er entwickelt und wartet verteilte Systeme mit Fokus auf Data Engineering, Big Data und KI.

Um das Potenzial von KI voll auszuschöpfen, setzt InnoGames zudem auf einen offenen und experimentellen Ansatz. Wir ermutigen unsere Teams, mit verschiedenen KI-Modellen und -Plattformen zu experimentieren und neue Anwendungsfelder zu erschließen. Zum Beispiel im Rahmen eines kürzlich abgehaltenen, internen "AI Jam", bei dem es darum ging, in Teamarbeit innovative KI-Lösungen zu entwickeln.

KI-Prototypen für bessere Spielerlebnisse

Doch um das volle Potenzial der KI auszuschöpfen, reicht der Einsatz allgemeiner Werkzeuge allein nicht aus. Der nächste logische Schritt war daher, maßgeschneiderte KI-Lösungen zu entwickeln, die auf die spezifischen Bedürfnisse und Herausforderungen von InnoGames zugeschnitten sind.

Dabei haben sich zwei Ansätze als besonders vielversprechend erwiesen: Retrieval-Augmented Generation (RAG) und Feinabstimmung. Auf dieser Grundlage hat InnoGames zwei interne Prototypen entwickelt: QueryMind und KAWAII. Beide sind entstanden, um eine grundlegende Problemstellung in zweifacher Hinsicht zu adressieren:

  1. Daten, die ungenutzt bleiben: InnoGames erfasst täglich mehr als 1,7 Milliarden Datensätze in Echtzeit, die auf Interaktionen der Spieler mit seinen Games basieren. Hinzu kommen diverse Stammdaten aus verschiedenen Systemen. Dennoch bleiben viele wertvolle Informationen ungenutzt, die für strategische Entscheidungen, die Planung zukünftiger Projekte und vieles mehr relevant sein könnten. Der Zugang zu diesen Informationen und die Gewinnung von Wissen erfordern jedoch in der Regel fundierte SQL-Kenntnisse. QueryMind eröffnet an dieser Stelle neue Möglichkeiten.

  2. Wissen, das nicht verfügbar ist: Wie viele andere Unternehmen nutzt auch InnoGames eine Wiki-Software, um Dokumentationen zu erstellen, Meeting-Protokolle festzuhalten, Konzepte zu diskutieren und vieles mehr. Konkret kommt hierbei Confluence von Atlassian zum Einsatz. Wer bereits eine umfangreiche Wissensdatenbank aufgebaut hat, kennt die Schwierigkeit, relevante Informationen schnell und einfach zu finden. Hier setzt KAWAII an.

Im Folgenden werfen wir einen detaillierten Blick auf die beiden in Eigenregie entwickelten GenAI-Prototypen sowie ihre Funktionsweise.

KAWAII

KAWAII steht für "Knowledge Assistant for Wiki with Artificial IntelligenceArtificial Intelligence and Interaction". Es handelt sich um einen Prototyp, der den RAG-Ansatz implementiert, um das interne Wissen von InnoGames schnell und einfach zugänglich zu machen. Alles zu Artificial Intelligence auf CIO.de

Ein detaillierter Blick auf die KAWAII-Architektur.
Ein detaillierter Blick auf die KAWAII-Architektur.
Foto: InnoGames

KAWAII greift dazu auf Daten aus unserem internen Wiki und optional auch auf Tickets aus Jira zu. Der Fokus liegt jedoch auf den Wiki-Inhalten. Um die Relevanz der Informationen sicherzustellen und veraltete Daten zu vermeiden, können wir mithilfe der Confluence Query Language (CQL) gezielt die Wiki-Seiten auswählen, die in KAWAII integriert werden sollen.

KAWAII-Trainingsdaten als YAML-Konfiguration.
KAWAII-Trainingsdaten als YAML-Konfiguration.
Foto: InnoGames

Bevor die Wiki-Seiten jedoch für die KI verarbeitet werden können, müssen sie in kleinere, semantisch sinnvolle Einheiten - sogenannte Chunks - zerlegt werden. Dieser Prozess wird Chunking genannt und ist entscheidend für die Qualität der Suchergebnisse. Um die Wiki-Seiten in Chunks mit einer Größe von 1024 Token und einem Overlap von 150 Token zu zerlegen, verwenden wir den TokenTextSplitter von LangChain. Der Overlap stellt dabei sicher, dass Zusammenhänge zwischen den Chunks erhalten bleiben.

Um die Chunks für die KI-Suche zugänglich zu machen, werden sie mithilfe von Einbettungsmodellen in numerische Vektoren umgewandelt. Wir verwenden die Google-Texteinbettungen, die eine maximale Chunk-Größe von 2048 Token unterstützen. Zusätzlich zu den Vektoren werden jedem Chunk kontextbezogene Überschriften hinzugefügt. Diese enthalten den Seitentitel und weitere Metadaten, um sicherzustellen, dass jeder Chunk auch isoliert betrachtet seinen Bezug zur ursprünglichen Wiki-Seite behält.

Der Text, die Vektoren und die Metadaten der Chunks werden in einer Datenbank gespeichert, die Vektoren verarbeiten und Distanzen berechnen kann. Zu diesem Zweck kommt die Open-Source-Datenbank StarRocks zum Einsatz, die bereits in die Dateninfrastruktur von InnoGames integriert ist und über eine Schnittstelle zu LangChain verfügt. Mit Funktionen wie cosine_similarity_norm ermöglicht StarRocks effiziente Ähnlichkeitssuchen zwischen den Vektoren.

KAWAII nutzt eine benutzerfreundliche Web-Oberfläche, die mit Streamlit in Python entwickelt wurde, um Anfragen in natürlicher Sprache zu stellen. So kann beispielsweise ein Mitarbeiter fragen, was eine bestimmte, InnoGames-spezifische KPI bedeutet. Jeder neuen Anfrage wird die gesamte Gesprächshistorie hinzugefügt, um Folgefragen zu ermöglichen. Um die Ergebnisse zu optimieren, wird diese Historie zusammen mit der aktuellen Eingabe mithilfe des Large Language Models (LLM) Gemini Flash in eine neue, prägnante und alleinstehende Frage umformuliert.

Das KAWAII-Frontend.
Das KAWAII-Frontend.
Foto: InnoGames

Diese umformulierte Frage wird dann wie zuvor mithilfe der Google-Texteinbettungen in einen numerischen Vektor umgewandelt. Basierend auf diesem Vektor werden die relevantesten Chunks aus der Vektordatenbank abgefragt. Die umformulierte Frage und der abgefragte Kontext werden dann erneut an Gemini Flash übergeben, um eine abschließende Antwort zu generieren. Auf diese Weise erhalten Nutzer präzise und kontextbezogene Antworten auf ihre unternehmensspezifischen Fragen.

QueryMind

Die Dateninfrastruktur von InnoGames hat sich im Laufe der Jahre von einer On-Premises-Lösung mit Open-Source-Technologien wie Kafka, Flink, Hadoop und Hive zu einer hybriden Architektur entwickelt, die auch Cloud-Dienste wie BigQuery und Vertex AI umfasst.

Unser zweiter Prototyp, QueryMind, ermöglicht es, diese umfangreiche Datenlandschaft mithilfe von natürlicher Sprache abzufragen. QueryMind basiert auf dem RAG-Ansatz und nutzt das flexible, quelloffene Python-Framework Vanna. Das erlaubt uns, verschiedene Komponenten wie Vektordatenbanken, LLMs und SQL-Datenbanken flexibel zu kombinieren, um natürliche Sprache in Datenbankabfragen umzuwandeln, diese auszuführen und die Ergebnisse optional zu interpretieren.

Die Datenlandschaft von InnoGames auf einen Blick.
Die Datenlandschaft von InnoGames auf einen Blick.
Foto: InnoGames

Bei QueryMind haben wir uns für folgende Komponenten entschieden:

  • StarRocks als Vektor- und SQL-Datenbank;

  • Gemini Flash als zugrundeliegendes LLM;

  • Streamlit für die Oberflächen.

Das Training von QueryMind basiert auf Informationen zur Tabellenstruktur, Beispielabfragen und Dokumentationen.

Über die intuitive Streamlit-Oberfläche können Mitarbeiter nun Fragen in natürlicher Sprache stellen, ohne SQL-Kenntnisse zu benötigen. Ganz konkret könnte eine solche Frage etwa so aussehen, wie im nachfolgenden Screenshot.

Zur Startseite