Voitot:
- Hybridihaun toteuttaminen, joka yhdistää top-k-valinnan sekä semanttisen ja avainsanahaun
- Ensimmäisen haun tarkkuuden lisääminen uudelleensijoituksella
- Tee vaikeista kysymyksistä paremmin haettavia tekniikoilla, kuten kyselymuunnos ja HyDE
Silppusit asiakirjat hienosti ja laitoit ne vektoritietokantaan. Nyt todellinen työ: oikeiden kappaleiden hakeminen, kun käyttäjä kysyy. Tätä kutsutaan noutamiseksi ja se on RAG-laadun selkäranka. Muista lause "Retrieval quality = RAG quality"; Tämä laite on juuri sen laadun parantamisen taidetta. Käsittelemme käytännön tekniikoita huippuk-valinnasta hybridihakuun, uudelleensijoittamisesta kyselyn muuntamiseen.
Top-k: Kuinka monta kappaletta tuomme?
Perusasetus: kuinka monta kappaletta (k) palautetaan hausta. Jos tuot vähemmän (k=1), on suuri riski, että oikea pala puuttuu; Jos lisäät liikaa (k=20), se lisää kohinaa malliin ja tokenin hinta nousee.
Erota kaksi käsitettä. Muista: nopeus, jolla oikea kappale on haettujen joukossa. Tarkkuus: nopeus, jolla haettava on merkityksellistä. K:n lisääminen lisää muistia, mutta heikentää tarkkuutta. Tavoitteena on tasapainottaa nämä kaksi.
top-k
Vaikutus
sopiva tilanne
1-3
Suuri tarkkuus, väliin jäämisen vaara
Yksinkertaisia, yhden vastauksen kysymyksiä
4-8
tasapaino; useimmat skenaariot
Yleinen yritys RAG
10-20
Korkeampi muisti, melu lisääntyy
Uudelleensijoituksella (alla)
Vinkki: Yleinen ja voimakas kuvio: hae leveä (k=20), sitten kavenna luokittelemalla uudelleen (4 parasta). Näin et menetä mitään ja annat mallille puhtaan kontekstin.
Hybridihaku: Kahden haun voima
Semanttinen (vektori)haku tallentaa merkityksen, mutta jättää huomiotta asioita: täydellinen tuotekoodi ("XR-4471"), harvinainen lyhenne, oikea nimi, versionumero. Näissä tarkan haun tehtävissä vanhan koulun avainsanahaku – erityisesti klassinen BM25-algoritmi – on erittäin hyvä.
Hybridihaku yhdistää nämä kaksi: sekä semanttiset että avainsanahaut toimivat yhdistäen tulokset. Siten kysymyksessä, kuten "Takuuaika
Yhdistäminen tehdään yleensä RRF:llä (Reciprocal Rank Fusion): molemmissa listoissa korkeammalla oleva kappale tulee eteen.
# Hybridihaku (käsitteellinen)sem = vector_search(kysymys, k=20) # merkitysavain = bm25_search(kysymys, k=20) # fullwordresult = rrf_merge(sem, key)[:8] # yhdistä nämä kaksi, top 8
Uudelleensijoitus: Toinen ja Smarter Pass
Ensimmäinen puhelu voi olla nopea, mutta töykeä. Uudelleensijoitus pisteyttää ensimmäisellä haulla palautetut ehdokkaat yksitellen tehokkaammalla mallilla (yleensä ristienkooderilla – mallilla, joka lukee kysymyksen ja kohdan yhdessä ja pisteyttää osuvuuden) ja siirtää osuvimmat ehdokkaat kärkeen.
Logiikka on seuraava: ensimmäisessä haussa määrätään suuri määrä ehdokkaita takaisinvedettäväksi (20 ehdokasta), uudelleensijoittaja valitsee tarkkuuden vuoksi 4 parasta. Tämä kaksivaiheinen lähestymistapa on paljon tarkempi kuin yksivaiheinen haku. Se maksaa jonkin verran viivettä ja lisäkäsittelyä; Hyöty on merkittävä laadun nousu.
# Kaksivaiheinen haku (käsitteellinen) ehdokkaat = hybridi_haku(kysymys, k=20) # laaja, pikapiste = reranker.score(kysymys, ehdokkaat) # kunkin ehdokaskontekstin relevanssipisteet = arvioitu.sijoitus()[:4] # top 4
Kyselyn muuntaminen
Joskus ongelma ei ole haussa, vaan itse kysymyksessä. Jos käyttäjä kysyy "entä etätyöntekijät?" Tätä ei voida etsiä yksin (ei ole selvää, mikä on etätyöntekijöitä). Tässä ovat kyselyn muunnostekniikat:
- Kirjoita uudelleen: Käytä keskusteluhistoriaa kysymyksestä itsenäiseksi: "Millä etätyöntekijöillä on oikeus vuosilomaan?"
- Monikysely: Luo 3 eri ilmaisua samalle kysymykselle, hae niillä kaikilla, yhdistä tulokset. Eri sanat löytävät eri palasia.
- HyDE (hypoteettiset asiakirjan upotukset): Tulosta ensin "mahdollinen vastaus" malliin, upota sitten ja etsi kuvitteellinen vastaus. Kuvitteellinen vastaus löytyy joskus paremmin, koska se on sanoin lähempänä todellista asiakirjaa.
# Multi-query (käsitteelliset)variantit = model.uret("Ilmoita tämä kysymys kolmella eri tavalla: " + kysymys)tum_sonuc = []for v muunnelmissa: all_sonuc += vector_intermediate(v, k=6)context = singular_and_order(tum_result)[:6]
Heikko nouto / vahva nouto
Heikko (yksivaiheinen, vain semantiikka, vakio k=3):
tulos = vector_search(question, k=3)# Ongelma: tuotekoodi puuttuu, ei voi syöttää oikeaa osaa 3 vaikeissa kysymyksissä.
Tehokas (hybridi + widek + uudelleensijoitus + tarvittaessa monikysely):
ehdokkaat = hybridi_haku(uudelleenkirjoita(kysymys, menneisyys), k=20)context = uudelleensijoittaja.pisteet(kysymys, ehdokkaat).first(4)# Sekä tarkka vastaavuus että merkitys tallennetaan; Se menee neljälle parhaalle mallille.
Kolme minikoteloa
Tapaus 1 — Tuotekoodi on koodinvaihtomerkki. Pelkkä semanttinen haku tukitiimillä ei löytänyt sanaa "RTX-9080" sanatarkasti kysymyksestä "RTX-9080 driver error"; Hän toi muita samannimisiä tuotteita. Kun hybridihaku lisättiin, koodi täsmättiin täsmällisesti ja oikeiden artikkelien palautusprosentti nousi 58 prosentista 92 prosenttiin.
Tapaus 2 – Luokittelun ero. Apalakimies työskenteli k=5:llä, mutta oikea kohta on 7-10 suurimman osan ajasta. Hän pysyi riveissä. Kun k=20 + uudelleensijoitus otettiin käyttöön, oikean artikkelin 3 parhaan joukkoon sijoittuminen nousi 61 %:sta 94 %:iin; Latenssi lisääntyi vain 300 ms – hyväksyttävä kompromissi.
Tapaus 3 – Jatkokysymys ilman kontekstia. HR-assistentissa käyttäjä kysyy "entä osa-aikaiset?" Kun kysyin, järjestelmä toi epäolennaisia osia. Kirjoittamalla kysely uudelleen (vetämällä "vuosiloman" konteksti menneisyydestä ja lisäämällä "Osa-aikatyöntekijät ovat oikeutettuja vuosilomaan") oikea vastausprosentti nousi 40 %:sta 86 %:iin.
Yleisiä virheitä
- Pelkästään semanttiseen hakuun tukeutuminen: Tuotekoodi, lyhenne, oikea nimi puuttuu; Lisää hybridi.
- K:n pitäminen liian pienenä: Oikea pala ei pääse listaan; Tee siitä leveä ja kavenna sitä uudelleensijoituksella.
- Älä koskaan ajattele uudelleen luokittelua: Ensimmäinen haku on epäkohteliasta; Toinen älykäs passi parantaa huomattavasti laatua.
- Jatkokysymysten etsiminen sellaisenaan: Kysymys ilman kontekstia etsii merkityksettömiä; kirjoittaa uudelleen.
- Sokeasti kohoava k (ilman uudelleensijoitusta): Malli on täynnä kohinaa, vaste vääristyy ja kustannukset kasvavat.
Varo: Jokainen tekniikka lisää kustannuksia ja viivettä. Monikysely tarkoittaa kolminkertaista hakua, uudelleensijoitus tarkoittaa lisämallikutsua. Aloita yksinkertaisella hybridillä + järkevä k ensin; Mittaa ja lisää raskaita tekniikoita siellä, missä niitä todella tarvitaan. Lisäys ilman mittaamista.
Yhteenvetona
- Top-k on tasapaino muistamisen ja tarkkuuden välillä; Yleensä 4-8 on hyvä alku.
- Hybridihaku yhdistää semanttisen haun avainsanahakuun (BM25); Palauttaa tarkat vastaavuudet.
- Uudelleensijoitus pisteyttää ehdokkaat uudelleen laajasta alkuhausta vankalla mallilla ja valitsee parhaat.
- Kyselymuunnos (uudelleenkirjoitus, monikysely, HyDE) tekee vaikeista ja kontekstittomista kysymyksistä haettavissa.
- Vahva kuvio: leveä nouto → yhdistä hybridiin → kapea ja uudelleensijoitus; mutta lisää jokainen tekniikka mittaamalla se.
Sovellustehtävä
Valmista 6 vaikeaa kysymystä aiempien yksiköiden tiedoilla: vähintään 2 vaativat tarkan vastaavuuden (tuotekoodi, lyhenne, päivämäärä), 2 semanttista (sama aihe eri sanoilla), 2 jatkokysymystä ilman kontekstia. (1) Ajattele ensin jokaista kysymystä pelkkänä semanttisena hakuna ja merkitse manuaalisesti, mitkä osat tulevat esiin. (2) Arvioi samat kysymykset uudelleen lisäämällä hybridi- ja uudelleensijoitus. (3) Kirjoita jatkokysymykset uudelleen ilman kontekstia. Merkitse taulukkomuotoon, millä tekniikalla on ero missä kysymystyypissä.
tarkistuslista
- [ ] Tiedän, että top-k on palautus-tarkkuustasapaino ja kohtuullinen aloitusalue.
- [ ] Voin selittää, miksi hybridihaku palauttaa tarkat haut.
- [ ] Osaan soveltaa uudelleensijoittamisen kaksivaiheista logiikkaa (leveä → älykäs kapea).
- [ ] Ymmärrän tarpeen kirjoittaa uudelleen jatkokysymykset ilman kontekstia.
- [ ] Vahvistan, että lisäsin raskaat tekniikat mittaamalla, en mittaamalla.