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

Suchanfragen umschreiben

Nach dieser Lektion: Ich kann eine Frage so umschreiben, dass sie mehr findet, und an bekannten Quellen prüfen, dass es geholfen hat.

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

Die Frage ist nicht die Anfrage

Eine Anfrage umzuschreiben heißt, eine Frage zu ändern, bevor man mit ihr sucht, damit die Suche mehr findet. Das ist wichtig, weil Menschen kurze, vage oder zweiteilige Fragen tippen und ein Index nur die Wörter kennt, die er enthält.

„Wie bekomme ich mein Geld zurück“ teilt kein Wort mit der Seite, die „Erstattung“ sagt. „Und wie lange?“ teilt mit den Seiten nur das Wort „und“, und das hilft nicht weiter.

Das Ziel dieser Lektion

Notiz

Ich kann eine Frage so umschreiben, dass sie mehr findet, und an bekannten Quellen prüfen, dass es geholfen hat.

Schlüsselwörter

BegriffWas er bedeutet
Anfrageder Text, den die Suche wirklich erhält
Erweiterungverwandte Wörter zu einer Anfrage hinzufügen
Zerlegungeine Frage in kleinere Fragen teilen
Folgefrageeine Frage, die nur mit dem bisherigen Gespräch Sinn ergibt
Synonymein anderes Wort für dieselbe Idee
Bekannte Quelledie Seite, die eine Testfrage finden soll

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

Erweitern fügt die Wörter der Seite hinzu

Eine Seite über Erstattungen sagt „Erstattung“. Eine Person sagt „Geld zurückholen“. Die Erweiterung fügt verwandte Wörter zur Anfrage hinzu: „mein Geld“ wird zu „mein Geld Erstattung zurückgeben“. Eine Synonymtabelle leistet das. Ein Modell kann auch welche vorschlagen.

Behalten Sie die ursprünglichen Wörter und ergänzen Sie weitere. Eine Erweiterung, die die Wörter der Person ersetzt, kann das eine genaue Wort verlieren, auf das es ankam.

Eine zweiteilige Frage sind zwei Suchen

Nehmen Sie „Ist der Laden am Sonntag geschlossen und kann ich ein Paket zurückgeben“. Eine einzige Suche liefert die Seite, die zu einer Hälfte am besten passt. Die andere Hälfte geht verloren.

Die Zerlegung teilt die Frage dort, wo „und“ steht, und sucht jeden Teil. Danach werden die Listen verschmolzen, mit der Verschmelzung aus Lektion 1.

Eine Folgefrage braucht das Gespräch

„Und wie lange?“ bedeutet allein nichts. Hängen Sie sie an die frühere Frage, „kann ich ein Paket zurückgeben“, oder lassen Sie ein Modell eine Frage schreiben, die allein verständlich ist.

Senden Sie nie das ganze Gespräch: Lange Anfragen driften ab. Fügen Sie nur die letzte Frage hinzu, und nur wenn die neue kurz ist.

Ein häufiger Fehler

Warnung

Viele glauben, ein Umschreiben helfe immer. Ein Synonym kann zur falschen Seite führen, und ein langer Verlauf kann die Anfrage vom Kurs abbringen. Halten Sie eine Testfragenmenge mit bekannten Quellen bereit und zählen Sie die Treffer vor und nach jeder Änderung.

Den Modell-Helfer schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const basis = process.env.AI_URL || \"http://ai:4000\";' '// Die Token einer Antwort oder null, wenn sie keine nennt.' 'function zaehlen(daten, name) {' '  return daten.usage && typeof daten.usage[name] === \"number\" ? daten.usage[name] : null;' '}' > model.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 Modell-Helfer schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function fragen(nachrichten, probe, max) {' '  try {' '    const res = await fetch(basis + \"/v1/chat/completions\", {' '      method: \"POST\",' '      headers: { \"content-type\": \"application/json\", authorization: \"Bearer lab\" },' '      body: JSON.stringify({ model: \"lab\", messages: nachrichten, max_tokens: max || 100 }),' '      signal: AbortSignal.timeout(30000),' '    });' '    if (res.ok === false) throw new Error(\"Status \" + res.status);' '    const d = await res.json();' '    return { text: d.choices[0].message.content, eingabe: zaehlen(d, \"prompt_tokens\"), ausgabe: zaehlen(d, \"completion_tokens\"), aufgezeichnet: false };' '  } catch (fehler) {' '    console.log(\"Aufgezeichnete Probe: Kein Modell hat geantwortet (\" + fehler.message + \").\");' '    return { text: probe, eingabe: null, ausgabe: null, aufgezeichnet: true };' '  }' '}' 'module.exports = { fragen };' >> model.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 Umschreiber schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'const dokumente = {' '  oeffnung: \"der Laden öffnet am Samstag um neun Uhr und schließt um dreizehn Uhr\",' '  sonntag: \"der Laden ist am Sonntag geschlossen\",' '  rueckgabe: \"Sie können ein Paket innerhalb von dreißig Tagen zurückgeben und erhalten eine Erstattung\",' '  lieferung: \"die Lieferung dauert drei Tage und kostet vier Euro\",' '};' 'const synonyme = { geld: [\"erstattung\", \"zurückgeben\"] };' > umschreiben1.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 Umschreiber schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function woerter(t) { return t.toLowerCase().replace(/[?,]/g, \"\").split(\" \"); }' 'function bestes(q) {' '  const w = woerter(q);' '  let id = \"nichts\", hoechst = 0;' '  Object.keys(dokumente).forEach(function (k) {' '    const n = woerter(dokumente[k]).filter(function (x) { return w.includes(x); }).length;' '    if (n > hoechst) { hoechst = n; id = k; }' '  });' '  return id;' '}' 'function erweitern(q) {' '  const mehr = [];' '  q.toLowerCase().split(\" \").forEach(function (w) {' '    (synonyme[w] || []).forEach(function (s) { mehr.push(s); });' '  });' '  return q + \" \" + mehr.join(\" \");' '}' >> umschreiben1.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 Umschreiber schreiben, Teil 3

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const faelle = [' '  { q: \"wann öffnet der Laden am Samstag\", gesucht: \"oeffnung\" },' '  { q: \"wie bekomme ich mein Geld zurück\", gesucht: \"rueckgabe\" },' '  { q: \"wie lange dauert die Lieferung\", gesucht: \"lieferung\" },' '];' 'let einfach = 0, breit = 0;' 'faelle.forEach(function (c) {' '  const a = bestes(c.q), b = bestes(erweitern(c.q));' '  if (a === c.gesucht) einfach++;' '  if (b === c.gesucht) breit++;' '  console.log(c.q + \" | einfach: \" + a + \" | erweitert: \" + b);' '});' 'console.log(\"Treffer einfach:\", einfach, \"erweitert:\", breit, \"von\", faelle.length);' >> umschreiben1.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 Umschreiber schreiben, Teil 4

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const zwei = \"ist der Laden am Sonntag geschlossen und kann ich ein Paket zurückgeben\";' 'console.log(\"die ganze Frage findet:\", bestes(zwei));' 'console.log(\"die geteilte Frage findet:\", zwei.split(\" und \").map(bestes).join(\" + \"));' 'async function main() {' '  const text = \"Vorher: kann ich ein Paket zurückgeben. Jetzt: wie lange habe ich Zeit. Schreiben Sie die letzte Frage so um, dass sie allein verständlich ist. Antworten Sie nur mit der Frage.\";' '  const antwort = await fragen([{ role: \"user\", content: text }], \"Wie lange kann ich ein Paket zurückgeben?\", 40);' '  console.log(\"umgeschrieben:\", antwort.text.trim());' '  console.log(\"findet:\", bestes(antwort.text));' '}' 'main();' >> umschreiben1.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 Treffer zählen

Befehl
docker exec -w /home/node/project agent node umschreiben1.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 ist ein Platzhalter

Der Sucher zählt gemeinsame Wörter in vier Seiten. Ein echtes System sucht in einem echten Index. Der eine Modellaufruf schreibt eine Folgefrage um, und das Programm nutzt eine aufgezeichnete Umschreibung, wenn kein Modell antwortet.

Die Methode bleibt bei jeder Größe gleich: die Anfrage ändern, dann Treffer an bekannten Quellen zählen.

Was der Run ausgibt

FrageEinfach findetErweitert findet
wann öffnet der Laden am Samstagoeffnungoeffnung
wie bekomme ich mein Geld zurücknichtsrueckgabe
wie lange dauert die Lieferunglieferunglieferung

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

Ü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.