Ce este Dynamic Few-Shot (selecția exemplelor după similaritate)?

Tehnici Fundamentale Liu et al. (2021), selecția exemplelor prin regăsire

Alegerea automată, pentru fiecare cerere, a exemplelor few-shot cele mai asemănătoare dintr-o bancă de exemple, prin căutare semantică.

Denumire completă

Pentru fiecare cerere: embedding al întrebării → cele mai apropiate k exemple din bancă → exemplele intră în prompt

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

Noțiuni și module înrudite