Eine Zeile ohne Kopfzeile
Stückqualität heißt, dass ein Stück eines Dokuments für sich auffindbar und verständlich bleibt. Das ist wichtig, weil die Suche Stücke liefert und ein Stück ohne Überschrift oder Tabellenkopf nichts sagt.
Eine Gebührentabelle wird Zeile für Zeile zerschnitten. Die Zeile „groß, 5 Euro“ wird für „was kostet ein großes Paket“ geliefert. Sie sagt nicht, wofür die 5 Euro gelten.
Das Ziel dieser Lektion
Notiz
Ich kann ein strukturiertes Dokument so teilen, dass jedes Stück seine Überschrift, seinen Tabellenkopf und seine Quelle behält.
Schlüsselwörter
| Begriff | Was er bedeutet |
|---|---|
| Stück | ein Teil eines Dokuments, der indexiert wird |
| Überschriftenpfad | die Titel über einem Stück, von oben nach unten |
| Metadaten | Angaben neben einem Stück, etwa seine Quelle |
| Tabellenkopf | die erste Zeile, die jede Spalte benennt |
| Brotkrumenpfad | ein Überschriftenpfad in einer einzigen Zeile |
| Verwaistes Stück | ein Stück, das ohne seinen Zusammenhang nichts bedeutet |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Behalten Sie den Pfad bei jedem Stück
Beim Thema Retrieval-Augmented Generation wurde ein Dokument nach Größe und an Überschriften geteilt. Der nächste Schritt ist, die Überschriften zu behalten. Ein Stück unter „Rückgabe > Gebühren“ soll diesen Pfad tragen, als Brotkrumenpfad geschrieben: Handbuch des Ladens > Rückgabe > Gebühren.
Indexieren Sie den Pfad mit dem Text. Eine Suche nach „Rückgabe Gebühren“ findet das Stück dann, auch wenn der Text nie „Rückgabe“ sagt.
Eine Tabellenzeile braucht ihren Kopf
Eine Tabelle besteht aus Kopfzeile und Zeilen. Schneidet man sie zeilenweise, verliert jede Zeile den Kopf. Deshalb macht man aus jeder Zeile Wörter, die ihn tragen: „Artikel: groß, Gebühr: 5 Euro“.
Eine Liste folgt derselben Regel. Behalten Sie den einleitenden Satz bei jedem Eintrag, sonst schwebt der Eintrag allein.
Durchgerechnetes Beispiel: dieselbe Zeile vorher und nachher
| Fassung | Was indexiert wird |
|---|---|
| Lose abgeschnitten | | groß | 5 Euro | |
| Mit ihrem Kopf | Artikel: groß, Gebühr: 5 Euro |
| Auch mit dem Pfad | Handbuch des Ladens > Rückgabe > Gebühren: Artikel: groß, Gebühr: 5 Euro |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Metadaten und eine Größenprüfung
Behalten Sie Metadaten neben jedem Stück: seine Quelldatei, seine Überschrift und später Besitzer und Datum. Metadaten lassen eine Antwort zitieren, woher sie stammt, und Lektion 5 nutzt sie zum Filtern.
Prüfen Sie dann die Größe. Ein Abschnitt, der weit länger ist als die übrigen, enthält zwei Ideen und sollte erneut geteilt werden. Melden Sie die zu langen Überschriften.
Ein häufiger Fehler
Warnung
Viele glauben, alle 500 Zeichen zu schneiden genüge für jedes Dokument. Dieser Schnitt geht durch Tabellen und Überschriften und hinterlässt verwaiste Stücke. Schneiden Sie zuerst an der Struktur und nutzen Sie die Größe nur, um zu lange Reste weiter zu teilen.
Den Teiler schreiben, Teil 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const dok = [' ' \"# Handbuch des Ladens\",' ' \"## Öffnungszeiten\",' ' \"Der Laden öffnet werktags um neun Uhr.\",' ' \"## Rückgabe\",' ' \"### Frist\",' ' \"Senden Sie ein Paket binnen dreißig Tagen zurück.\",' ' \"### Gebühren\",' ' \"| Artikel | Gebühr |\",' ' \"| klein | 2 Euro |\",' ' \"| groß | 5 Euro |\",' '];' > teilen1.js"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Den Teiler schreiben, Teil 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function zellen(zeile) {' ' return zeile.split(\"|\").map(function (c) { return c.trim(); }).filter(function (c) { return c.length > 0; });' '}' >> teilen1.js"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Den Teiler schreiben, Teil 3
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function stuecke(zeilen, quelle) {' ' const pfad = [];' ' const aus = [];' ' let kopf = null;' ' zeilen.forEach(function (zeile) {' ' const m = zeile.match(/^(#+) (.*)/);' ' if (m) {' ' pfad.length = m[1].length - 1;' ' pfad.push(m[2]);' ' aus.push({ quelle: quelle, titel: pfad.join(\" > \"), zeilen: [] });' ' kopf = null;' ' return;' ' }' >> teilen1.js"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Den Teiler schreiben, Teil 4
docker exec -w /home/node/project agent sh -c "printf '%s\n' ' const jetzt = aus[aus.length - 1];' ' if (zeile.startsWith(\"|\") === false) { jetzt.zeilen.push(zeile); return; }' ' const c = zellen(zeile);' ' if (kopf === null) { kopf = c; return; }' ' jetzt.zeilen.push(kopf.map(function (h, i) { return h + \": \" + c[i]; }).join(\", \"));' ' });' ' return aus;' '}' >> teilen1.js"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Den Teiler schreiben, Teil 5
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'console.log(\"Eine lose Tabellenzeile:\", dok[9]);' 'stuecke(dok, \"handbuch.md\").filter(function (c) { return c.zeilen.length > 0; }).forEach(function (c) {' ' console.log(c.quelle + \" | \" + c.titel + \" | \" + c.zeilen.join(\" / \"));' '});' >> teilen1.js"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Starten und die Stücke lesen
docker exec -w /home/node/project agent node teilen1.jsHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Das ist ein Platzhalter
Der Run liest zehn Zeilen erfundenes Markdown. Ein echtes Dokument kann ein PDF, eine Webseite oder eine Tabellenkalkulation sein und braucht für jedes einen Parser. Die Idee bleibt gleich: die Struktur finden und dann behalten.
Der Run ruft kein Modell auf.
Was der Run ausgibt
| Stück | Behaltener Text |
|---|---|
| Handbuch des Ladens > Öffnungszeiten | Der Laden öffnet werktags um neun Uhr. |
| Handbuch des Ladens > Rückgabe > Frist | Senden Sie ein Paket binnen dreißig Tagen zurück. |
| Handbuch des Ladens > Rückgabe > Gebühren | Artikel: klein, Gebühr: 2 Euro / Artikel: groß, Gebühr: 5 Euro |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.