Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Den Abruf mit der Trefferquote messen

Nach dieser Lektion: Ich kann die Textstücke finden, die eine Frage beantworten, und sagen, wie gut das ging.

Lektion, 60 Min.5 BefehleLab für KI-Coding-Agenten: mit opencode Code erklären und reparieren lassen und die Arbeit prüfen

Es hat etwas gefunden, aber war es richtig?

Der Abruf (englisch Retrieval) findet die Textstücke, die eine Frage beantworten. Ihn zu messen heißt, Fragen zu stellen, deren Antwort Sie kennen, und zu zählen, wie oft das richtige Stück zurückkommt.

Die Seite einer Bibliothek zeigt immer drei Ergebnisse. Das Team findet, es läuft gut. Niemand hat gezählt. Ohne Zählung wissen Sie nicht, ob eine Änderung geholfen oder geschadet hat.

Am Ende dieser Lektion

Notiz

Ich kann die Textstücke finden, die eine Frage beantworten, und sagen, wie gut das ging.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Sucherder Code, der Textstücke zu einer Frage findet
Trefferdas richtige Stück kam zurück
Trefferquoteder Anteil der Fragen, die Treffer waren80 Prozent
Testfalleine Frage mit bekanntem Quellstück
Mindestwertder niedrigste Wert, der sich zurückzugeben lohnt0.3

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein Testfall hat eine bekannte Quelle

Schreiben Sie Fragen auf und zu jeder die id des Stücks, das die Antwort enthält. Lassen Sie den Sucher über jede Frage laufen. Ein Treffer ist, wenn die richtige id unter den gelieferten Stücken ist.

Die Trefferquote ist die Zahl der Treffer geteilt durch die Zahl der Fragen. Vier Treffer bei fünf Fragen sind eine Quote von 80 Prozent.

Manche Fragen haben keine Antwort

Besucher fragen nach Dingen, die die Dokumente nicht abdecken. Für sie ist das richtige Ergebnis nichts. Liefert der Sucher sein am wenigsten schlechtes Stück, kann ein späterer Schritt eine Antwort aus dem falschen Text bauen.

Ein Mindestwert hilft. Liefern Sie ein Stück nur, wenn sein Wert den Mindestwert erreicht. Sonst liefern Sie eine leere Liste.

Beispiel: fünf Testfälle

Frage zuErwartetGefundenErgebnis
ÖffnungszeitzeitenzeitenTreffer
GebührgebuehrenraeumeDaneben
BibliothekarkeinesnichtsTreffer
ParkplatzkeinesraeumeDaneben
Raum reservierenraeumeraeumeTreffer

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Einen Sucher in einem Skript bewerten

Das nächste Skript baut den Bibliotheksspeicher aus Lektion 3 mit denselben Zählvektoren neu. Es fügt einen Mindestwert von 0,3 hinzu und liefert höchstens ein Stück.

Dann lässt es fünf Testfälle laufen, einen davon ohne Antwort, und gibt jedes Ergebnis und die Trefferquote aus.

Das Bewertungs-Skript schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const woerter = [\"öffnet\", \"schließt\", \"samstag\", \"sonntag\", \"ausleihen\", \"buch\", \"bücher\", \"verspätetes\", \"gebühr\", \"raum\", \"bibliothek\", \"uhr\"];' 'const stuecke = [' '  { id: \"zeiten-woche\", text: \"Von Montag bis Freitag öffnet die Bibliothek um 9 Uhr und schließt um 18 Uhr.\" },' '  { id: \"zeiten-wochenende\", text: \"Am Samstag öffnet die Bibliothek um 10 Uhr und schließt um 14 Uhr. Am Sonntag ist sie geschlossen.\" },' '  { id: \"ausleihe\", text: \"Sie können 8 Bücher für 3 Wochen ausleihen. Jedes Buch lässt sich zweimal online verlängern.\" },' '  { id: \"gebuehren\", text: \"Ein verspätetes Buch kostet 20 Cent pro Tag. Die Gebühr steigt nie über 10 Euro.\" },' '  { id: \"raeume\", text: \"Ein Raum zum Lernen bietet Platz für 6 Personen. Reservieren Sie den Raum am Schalter oder online für 2 Stunden.\" },' '];' > bewerten.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.

Das Bewertungs-Skript schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function vektorVon(text) {' '  const gefunden = text.toLowerCase().replace(/[^a-z0-9äöüß ]/g, \" \").split(\" \").filter(function (w) { return w.length > 0; });' '  return woerter.map(function (begriff) {' '    return gefunden.filter(function (wort) { return wort === begriff; }).length;' '  });' '}' 'function kosinus(a, b) {' '  let punkt = 0, sa = 0, sb = 0;' '  for (let i = 0; i < a.length; i++) { punkt += a[i] * b[i]; sa += a[i] * a[i]; sb += b[i] * b[i]; }' '  return sa === 0 || sb === 0 ? 0 : punkt / Math.sqrt(sa * sb);' '}' 'const speicher = stuecke.map(function (s) { return { id: s.id, vektor: vektorVon(s.text) }; });' 'const MINIMUM = 0.3;' >> bewerten.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.

Das Bewertungs-Skript schreiben, Teil 3

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function abrufen(frage) {' '  const anfrage = vektorVon(frage);' '  let bester = { id: \"\", wert: 0 };' '  speicher.forEach(function (eintrag) {' '    const wert = kosinus(anfrage, eintrag.vektor);' '    if (wert > bester.wert) bester = { id: eintrag.id, wert: wert };' '  });' '  return bester.wert >= MINIMUM ? [bester.id] : [];' '}' >> bewerten.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.

Das Bewertungs-Skript schreiben, Teil 4

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const faelle = [' '  { frage: \"wann öffnet die bibliothek am samstag\", erwartet: \"zeiten-wochenende\" },' '  { frage: \"wie viele bücher kann ich ausleihen\", erwartet: \"ausleihe\" },' '  { frage: \"was kostet ein verspätetes buch\", erwartet: \"gebuehren\" },' '  { frage: \"kann ich einen raum reservieren\", erwartet: \"raeume\" },' '  { frage: \"wer ist der bibliothekar\", erwartet: null },' '];' 'let treffer = 0;' 'faelle.forEach(function (fall) {' '  const gefunden = abrufen(fall.frage);' '  const ok = fall.erwartet === null ? gefunden.length === 0 : gefunden.indexOf(fall.erwartet) >= 0;' '  if (ok) treffer = treffer + 1;' '  console.log((ok ? \"TREFFER \" : \"DANEBEN \") + fall.frage + \" -> \" + (gefunden.join(\" \") || \"nichts\"));' '});' 'console.log(\"Trefferquote:\", treffer, \"von\", faelle.length);' >> bewerten.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.

Ausführen und die Quote lesen

Befehl
docker exec -w /home/node/project agent node bewerten.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.

Drei der sechs Zeilen der Ausgabe

ZeileWas sie zeigt
TREFFER wann öffnet die bibliothek am samstag -> zeiten-wochenendeDas richtige Stück
TREFFER wer ist der bibliothekar -> nichtsNichts gefunden, und das ist richtig
Trefferquote: 5 von 5Jeder Fall war ein Treffer

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein häufiger Fehler

Warnung

Viele glauben, der Abruf funktioniere, wenn er immer etwas liefert. Bei einer Frage, die die Dokumente nicht beantworten, ist etwas zu liefern daneben. Zählen Sie auch diese Fragen und geben Sie dem Sucher eine Möglichkeit, nichts zu sagen.

Über dieses Lab und seinen Quellcode: Lab für KI-Coding-Agenten: mit opencode Code erklären und reparieren lassen und die Arbeit prüfen

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.