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
| Begriff | Was er bedeutet |
|---|---|
| Anfrage | der Text, den die Suche wirklich erhält |
| Erweiterung | verwandte Wörter zu einer Anfrage hinzufügen |
| Zerlegung | eine Frage in kleinere Fragen teilen |
| Folgefrage | eine Frage, die nur mit dem bisherigen Gespräch Sinn ergibt |
| Synonym | ein anderes Wort für dieselbe Idee |
| Bekannte Quelle | die 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
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
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
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
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
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
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
docker exec -w /home/node/project agent node umschreiben1.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 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
| Frage | Einfach findet | Erweitert findet |
|---|---|---|
| wann öffnet der Laden am Samstag | oeffnung | oeffnung |
| wie bekomme ich mein Geld zurück | nichts | rueckgabe |
| wie lange dauert die Lieferung | lieferung | lieferung |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.