> ## Documentation Index
> Fetch the complete documentation index at: https://docs.innochat.ch/llms.txt
> Use this file to discover all available pages before exploring further.

# Arbeiten mit Tabellen und CSV

> Erfahren Sie, wie Sie CSV-Dateien und tabellarische strukturierte Daten in INNOCHAT hochladen und verwenden koennen.

INNOCHAT ermoeglicht Ihnen das Hochladen von Trainingsdaten in Form **einfacher** CSV- oder Excel-Tabellen.\
„Einfache Tabellen“ beziehen sich auf tabellarische Daten ohne zusammengefasste Zellen, mit einer **einzigen Primaerschluessel-Spalte** mit eindeutigen Elementen, eindeutigen und aussagekraeftigen Spalten- oder Zeilentiteln und einer klaren **Spalten- oder Zeilen-Spalten-Struktur**.

Beispiel für eine reine Spaltentabelle:

<Frame>
  <img src="https://mintcdn.com/innoq/m-MXq-_ojngkTbq6/images/working-with-tables-1.png?fit=max&auto=format&n=m-MXq-_ojngkTbq6&q=85&s=65c5268e28c5caa7e5a7f9ddd6e1700f" width="491" height="161" data-path="images/working-with-tables-1.png" />
</Frame>

*Alle Daten pro Zeile beziehen sich auf den Produktschluessel in der ersten Spalte.*

Beispiel für eine Zeilen/Spalten-Tabelle:

<Frame>
  <img src="https://mintcdn.com/innoq/m-MXq-_ojngkTbq6/images/working-with-tables-2.png?fit=max&auto=format&n=m-MXq-_ojngkTbq6&q=85&s=d804dc6942acf3990ee82d4e3e869b59" width="706" height="121" data-path="images/working-with-tables-2.png" />
</Frame>

*Jede Kombination aus Zeile und Spalte verweist auf einen spezifischen Zellwert.*

Es gibt keine maximale Anzahl an Spalten, jedoch gibt es ein Limit für die **Gesamtanzahl der Tokens pro Zeile**.\
Wenn diese überschritten wird, laeuft das Training in einen Fehler.

Stand **Maerz 2024** betraegt das Maximum **ca. 8000 Tokens pro Zeile** (inklusive des JSON-Codes, der zum Darstellen der Tabellenstruktur erforderlich ist).\
Das bedeutet, dass der tatsaechliche Anteil für Werte geringer ausfaellt und von der Laenge von Spalten- und Zeilennamen abhaengt.

Wenn Ihre Daten dem oben beschriebenen Format entsprechen, koennen Sie Ihre Tabelle als Trainingsquelle hochladen.\
Dazu gehen Sie zu:

**Sources → Add Sources → Tables**

<Frame>
  <img src="https://mintcdn.com/innoq/m-MXq-_ojngkTbq6/images/working-with-tables-3.png?fit=max&auto=format&n=m-MXq-_ojngkTbq6&q=85&s=03af426dca12d2e60ab7ad8922586261" width="1367" height="805" data-path="images/working-with-tables-3.png" />
</Frame>

Bei Zeilen/Spalten-Tabellen muessen Sie nach dem Hochladen Folgendes tun:

* Waehlen Sie die Tabelle aus
* Oeffnen Sie das Drei-Punkte-Menue rechts
* Klicken Sie auf **Edit Table Data**

<Frame>
  <img src="https://mintcdn.com/innoq/m-MXq-_ojngkTbq6/images/working-with-tables-4.png?fit=max&auto=format&n=m-MXq-_ojngkTbq6&q=85&s=ba141f5a3789f81992d4b0a627d3b4e5" width="1609" height="321" data-path="images/working-with-tables-4.png" />
</Frame>

Im Tabellen-Editor waehlen Sie nun **Row-Column Header** und klicken auf **Save Changes**.\
Dies stellt sicher, dass die Daten korrekt für LLM-Verarbeitung vorverarbeitet werden.

<Frame>
  <img src="https://mintcdn.com/innoq/m-MXq-_ojngkTbq6/images/working-with-tables-5.png?fit=max&auto=format&n=m-MXq-_ojngkTbq6&q=85&s=39d8e2aafad7819244b62671be72d369" width="1041" height="497" data-path="images/working-with-tables-5.png" />
</Frame>

Danach koennen Sie die Tabellen als Referenzdaten beim Zuweisen der Wissensbasis für Ihre Agenten verwenden.

Bitte beachten:\
**GPT-4-Modelle übertreffen GPT-3.5-Modelle deutlich** hinsichtlich Praezision und Konsistenz beim Arbeiten mit Tabellen.

<Frame>
  <img src="https://mintcdn.com/innoq/m-MXq-_ojngkTbq6/images/working-with-tables-6.png?fit=max&auto=format&n=m-MXq-_ojngkTbq6&q=85&s=dec2ecce6eff2c885a1d442dd5ca8c95" width="1037" height="856" data-path="images/working-with-tables-6.png" />
</Frame>

*Beispiel für LLM-Retrieval basierend auf den oben gezeigten Beispieltabellen.*

## Mein Agent oder Chatbot versteht meine Tabelle nicht korrekt!

LLMs wie GPT-4 sind hervorragend im Umgang mit **unstrukturiertem Text**.\
Mit multimodaler Faehigkeit (z. B. GPT-Vision) koennen sie sogar Bilder interpretieren.\
Tabellen sind jedoch etwas voellig anderes.

Es gibt **keine universelle Syntax** zur Darstellung strukturierter Informationen.\
Da LLMs probabilistisch arbeiten, sind sie nicht natürlich gut darin, tabellarische Daten direkt zu interpretieren.

Ein Artikel der **Microsoft Research** analysiert die Leistungsfaehigkeit von GPT-4 bei strukturierten Daten:

[https://www.microsoft.com/en-us/research/blog/improving-llm-understanding-of-structured-data-and-exploring-advanced-prompting-methods/](https://www.microsoft.com/en-us/research/blog/improving-llm-understanding-of-structured-data-and-exploring-advanced-prompting-methods/)

<Frame>
  <img src="https://mintcdn.com/innoq/m-MXq-_ojngkTbq6/images/working-with-tables-7.png?fit=max&auto=format&n=m-MXq-_ojngkTbq6&q=85&s=be5ea1ce39f4379f61319768dc986e2f" width="1430" height="229" data-path="images/working-with-tables-7.png" />
</Frame>

*Vergleich der Leistung zwischen GPT-3.5 und GPT-4 bei Tabellenoperationen und strukturierten Daten.*\
*Quelle: Microsoft Research*

INNOCHAT verwendet derzeit eine **JSON-basierte Struktur**, um Tabellen abzubilden.\
Das ist nicht perfekt, unterstuetzt aber eine begrenzte Anzahl von Anwendungsfaellen, in denen Tabellen als Trainingsquelle verwendet werden.

Wir wissen, dass viele Anwendungsfaelle **groessere, komplexere und dynamische Datensaetze** beinhalten.\
Die statische Tabellenfunktion ist dafuer nicht optimal geeignet.

Dafür empfehlen wir statt dessen **Function Calling**.

Der **robusteste und professionellste Ansatz** für Retrieval-Augmented Generation (RAG) mit strukturierten Daten ist:

### → Function Calling mit SQL-basierten Custom Functions

Das heisst:

1. Sie entwerfen eigene Funktionen
2. Die Funktionen beinhalten **template-basierte SQL-Abfragen**
3. Daten werden dynamisch abgerufen
4. Der Chatbot erhaelt die Ergebnisse als RAG-Kontext in Echtzeit

Dies erfordert jedoch:

* etwas Programmiererfahrung
* Hosting Ihrer eigenen Serverfunktionen

Wir arbeiten derzeit an detaillierten Beispielen für dieses Setup, und wir danken Ihnen für Ihre Geduld, waehrend wir die Dokumentation erweitern.
