Voitot:
- Ymmärrä, että upottaminen muuttaa tekstin vektoriksi semanttisessa avaruudessa ja vastaavat merkitykset ovat läheisiä vektoreita
- Selitetään, kuinka ANN-haku toimii kosinin ja pisteen samankaltaisuusmittareiden kanssa
- Yleisten vektoritietokantojen valinta kustannusten, mittakaavan ja metatietojen suodatustarpeen perusteella
RAG:n ytimessä on yksi kysymys: "Mikä tekstinpätkä muistuttaa eniten käyttäjän kysymystä?" Tietokone käsittelee tekstiä numeroilla, ei kirjaimellisesti. Siksi meidän on ensin muutettava teksti numeroiksi, joilla on sen merkitys. Sitä upottaminen on: prosessi, jossa teksti muunnetaan numerosarjaksi (vektoriksi), joka edustaa kyseisen tekstin merkitystä. Kun lopetat tämän yksikön, tiedät kuinka upotus toimii, kuinka samankaltaisuus mitataan ja kuinka valita oikea vektoritietokanta.
Upottaminen: Merkityksen kääntäminen koordinaatteiksi
Upotusmalli (erityisesti koulutettu tekoäly) muuntaa antamasi tekstin esimerkiksi 1024 numeron vektoriksi. Ajattele tätä vektoria koordinaattina moniulotteisessa avaruudessa. Taika on tämä: merkitykseltään samankaltaiset tekstit osuvat läheisiin koordinaatteihin tässä tilassa.
Yksinkertainen esimerkki: "vuosiloma", "lomaoikeus" ja "vuosipalkkaloma" käyttävät eri sanoja, mutta tarkoittavat samaa asiaa – niiden vektorit ovat lähellä toisiaan. "Palkkatili" on eri asia - sen vektori on kaukana. Joten käyttäjä kysyy "kuinka monta päivää lomaa minulla on?" Kun kysyt, voimme löytää jopa asiakirjan, jossa ei ole sanaa "loma", vaan jossa lukee "vuosiloma on 14 päivää". Tämä on mitä klassinen avainsanahaku (haku, joka vastaa sanaa tarkasti) ei voi tehdä.
Vinkki: Ajattele upottamista "merkityksen sormenjäljenä". Kahden saman merkityksen omaavan lauseen sormenjäljet näyttävät samanlaisilta; Vaikka sanat ovatkin erilaisia.
Tärkeä sääntö: kysymyksen upottamiseen käytettävän mallin tulee olla sama malli, jota käytät asiakirjoja upottaessasi. Eri mallit tuottavat erilaisia tiloja; koordinaatit muuttuvat vertaansa vailla.
Kuinka mitata samankaltaisuutta?
On olemassa useita menetelmiä mitata kahden vektorin samankaltaisuutta. Yleisin on kosinin samankaltaisuus: se mittaa kahden vektorin välistä kulmaa. Jos kulma on pieni (vektorit osoittavat samaan suuntaan), samankaltaisuus on suuri. Arvo on välillä −1 ja 1; Lähes 1 = hyvin samanlainen.
kriteeri
Mitä se mittaa?
Milloin se on parempi?
Kosini
Kulma (suunta) vektorien välillä
Yleisin; oletusarvoinen tekstin semanttinen samankaltaisuus
Pistetuote
Suunta + suuruus yhdessä
Jos vektorit normalisoidaan, se antaa saman tuloksen kuin kosini; on nopea
Euklidinen (euklidinen etäisyys)
Suora etäisyys koordinaattien välillä
Joissakin klusterointiskenaarioissa; vähemmän käytetty tekstissä
Käytännössä useimmat upotusmallit tuottavat normalisoituja vektoreita (koko asetettu 1:ksi); Tässä tapauksessa kosini- ja pistetulo antavat saman järjestyksen. Älä ole päätöksenteon halvaantunut: aloita kosinilla.
Miljoonien vektoreiden joukossa niiden vertaaminen yksitellen on hidasta. Siksi vektoritietokannat käyttävät ANN (Approximate Nearest Neighbor) -algoritmeja. ANN löytää "melkein tarkalleen lähimmän" kuin "täsmälleen lähimmän" hyvin nopeasti. Esimerkiksi HNSW-niminen menetelmä voi palauttaa tulokset muutamassa millisekunnissa jopa 10 miljoonalle vektorille. Saat suuren nopeuden pienellä tarkkuusuhrauksella.
Mitä vektoritietokanta tekee?
Vektoritietokanta tekee kolme asiaa kerralla: (1) tallentaa vektorit, (2) löytää nopeasti vektorit, jotka muistuttavat eniten kyselyvektoria, (3) suodattaa kunkin vektorin vieressä olevien metatietojen mukaan. Metadata ovat tunnisteita, jotka liität kyseiseen osaan: lähdetiedosto, päivämäärä, osasto, tietosuojataso jne. Metatietojen suodatus on kriittistä yrityksen RAG:ssa. koska sinun on voitava asettaa rajoituksia, kuten "haku vain talousosaston vuoden 2025 asiakirjoista".
# Rekisteröidy vektoritietokantaan (conceptual)vektor_db.add( id="izin-politikasi-parca-3", vektor=embed("Vuosipalkkaloma on 14 päivää..."), text="Vuosipalkkaloma on 14 päivää...", metadata={"lähde": "ik_el_kitabi.pdf", "osasto": "IK":0",0da2te": "IK",0da2te "ic"})
# Metatiedoilla suodatettu haku (käsitteellinen)tulos = vektor_db.search( vektor=embed("kuinka monta päivää lomaa minulla on?"), top_k=4, filter={"osasto": "HR", "yksityisyys": ["sisäinen", "päällä"]})
Oikean tietokannan valinta
ajoneuvoa
Suositeltu puoli
Sopiva tilanne
Sisäänrakennettu / tiedostopohjainen (sulautettu kirjasto)
Ei asennusta, yksi kone
Prototyyppi, pieni sarja (< muutama satatuhatta osaa)
Hallittu pilvipalvelu
Skaalaus ja ylläpito eivät ole sinun vastuullasi
Tuotanto, nopeasti kasvava data, pieni tiimi
Avoin lähdekoodi omalla palvelimellasi
Täysi hallinta, tietosi pysyvät sinun
Yksityisyysvelvoite, olemassa oleva infrastruktuuri
Lisäys olemassa olevaan tietokantaan
Et hallitse erillisiä järjestelmiä
Vektorituen lisääminen jo käyttämääsi tietokantaan
Kysy valitessasi: Kuinka monta kappaletta tulee? Kuinka tärkeää metatietojen suodatus on? Voivatko tiedot mennä yrityksen ulkopuolelle (luottamuksellisuus)? Voiko tiimi ylläpitää infrastruktuuria? Usein on viisasta aloittaa pienestä ja laajentaa sitä tarpeen mukaan.
Heikko lähestymistapa / vahva lähestymistapa
Heikko (tallentaa pelkän upotuksen, ei metatietoja):
Tallenna vain teksti ja vektori. Haku: palauta 4 samankaltaisinta vektoria.# Ongelma: ei voi suodattaa kuten "vain nykyiset HR-asiakirjat"; # vastauksessa voi myös olla vanhoja/luvaton osia.
Tehokas (rikas metatiedot + suodatettu haku):
Lisää lähde, päivämäärä, osasto ja tietosuojatunniste jokaiseen osaan. Suodata käyttäjän valtuuksien ja haun ajantasaisuuden mukaan: filter = {"privacy": user_authority, "date_date": "2024-01"}# Näin ollen tulos on sekä turvallinen että ajan tasalla.
Kolme minikoteloa
Tapaus 1 – Väärä malliyhdistelmä. Tiimi upotti dokumentteja mallilla A ja kysymyksiä mallilla B. Haut tuottivat merkityksettömiä tuloksia, ja oikea vastausprosentti pysyi 31 prosentissa. Kun vaihdoin yhteen malliin (molemmat samaan upotettuun malliin), prosenttiosuus hyppäsi 88 prosenttiin. Oppitunti: kysymyksen ja asiakirjan tulee olla samassa tilassa.
Tapaus 2 – Tietosuojariski ilman metatietoja. Terveydenhuoltoyrityksessä kaikki osaston asiakirjat heitettiin yhteen pooliin ilman metatietoja. Kun myyjä esitti kysymyksen, järjestelmä kontekstualisoi osan potilastiedoista. Kun metatiedot + suodatin lisättiin (valtuutustason mukaan), tämä riski poistui; Noudettaessa 12 luvatonta kappaletta ei tuoda ollenkaan.
Tapaus 3 – mittakaavan pullonkaula. Verkkokauppayritys etsi 8 miljoonasta tuotekuvauksesta yksinkertaisella "skannaa kaikki" -menetelmällä; Jokainen kysely kesti 6 sekuntia. Kun vaihdoimme HNSW-pohjaiseen ANN:iin, aika lyheni 45 millisekuntiin, ja tarkkuus heikkeni vain 1 %. Oppitunti: ANN on pakollinen isossa sarjassa.
Yleisiä virheitä
- Kysymyksen ja asiakirjan upottaminen eri malleilla: Tulokset ovat merkityksettömiä; aina yksi malli.
- Metatietojen ohittaminen: Et voi suodattaa. Menetät yksityisyyden ja ajantasaisuuden hallinnan.
- Virheellinen upottaminen salaukseen: Upottaminen kuljettaa palautuvaa tietoa; On väärin olettaa, että arkaluonteiset tiedot on "piilotettu".
- Tarpeettoman suuren infrastruktuurin rakentaminen pieneen joukkoon: 5 000 osasta hallittu jättimäinen klusteri on tarpeeton monimutkaisuus.
- Älä huolehdi liikaa samankaltaisuuskriteeristä: Aloita tekstissä kosinilla; Hienosäätö tulee myöhemmin.
Varoitus: upottaminen upottaa tekstin merkityksen numeroihin, mutta ei "tuhoa" sisältöä. Jos vektoritietokanta vuotaa, myös alkuperäiset tallennetut tekstit (useimmissa asennuksissa myös teksti tallennetaan) vaarantuvat. Pidä vektoriarkisto yhtä luottamuksellisina kuin siinä olevat asiakirjat.
Yhteenvetona
- Upottaminen muuttaa tekstin numerovektoriksi, joka kantaa sen merkityksen. Samankaltaiset merkitykset ovat läheisiä vektoreita.
- Samankaltaisuus mitataan usein kosinilla; Normalisoiduille vektoreille pistetulo antaa saman tuloksen.
- Big datassa ANN (esim. HNSW) korvaa tarkan haun: suuri nopeus pienellä tarkkuuden uhrauksella.
- Vektoritietokanta suorittaa vektoritallennus + samankaltaisuushaku + metatietojen suodatus; metatiedot ovat välttämättömiä yrityksen RAG:lle.
- Kysymys ja asiakirja on käännettävä samalla upotusmallilla; muuten koordinaatteja ei voi verrata.
Sovellustehtävä
Poimi 10 lyhyttä kohtaa (kukin 3-6 lausetta) edellisessä yksikössä valitsemastasi asiakirjasta. (1) Suunnittele kullekin osalle vähintään kolme metatietotunnistetta (lähde, päivämäärä ja kolmas, joka sopii yrityksesi kontekstiin: osasto, tuote, tietosuoja jne.). (2) Kirjoita, mitä metatietosuodatinta tulisi käyttää kolmeen eri käyttäjäkysymykseen. (3) Etsi 3 kysymysosaparia, jotka ilmaisevat saman merkityksen eri sanoin (esim. "lomaoikeus" ↔ "vuosiloma") ja selitä yhdellä lauseella, miksi ne eivät vastaa avainsanahakua, mutta vastaavat upotusta.
tarkistuslista
- [ ] Voin kertoa, että upottaminen muuttaa tekstin vektoriksi semanttisessa avaruudessa ja vastaavat merkitykset ovat lähellä.
- Tiedän, että [ ] kosinin samankaltaisuus mittaa kulmaa ja on tekstin oletusasetus.
- [ ] Osaan selittää, miksi ANN on tarpeen big datassa.
- [ ] Tiedän, miksi metatiedot ovat tärkeitä luottamuksellisuuden ja tuoreuden hallinnan kannalta.
- [ ] Noudatan sääntöä kääntää kysymys ja asiakirja samalla upotusmallilla.