Lühidalt
Kontrollitavad allikaviited, kehtivad andmed ja vastamisest loobumise reegel vähendavad chatboti väljamõeldud vastuste riski, kuid ei välista eksimusi. Selleks hoitakse ühte fakti ühes kohas, iga lõigu juures on allika URL, kehtivusaeg, omanik ja sihtrühm, vastuolude korral kehtib uuem ja spetsiifilisem dokument ning allika puudumisel vastab bot „ei tea” ja suunab inimesele.
Miks bot leiutab, kuigi mudel on hea
Keelemudel vastab alati. Kui küsimusele ei ole kontekstis vastust, ei jää ta vait, vaid koostab vastuse selle põhjal, mis tal parasjagu käes on: lähim sarnane lõik, eelmine vastus, üldteadmine. Seetõttu ei ole hallutsinatsioon mudeli defekt, mida parandatakse parema mudeliga, vaid süsteemi puuduv piir.
Piir tekib kahest asjast. Esiteks peab vastus olema seotud konkreetse allikalõiguga, mida saab näidata. Teiseks peab olema olemas tee, mis lõpeb sõnadega „ei tea”, kui sobivat lõiku ei leita. Ilma teiseta on esimene kosmeetika: viide lisatakse vastusele tagantjärele ja see võib osutada valele kohale.
See artikkel käsitleb allikate korrastamist, mitte ehitustööd. Kui vajad sisemist assistenti dokumentide, õiguste ja töövoogudega, on see AI arenduse teema. Siin on küsimus, mida pannakse selle assistendi või veebilehe chatboti alla.
Tsiteerimine on mehhanism, mida tuleb seadistada
Kolm suurt tarnijat on teinud allikaviitest tooteomaduse, aga mitte vaikimisi sisselülitatud omaduse. Kes seda ei tea, saab vastuse, mis näeb viidatud välja, kuid ei ole seda.
Claude'i API-s antakse otsingutulemused search_result plokkidena. Igal plokil peab olema source, mis on kas URL või sisemine tunnus kujul kb://article-1234, ja pealkiri. Viited on vaikimisi välja lülitatud. Need lubatakse search_result-plokkide citations.enabled väljal, ja oluline piirang: sama päringu kõikidel otsingutulemustel peab olema sama seadistus. Kui viited on sees, tekivad need automaatselt, ilma seda juhises eraldi palumata.
OpenAI file search lisab vastuse väljundisse file_citation annotatsioonid. Funktsiooni enda vastus ei tagasta otsingutulemusi vaikimisi, nähtavad on ainult annotatsioonid tekstis; tulemuste sisu nägemiseks tuleb need eraldi kaasa paluda (include: ["file_search_call.results"]). Mitu lõiku korraga toob parameeter max_num_results, ja failidele saab panna atribuute, mille järgi otsingut filtreerida. See viimane on oluline õiguste jaoks, millest allpool.
Mõlema puhul kehtib sama reegel: kui sa ei kontrolli iga vastuse juures, kas viide tekkis ja kas see osutab õigele lõigule, siis sa ei tea, kas bot vastas allikast. Testimine käib 40 küsimuse koguga, kus iga küsimuse juures on kirjas, millist allikat õige vastus peab tsiteerima.
Üks fakt, üks koht
Kõige levinum teadmistebaasi viga ei ole puuduv sisu, vaid korduv sisu. Sama hinda näidatakse avalehel, hinnalehel, tootelehel ja PDF-is. Kõik neli on veidi erinevad, sest keegi uuendas kolme neist. Bot valib neist ühe ja valib iga kord natuke teisiti.
Reegel, mis selle ära hoiab: üks fakt elab ühes kohas, ja teised kohad viitavad sellele. Kui hinnaleht on ainus koht, kus hind kirjas on, kaob ära üks levinud vastuolu allikas, kuid vastuse õigsust tuleb ikkagi testida. Kui hind on neljas kohas, valib bot iga kord natuke teisiti ja eksib varem või hiljem.
Lõikude poolitamisel on kaks vastassuunalist viga. Liiga väike lõik kaotab tingimuse: „Tarne on tasuta” ilma lauseta, et see kehtib üle 50 euro tellimustele. Liiga suur lõik lahjeneb: kolm lehekülge tingimusi ühe lõiguna tähendab, et otsing ei leia sealt enam seda õiget lauset. Töötav vahemik on umbes 200 kuni 400 tokenit lõigu kohta, nii et üks lõik sisaldab ühe vastuse ja selle tingimused.
Kaks praktilist reeglit, mis säästavad hiljem tunde. Pane iga lõigu algusesse selle peatüki pealkiri, sest ilma selleta ei tea mudel, millest lõik räägib. Ära poolita tabelit ja selle selgitust eri lõikudeks, sest siis leitakse number ilma ühikuta.
Neli välja iga lõigu juures
Lõik ilma metaandmeteta on anonüümne ja vananeb märkamatult. Neli välja, mis muudavad allika kontrollitavaks:
| Väli | Näide | Mida see ära hoiab |
|---|---|---|
| Allikas | kb://hinnad/2026-10 või täis-URL | Vastuse ilma tsiteeritava aluseta; annab kasutajale lingi, mida kontrollida |
| Kehtiv alates ja kuni | 01.10.2026 kuni 31.12.2026 | Vana hinnaga vastamise pärast hinnatõusu; võimaldab aegunud lõigu automaatselt välja lülitada |
| Omanik | müügijuht | Selle, et keegi ei tea, kes peab muudatuse sisse viima |
| Sihtrühm | avalik või sisemine | Sisemise juhendi või hinnastuse sattumise avalikku boti |
Kehtivusajal on eraldi väärtus: see lubab botil öelda „see tingimus kehtis kuni 31.12.2026, kehtiva tingimuse leiad hinnalehelt”, mis on parem kui üldse mitte vastata. Omaniku väli on ainus, mis hoiab teadmistebaasi elus pärast kuuendat kuud.
Vastuolud: kes võidab
Konflikt tekib alati, ka korrastatud kogus. Enne avaldamist pane kirja, kumba usutakse, ja lase botil seda järgida.
Uuem kuupäev võidab
Kui kaks lõiku ütlevad hinna kohta eri asja, kehtib hilisema kehtivuse algusega lõik. Kui kuupäevi ei ole, ei ole konflikti võimalik lahendada ja see tuleb enne avaldamist käsitsi ära otsustada.
Spetsiifilisem dokument võidab üldisemat
Konkreetse toote tingimused on täpsemad kui üldtingimused. See järjekord peab olema sõnastatud, mitte mudeli otsustada, sest mudel valib iga kord natuke erinevalt.
Kui võitjat ei ole, vastust ei ole
Ühtlane reegel: kui kaks võrdselt kehtivat allikat ütlevad eri asja, ei ole botil õigust keskmist võtta. Ta ütleb, et info on vastuoluline, ja suunab inimesele. See tundub nõrkusena, kuni esimene vale hind jõuab kliendini.
„Ei tea” tuleb ehitada, mitte loota
Vaikimisi ei ütle mudel „ei tea”, sest talle ei ole öeldud, et see on lubatud. Lubamiseks on tarvis kolme asja.
- Lävend otsingule. Kui parim leitud lõik on nõrgalt sarnane, ei tohi seda kasutada. Lävend määratakse testkoguga, mitte tundega.
- Kohustuslik viide. Vastuse mallis on koht allikale. Kui see jääb tühjaks, ei saadeta vastust välja, vaid minnakse üleandmise teele.
- Keelatud teemade nimekiri. Loe üles teemad, mille kohta bot ei vasta isegi siis, kui allikas on olemas: tervis, õigus, maksud, konkurendid, eraelu. Nimekiri on lühike ja konkreetne, sest üldine „ära anna nõu” ei muuda käitumist.
Neljas asi on sõnastus. Vastus „ei leidnud seda infot” ei anna kliendile järgmist sammu. Vastus „seda infot meie lehtedel ei ole; kõige kiiremini vastab sellele müügijuht, siin on kontakt” teeb sama töö ja jätab kliendile tee edasi. Üleandmise kvaliteet on eraldi mõõtmise teema, kuid selle alus luuakse siin.
Kes vastutab versiooni eest
Teadmistebaas ei ole fail, vaid register. Tee tabel, kus iga rida on üks allikas nelja väljaga: dokument, omanik, ülevaatamise sagedus ja viimase ülevaatamise kuupäev.
| Allikas | Omanik | Ülevaatamine | Käivitaja |
|---|---|---|---|
| Hinnakiri | müügijuht | iga muudatuse järel | hinnamuudatus |
| Tarne- ja tagastustingimused | klienditoe juht | kord kvartalis | uued tingimused, seadusemuudatus |
| Kasutusjuhendid | tootejuht | iga tooteversiooni järel | uuendus |
| Privaatsus ja andmetöötlus | andmekaitse eest vastutaja | kord aastas | protsessi muutus |
Käivitaja veerg on praktiline: see näitab, milline sündmus peab teadmistebaasi muutma. Kui käivitaja puudub, ei juhtu muudatust kunagi, sest keegi ei märka, et peaks.
Pane igale lõigule aegumiskuupäev, isegi kui see on aasta kaugusel. Aegunud lõik läheb automaatselt välja ja bot vastab selle küsimuse peale „ei tea” kuni uuendamiseni. See on parem kui aasta vanune hind, mis tundub kehtiv.
Õigused ja logid
Kui teadmistebaasis on nii avalikku kui sisemist infot, ära tee kahte koopiat. Üks kogu, mille iga lõik kannab sihtrühma tunnust, ja filter päringu ajal. Filter peab lähtuma serveris kontrollitud kasutajaõigustest. Avalik või sisemine märgend on siinne lihtsustatud näide, eri töötajate ja klientide ligipääs võib nõuda täpsemaid õigusi. OpenAI file search pakub selleks atribuudipõhist filtrit; mis tahes muu lahenduse puhul kontrolli, et õigus otsustatakse päringu hetkel, mitte kopeerimise hetkel.
Logi, milline allikas vastuse andis. See on ainus viis hiljem öelda, miks bot nii vastas. Logi sisaldab tavaliselt isikuandmeid, seega vajab see selget alust ja eesmärki ning mõistlikku säilitusaega. Lühike säilitusaeg on odavam ja väiksem risk.
Kui suur see peaks olema
Väiksem, kui arvatakse. Veebilehe boti jaoks piisab tavaliselt 30 kuni 60 kinnitatud vastusest, mis katavad korduvad küsimused. Iga lisanduv dokument toob kaasa uue versiooni, uue omaniku ja uue võimaluse vastuoluks.
Mahtu saab arvutada ka tokenites, kui allikad on PDF-id, aga seda arvu ei tohi segi ajada teadmistebaasi lõikude mahuga. Gemini PDF-i visuaalses töötlemises on 40 lehte 10 320 lehekujutise tokenit. See ei näita dokumendist eraldatud teksti tokenite ega teadmistebaasi lõikude arvu: need tuleb mõõta tegelikust tekstist valitud tokeniseerijaga. Lehekujutise token on selleks, et mudel näeks tabelit ja paigutust, mitte selleks, et hinnata vektorkujutise mahtu.
Kolmkümmend vastust, igaüks 300 tokenit, on 9 000 tokenit. Kui iga pööre toob kaasa 1 000 tokenit otsitud lõike, on teadmistebaasi maht mudeli jaoks ebaoluline, sest kulus loeb ikka see, mis päringuga kaasa läheb. Seepärast ei ole mõtet indekseerida kogu dokumentide arhiivi lootuses, et mudel sealt õige asja leiab. Chatboti vastuse kvaliteet tuleb lõikude täpsusest, mitte koguse suurusest.
Näide: kuidas üks vastus tekib
Kliendi küsimus: „Kas teete tööd KM-ta?” Kogu, mis sellele õigesti vastab, koosneb ühest lõigust nelja metaandmeväljaga. Nii näeb see välja andmetena, mitte proosana:
{
"source": "kb://hinnad/2026-10",
"url": "/hinnakiri/",
"title": "Hinnakiri, kehtiv 01.10.2026",
"valid_from": "2026-10-01",
"valid_until": "2026-12-31",
"owner": "müügijuht",
"audience": "avalik",
"text": "Kõik hinnad on näidatud ilma käibemaksuta. Käibemaks lisandub arvele kehtiva määra järgi."
}
Otsing leiab selle lõigu, sest küsimus ja lõik räägivad samast asjast ka siis, kui sõnad ei kattu. Mudel koostab vastuse, mille juures on viide kb://hinnad/2026-10. Rakendus peab sisemise kb:// tunnuse siduma kasutajale lubatud hinnakirja URL-iga ja kuvama selle lingina; sisetunnus ise brauseris hinnakirja ei ava. Kui valid_until on möödas, lülitub lõik välja ja bot ütleb, et kehtiva hinnakirja leiab hinnalehelt.
Nüüd sama küsimus kogus, kus on kaks lõiku. Üks ütleb, et hinnad on ilma käibemaksuta, teine, et hinnad sisaldavad käibemaksu. Kui mõlemal on sama valid_from ja sama omanik, ei ole botil õigust valida. Õige käitumine on öelda, et info on vastuoluline, ja suunata inimesele. Kui üks lõik on vanem, kehtib uuem ja vana lõik tuleb kogust välja võtta, mitte jätta lootuses, et otsing ei leia seda.
See nädalas tehtav korrastus ongi kogu töö. Sisu, millel on allikas ja kehtivusaeg, käitub ennustatavalt. Sisu ilma nendeta käitub nagu iga teine mudeli sisend: mõnikord hästi.
Mis teadmistebaasi ei kuulu
Kogu, mis kasvab, laguneb. Seetõttu on väljajätmine sama oluline kui lisamine, ja see tuleb kirja panna enne, kui keegi toob esimese „aga pane see ka sisse” palve.
- Mustandid ja sisekaust. Ainult kinnitatud versioonid. Kui kaks inimest vaidlevad, milline on õige, ei tohi kumbki olla kogus enne, kui vaidlus on otsustatud.
- Isikuandmed. Kliendinimed, isikukoodid, terviseandmed ja palgainfo ei lähe kogusse kunagi, ka mitte testandmetena. Kui vastus nõuab konkreetse kliendi andmeid, on see integratsiooni, mitte teadmistebaasi küsimus, ja seal kehtivad eraldi õigused.
- Lepingud kolmandate osapooltega. Need sisaldavad tingimusi, mida sa ei tohi avaldada. Kui bot neid loeb, võib ta need ka välja öelda.
- Hinnangud ja arvamused. „Meie toode on parim” ei ole fakt, mida saab tsiteerida, ja bot kordab seda nii, nagu oleks.
- Aegunud hooajaline sisu. Eelmise aasta kampaania jääb kogusse ainult siis, kui sellele on pandud aegumiskuupäev.
Praktiline reegel: kui sa ei suuda öelda, kes selle lõigu eest vastutab ja millal see aegub, ei kuulu see lõik kogusse. See kõlab karmilt, kuni esimese vale vastuse järel selgub, et keegi ei tea, kust see tuli.
Kontrollnimekiri enne avaldamist
- Iga korduv küsimus on kaetud vähemalt ühe lõiguga, millel on allikas.
- Iga hinna ja tingimuse juures on kehtivuse algus ja omanik.
- Sama fakti kohta ei ole kogus üle ühe kehtiva versiooni.
- Konflikti järjekord on kirjas ja bot järgib seda, mitte ei vali ise.
- Keelatud teemade nimekiri on olemas ja iga punkt ütleb, mida selle asemel öelda.
- Viited on seadistuses sisse lülitatud ja testkogus kontrollitud.
- Aegumiskuupäev on pandud ka neile lõikudele, mis tunduvad igavesed.
- Logimise alus, eesmärk ja säilitusaeg on otsustatud.
Kui tahad, et vaataksin sinu materjalid enne ehitust üle, saada nimekiri allikatest koos iga allika eest vastutaja nimega ja kümme sagedasemat kliendiküsimust. Sellest piisab, et öelda, kus teadmistebaas enne avaldamist katki läheb.
Küsimused
Kui palju dokumente chatboti teadmistebaasi vaja on?
Vähem, kui arvatakse. Veebilehe botile piisab tavaliselt 30–60 kinnitatud vastusest, mis katavad korduvad küsimused. Iga lisanduv dokument suurendab vastuolude ja vananenud info hulka, mistõttu kvaliteet langeb enne, kui kvantiteet kasu toob.
Miks bot vastab vale hinnaga, kuigi hinnaleht on olemas?
Sest teadmistebaasis on mitu versiooni samast hinnast või vastus ei ole lõiguga seotud. Kui botil puudub tsiteeritav lõik, võtab ta lähima sarnase ja koostab vastuse selle põhjal. Lahendus on versioonihaldus, mitte mudeli vahetamine.
Kas allikaviide tähendab, et vastus on õige?
Ei. Viide näitab, millist lõiku mudel kasutas, mitte seda, kas ta tõlgendas seda õigesti või kas lõik ise oli kehtiv. Seepärast on vaja ka kehtivusaega, omanikku ja regulaarset vestlusvalimi ülevaatamist.
Kas tsiteerimine tuleb ise sisse lülitada?
Enamasti jah. Näiteks Claude'i API-s on allikaviited vaikimisi väljas ja lubatakse iga otsingutulemuse juures, kusjuures sama päringu kõikidel tulemustel peab olema sama seadistus. OpenAI file search tagastab vastuses failiviited annotatsioonidena. Kui sa ei kontrolli, kas viide tekkis, ei tea sa, kas vastus toetus allikale.
Kes peaks teadmistebaasi uuendama?
Iga allika juures peab olema nimetatud omanik ja ülevaatamise sagedus. Ilma omanikuta ei ole teadmistebaas projekt, vaid hetktõmmis, mis vananeb esimese hinnamuudatuse järel.
Kas teadmistebaas asendab sisemist AI-assistenti?
Ei, need on kaks eri asja. Teadmistebaas on korrastatud allikate kogu, mille peal töötab nii veebibot kui sisemine assistent. Sisemine assistent lisab õigused, dokumendihoidla ja töövood; selle ehitust kirjeldab AI arenduse leht.
Allikad
- Search results · Anthropic · vaadatud 2026-10-29
- File search · OpenAI · vaadatud 2026-10-29
- Document processing · Google · vaadatud 2026-10-29
- Õigustatud huvi · Andmekaitse Inspektsioon · vaadatud 2026-10-29