Tekoälyagentit · Oppitunti

HyDE: hypoteettiset dokumenttiupotukset

Luokaa LLM:llä näennäinen ”ihanteellinen” vastaus, upottakaa se ja tehkää haku sen avulla – näin saatte lyhyitä kyselyupotuksia parempia tuloksia.

Oppitunti 2/414 vaihetta

HyDE: hypoteettiset dokumenttiupotukset on ilmainen Tekoälyagentit-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Tekoälyagentit-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Tekoälyagentit-kurssilla on yhteensä 4 oppituntia.

Osaa tämän oppitunnin sisällöstä ei ole vielä käännetty, joten se näytetään englanniksi.

Kyselyembeddingien ongelma

Käyttäjien kyselyt ovat yleensä lyhyitä eivätkä muistuta juuri lainkaan dokumentteja, joita haluatte hakea.

  • Kysely: "korjatkaa näppäimistöni"
  • Dokumentti: "Jos mekaanisen näppäimistön näppäimet takertelevat, voitte puhdistaa kytkimet isopropyylialkoholilla..."

Vektorit ovat semanttisesti kaukana toisistaan, joten haku ei löydä dokumenttia.

HyDE-ajatus

HyDE = Hypothetical Document Embeddings (Gao et al. 2022).

  1. Pyytäkää LLM:ää kirjoittamaan kyselyyn tekaistu "ihannevastaus"
  2. Muodostakaa embedding tekaistusta vastauksesta, ei kyselystä
  3. Käyttäkää tätä vektoria todellisen korpuksen hakemiseen

Miksi se toimii

Hypoteettinen vastaus näyttää aidolta dokumentilta: sen sanasto ja rakenne ovat samankaltaiset. Sen embedding sijaitsee lähellä todellisten dokumenttien embeddingejä, joten haku löytää ne luotettavammin.

Implementation

def hyde_search(query, k=5):
    # Step 1: hallucinate an answer
    hypo_answer = llm.invoke(f'Please write a passage to answer the question: {query}').content
    # Step 2: embed it
    vec = embed(hypo_answer)
    # Step 3: retrieve
    return vector_db.query(vec, k=k)

Vastaus saa olla väärä

HyDEn hypoteettinen vastaus voi olla faktuaalisesti väärä — se ei haittaa. Käytämme sen embeddingiä vain hakuun. Haettuja OIKEITA dokumentteja käytetään lopullisen vastauksen muodostamiseen.

Code Example with LangChain

from langchain.chains import HypotheticalDocumentEmbedder
from langchain_openai import OpenAIEmbeddings, ChatOpenAI

embeddings = HypotheticalDocumentEmbedder.from_llm(
    ChatOpenAI(),
    OpenAIEmbeddings(),
    'web_search'   # built-in prompt template
)
vector = embeddings.embed_query('How do I fix a sticky keyboard?')

Kustannusten ja hyödyn kompromissi

HyDE vaatii yhden ylimääräisen LLM-kutsun kyselyä kohden. Se on hyödyllinen, kun:

  • Kyselyn muotoilu poikkeaa suuresti dokumenttien muotoilusta
  • Haun kattavuus on järjestelmän pullonkaula
  • Korpus sisältää teknistä tekstiä, jonka käyttäjä muotoilee omin sanoin

Moninäytteinen HyDE

Tuottakaa N hypoteettista vastausta, muodostakaa kustakin embedding, hakekaa kullekin top-K-tulokset ja yhdistäkää tulokset. Menetelmä on kalliimpi, mutta sen kattavuus on parempi haastavissa kyselyissä.

hypos = [llm.invoke(...).content for _ in range(3)]
vecs = [embed(h) for h in hypos]
results = set()
for v in vecs:
    results.update(vector_db.query(v, k=5))

HyDEn ja uudelleenjärjestämisen yhdistäminen

HyDE parantaa kattavuutta ja cross-encoder tarkkuutta:

  1. HyDE hakee 50 parasta
  2. Cross-encoder järjestää ne uudelleen ja valitsee 5 parasta
  3. LLM muodostaa vastauksen viiden parhaan perusteella

Milloin HyDEa EI pidä käyttää

  • Kyselyt vastaavat jo dokumenttien kieltä, kuten usein kysytyissä kysymyksissä
  • Viivekriittiset polut
  • Erittäin pienet korpukset, joissa yksinkertainen haku toimii

HyDE koodille

Koodihaussa voitte kuvitella käyttäjän etsimän funktion, muodostaa siitä embeddingin ja hakea todelliset funktiot.

code_hypo = llm.invoke(f'Write the Python function that does: {user_request}').content
results = code_index.search(embed(code_hypo))

Muunnelma: Step-Back Prompting

Aiheeseen liittyvä tekniikka: pyytäkää mallia johtamaan ensin yleisempi kysymys ("Miten näppäimistöjä puhdistetaan?" -> "Mikä yleinen puhdistusmenetelmä sopii mekaanisille näppäimistöille?"), muodostakaa siitä embedding ja hakekaa sen perusteella.

HyDE: miksi se toimii

Mikä saa HyDEn löytämään parempia tuloksia kuin raakadatan kyselystä muodostettu embedding?

Kertaus

HyDE: kuvitelkaa vastaus, muodostakaa SIITÄ embedding ja hakekaa. Menetelmä maksaa yhden ylimääräisen LLM-kutsun, mutta parantaa hakua vaikeissa, uudelleenmuotoilluissa tai teknisissä kyselyissä.

Aloita maksutta

Opi Tekoälyagentit tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
60
Oppitunnit
239

Usein kysytyt kysymykset

Onko oppitunti ”HyDE: hypoteettiset dokumenttiupotukset” ilmainen?

Kyllä – oppitunnin ”HyDE: hypoteettiset dokumenttiupotukset” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Tekoälyagentit-kurssin, päivitä CoddyKit PROhon. Tekoälyagentit-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”HyDE: hypoteettiset dokumenttiupotukset”?

Luokaa LLM:llä näennäinen ”ihanteellinen” vastaus, upottakaa se ja tehkää haku sen avulla – näin saatte lyhyitä kyselyupotuksia parempia tuloksia. Harjoittelet Tekoälyagentit-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Tekoälyagentit-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Tekoälyagentit-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”HyDE: hypoteettiset dokumenttiupotukset”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Tekoälyagentit-oppitunnilla?

Kyllä. Jokainen Tekoälyagentit-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Uudelleenjärjestäminen ristiinkoodereilla
  2. HyDE: hypoteettiset dokumenttiupotukset
  3. Monivektorihaku (ColBERT)
  4. RAG:n arviointi (RAGAS, Recall@K)
← Takaisin: Tekoälyagentit