În few-shot obișnuit, exemplele din prompt sunt aceleași la fiecare cerere. La selecția dinamică, păstrezi o bancă mare de exemple verificate și, pentru fiecare cerere nouă, alegi doar pe cele mai asemănătoare, de obicei prin căutare vectorială.
Ideea a fost testată de Jiachang Liu și colegii în „What Makes Good In-Context Examples for GPT-3?” (2021). Lucrarea arată că rezultatele GPT-3 depind mult de exemplele alese și că exemplele regăsite după similaritate semantică au depășit constant alegerea aleatoare, pe mai multe sarcini de înțelegere și de generare a textului. Encoderele de propoziții antrenate suplimentar pe date din aceeași sarcină au dat rezultate și mai bune.
Banca de exemple se ține de obicei într-o bază vectorială; vezi bazele de date vectoriale și RAG, care folosește aceeași regăsire, dar pentru documente, nu pentru exemple.
Concepte cheie și caracteristici
| Concept / Parametru | Descriere practică |
|---|---|
Banca de exemple |
Perechi intrare–ieșire verificate, fiecare cu embedding-ul intrării. |
k |
Câte exemple intră în prompt. Ghidul Anthropic recomandă 3–5 exemple pentru few-shot; valoarea potrivită se alege prin testare. |
Măsura de similaritate |
De obicei similaritatea cosinus sau produsul scalar dintre embedding-uri. |
Diversitate |
Exemplele aproape identice între ele aduc puțină informație nouă, iar Anthropic cere exemple diverse. O metodă de reordonare care combină relevanța cu diversitatea este Maximal Marginal Relevance (Carbonell și Goldstein, 1998). |
Formatul în prompt |
Toate exemplele au același format, de exemplu fiecare în <example>, și stau înaintea cererii. |
Exemple practice și scenarii reale
Exemplul 1: Selecția exemplelor înainte de apelul la model
similarity_search este un nume generic; fiecare bază vectorială are propria funcție de căutare.
# 1. Cererea nouă
intrebare = "Cum returnez o comandă plasată greșit?"
# 2. Cele mai apropiate 3 exemple din bancă
exemple = banca.similarity_search(intrebare, k=3)
# 3. Promptul: partea fixă întâi, apoi exemplele și cererea
prompt = "Răspunde ca asistent de suport. Exemple de răspunsuri aprobate:\n"
for ex in exemple:
prompt += f"<example>\nÎntrebare: {ex.intrebare}\nRăspuns: {ex.raspuns}\n</example>\n"
prompt += f"Întrebarea clientului:\n{intrebare}"
Greșeli frecvente și capcane
- Pui în bancă exemple neverificate. Exemplele alese ajung direct în prompt, iar modelul le copiază tiparul, inclusiv greșelile.
- Alegi doar după similaritate și primești k exemple aproape identice. Adaugă un criteriu de diversitate sau elimină duplicatele.
- Evaluezi pe întrebări care au copie exactă în bancă. Rezultatul măsoară atunci memorarea, nu calitatea; ține un set de evaluare separat.
- Pui exemplele variabile înaintea instrucțiunilor fixe. OpenAI recomandă ca partea care se repetă să stea la începutul promptului, ca să beneficieze de prompt caching.