Lapho Abasebenzisi be-RAG Bebuza Imibuzo Engacacile: Cacisa Kanye, Funda Okuzenzakalelayo

ku-Enterprise Document Intelligence, uchungechunge olwakha isistimu ye-RAG yebhizinisi ngezitini ezine: ukuhlukanisa, ukuhlukanisa imibuzo, ukubuyisa, nokwenza.
Yelula i-Athikili 6 (ukuhlazululwa kombuzo) esimweni lapho umbuzo unganembi ngokwanele: buza ukucaciswa okukodwa okugxilile, funda okuzenzakalelayo empendulweni, thula ngokuzayo.
Isitina sokuhlaziya umbuzo siphendula umbhalo womsebenzisi uwenze umbuzo othayiphiwe othi ParsedQuestion. Lo mlingani ucosha imodi yokwehluleka ukuthi izitini ziyiqambe ngechashazi elilodwa futhi ayithuthukise njengephethini yayo. Umbuzo ushoda ngocezu lolwazi oludingwa yisistimu (imuphi idokhumenti? yiliphi ikhasi? yiluphi uhlobo lwesigatshana?). Ukulungiswa okushibhile ukubuza. Ukulungisa okulungile ukubuza, bese ufunda okuzenzakalelayo ukuze icala elilandelayo lithule. Izikimu ezimbili ze-Pydantic kanye neluphu eyodwa emfushane kuvala igebe.
Isitina esicacisa imibuzo sidweba ipayipi: umsebenzisi uthayipha umbhalo wamahhala, ukucozulula imibuzo kukhiqiza Umbuzo othayiphiwe we-Parsed, imizila yomthumeli ezinkambu ezithayiphiwe, ukubuyiswa kwezikhala zekhophasi. Ichashazi elingaphakathi kwalowo mdwebo elinwetshwa yilo mngane: uma i-ParsedQuestion inenkambu eshodayo noma enokuthenjwa okuphansi, isistimu ingase (a) isho okumisiwe buthule, (b) yenqabe futhi ibuze umsebenzisi, (c) ikwenze kokubili ngenqubomgomo efundiwe. Inketho yesithathu iphethini yokukhiqiza. Lo mlingani uthumela inkontileka kanye nesibonelo somthengisi osebenzayo.
1. Imodi yokwehluleka i-athikili eyinhloko ikhuluma kuphela
Umbuzo wokuhlahlela isitini uhlanganisa indlela ejabulisayo. Izinhlobo zomsebenzisi “Iyini imali edonswa ku-Acme Premier?”umhlahleli wombuzo uhlonza ibhizinisi (Acme Premier), inhloso (ukubheka imali edonswayo), inkambu ye-schema okufanele igcwaliswe (inani_elidonswayo), kanye nemizila yomthumeli. Iningi lethrafikhi yokukhiqiza alihambisani nendlela ejabulisayo.
Ukwehluleka okuvamile, kunkontileka eyodwa elayishiwe, ngokuvama kuthrafikhi yomthengisi wangempela:
- Uhlobo lwenkambu engaqondakali: “uyini umkhawulo?”. Izinkontileka eziningi zinezimbalwa: umkhawulo wokukhava ngesenzeko ngasinye, umkhawulo ohlanganisiwe, umkhawulo ophansi wengozi ngayinye, isimangalo esidonswayo. Uhlelo kufanele luqagele ukuthi iyiphi.
- Ububanzi bekhasi abukho: “ithini?” embhalweni onamakhasi angama-200. Kuphi embhalweni, isifinyezo? okungafakwanga? uhlelo? Isistimu ingaphendula uma yazi ukuthi ibheke kuphi.
- Ububanzi bedethi obungaqondakali: “iyini imali edonswayo kukhava yokuqukethwe kwasekhaya?” kwinkontileka eneshejuli yakudala kanye nokugunyazwa kokuvuselela. Iyiphi ishejuli esebenzayo?
- Inhloso engaqondakali: “isigaba sewaranti”. Ifunde ukuze ucaphune isigatshana, usifingqe, noma ukhiphe imibandela? Indlela ngayinye isebenzisa izitini ezihlukene ezansi nomfula.
- Ibhizinisi elingacacile: “umnikazi wepholisi” esivumelwaneni esibala inkampani enomshwalense, ohlomulayo, kanye nesengeziwe esiqanjwe ngomshwalense. Iyiphi indima eshiwo umsebenzisi?
Konke kwalokhu kuwumbuzo omayelana nedokhumenti EYODWA umsebenzisi asevele eyiphinwe. Inguqulo yeleveli yekhophasi yokwehluleka okufanayo (yimuphi idokhumenti? iyiphi inqubomgomo kuphothifoliyo?) ihlala isendlalelo esisodwa phezulu futhi ithintwa ekupheleni kwesigaba sesi-6.
I-ParsedQuestion ethayiphiwe inezinkambu. Okushodayo yi- iluphu lokho kuyawagcwalisa lapho umsebenzisi engazange.
2. Inkontileka ye-Pydantic-schema emibili
Izinto ezimbili ezihlelekile zenza umsebenzi. Esokuqala ngu-a ClarificationRequest isistimu iyaphuma uma inkambu ivuliwe ParsedQuestion ingaphansi komkhawulo wokuzethemba. Owesibili ngu-a ClarificationDefault isistimu igcina ngemva kwesicelo ngasinye, ngakho umbuzo ofanayo olandelayo uphendulwa ngaphandle kokubuza.
from datetime import datetime
from pydantic import BaseModel, Field
class ClarificationRequest(BaseModel):
"""Emitted when a ParsedQuestion field is below confidence threshold."""
target_field: str # field on ParsedQuestion to fill
question_to_user: str # plain-English question to show
candidate_values: list[str] # values the system can propose
proposed_default: str | None = None # the value the system would pick
proposed_default_reason: str | None = None # one-sentence why
audit: dict = Field(default_factory=dict) # request_id, model, prompt_version
class ClarificationDefault(BaseModel):
"""The learned answer, refreshed across requests."""
target_field: str # which ParsedQuestion field
doctype: str # broker_contract, invoice, ...
sub_conditions: dict = Field(default_factory=dict) # stratifying keys
candidate_votes: dict[str, float] # value -> weighted vote count
confidence: float # 0..1, drives ask/apply decision
sample_size: int
last_refreshed: datetime
Into yokuqala yi- isicelo kumsebenzisi. Okwesibili yilokho uhlelo ifunda ezicelweni eziningingakho iyayeka ukubuza ezilula.
3. Isibonelo somthengisi osebenzayo
Iluphu yokucacisa ivutha kanye isicelohhayi kanye ngengxoxo ngayinye. Isicelo ngasinye esingezansi siwumcimbi ohlukile ngokuhamba kwesikhathi: umsebenzisi ulayisha inkontileka, abuze umbuzo owodwa, isistimu icela ukucaciselwa noma isebenzisa okuzenzakalelayo okufundiwe, izimpendulo zithunyelwa. Isicelo esilandelayo singaba ezinsukwini kamuva. Lokhu hhayi ingxoxo enamathuba amaningi (V2 Bonus B04 ihlanganisa leyo phethini ngokwehlukana).
Umsebenzisi ungumlungisi wesimangalo omncane kumthengisi. Ulayisha inkontileka entsha nezinhlobo “Ngabe ngiyaqinisekisa?” (ubani umshwalense?). Uhlelo lusingatha isicelo:
Ikesi 1 (okokuqala isistimu ibona lo msebenzisi / lolu hlobo lwenkontileka). ParsedQuestion's target_field ichaza njenge insurer_name. Isistimu ayinakho okuzenzakalelayo okufundiwe lapho ukubheka. Ivula isicelo sokucacisa:
Ngizobheka ekhasini 1, njengoba kulapho umshwalense evamise ukuqanjwa khona kwinkontileka yomdayisi. Ingabe isiqalo esifanele leso?
Umsebenzisi uyachofoza Yebo. Uhlelo lufunda ikhasi 1, luthola umshwalense, izimpendulo. A ClarificationDefault ibhaliwe: ngoba target_field = insurer_name ku doctype = broker_contractokuzenzakalelayo source_page = 1 ithola ivoti +1.
Icala lesi-2 (isonto kamuva, inkontileka ehlukile). Umumo wombuzo ofanayo: “Ubani umshwalense?”. Uhlelo lufunda okuzenzakalelayo okufundiwe. source_page = 1 kuwukuzenzakalelayo okunconyiwe ngokuzethemba okungu-0.78 kusuka ezimweni zangaphambili eziyi-12. Uhlelo lusebenzisa okumisiwe buthule futhi luphendule. Akukho ukucaciswa okuxoshiwe.
Icala 12 (inkontileka lapho ikhasi 1 liyi-coversheet, hhayi umzimba). Ikhasi 1 alinalo igama lomshwalense. Uhlelo luyafunda source_page = 1 kusuka kokuzenzakalelayo okufundiwe, kwehlulekile, ithola ukwehluleka (inkambu ye-schema ibuya ize), ibuyela ekubuzeni:
Ikhasi 1 alizange lisho igama lomshwalense kule nkontileka. Ingabe kufanele ngizame ithebula lokuqukethwe ukuze ngithole lapho liqanjwe khona, noma ufuna ukungikhomba ekhasini?
Umsebenzisi uthi zama i-TOC. Uhlelo lufunda i-TOC, luthola isigaba solwazi lomshwalense, ukubuyisa, izimpendulo. Okuzenzakalelayo okufundiwe manje sekuhluziwe: source_page = 1 ngezinkontileka zabathengi ne page_1_kind = body, source_page = TOC ngezinkontileka zabathengi ne page_1_kind = coversheet. Isihlukanisi se page_1_kind iyikholomu encane efundiwe.
4. Indlela yokufunda okuzenzakalelayo
Okumisiwe okufundiwe ithebula elincane, umugqa owodwa (target_field, doctype, sub-conditions ozikhethela). Umugqa ngamunye ulandelela amanani ekhandidethi isistimu ewazamile, amavoti omsebenzisi (u-Yebo ocacile / Cha, noma abekwe obala lapho umsebenzisi amukela impendulo ngaphandle kokulungiswa), kanye nebhendi yokuzethemba.
Imithetho yokubuyekeza:
- Isivumelwano somsebenzisi esisobala: umsebenzisi uchofoza Yebo kokumisiwe okuhlongozwayo. Ukunyuka kwesibalo samavoti okuzenzakalelayo. Ukuzethemba kuyenyuka.
- Ukwamukela okucacile: isistimu isebenzisa okuzenzakalelayo buthule, impendulo ilungile (isignali yokuhlola ezansi komfula kusukela kusendlalelo sokuhlola semodi yokwehluleka ngakunye), akukho ukulungisa engxoxweni. Ibalwa njengokuthambile +1.
- Ukungavumelani okusobala: umsebenzisi uthi Cha noma uyalungisa. Isibalo samavoti esizenzakalelayo senani elihlongozwayo lehla, ikhandidethi eliqanjwe umsebenzisi liyazuza.
- Ukutholwa kokwehluleka: inani lekhandidethi elizenzakalelayo libuyisela ize ku-schema. Ibalwa njengesignali yokuhlukanisa, hhayi ukwehliswa kwevoti, ngoba inani lingase lilungele izinkontileka ezithile futhi alilungile kwezinye.
Ukuzethemba kunquma ukuthi isistimu iyabuza noma iyasebenza. Ngaphansi kuka-0.6, hlala ubuza. Ngaphezulu kuka-0.85, sebenzisa njalo buthule. Phakathi, cela ngezikhathi ezithile ukuvuselela isignali.
from typing import Literal
from datetime import datetime
Signal = Literal["explicit_yes", "explicit_no", "implicit_ok", "failure"]
def update(default: ClarificationDefault, value: str, signal: Signal) -> ClarificationDefault:
"""One vote on a ClarificationDefault row, returns a new row."""
votes = dict(default.candidate_votes)
if signal == "explicit_yes": votes[value] = votes.get(value, 0) + 1.0
elif signal == "explicit_no": votes[value] = votes.get(value, 0) - 1.0
elif signal == "implicit_ok": votes[value] = votes.get(value, 0) + 0.5
# "failure": no vote change, only a stratification candidate
n_new = default.sample_size + 1
top = max(votes.values()) if votes else 0.0
confidence_new = max(0.0, top) / n_new
return default.model_copy(update={
"candidate_votes": votes,
"confidence": confidence_new,
"sample_size": n_new,
"last_refreshed": datetime.now(),
})
def gate(default: ClarificationDefault) -> Literal["apply", "ask_occasionally", "ask"]:
"""Per-row gate: confidence < 0.6 always asks; > 0.85 applies; in between, refresh."""
if default.confidence > 0.85: return "apply"
if default.confidence < 0.60: return "ask"
return "ask_occasionally"
Isiyalo esibalulekile: yonke incazelo eceliwe kanye nakho konke okusetshenziselwe iphutha kuwela endaweni yocwaningomabhuku. Ukucaciswa kuvutha njengomugqa kungqimba yesitoreji query_log (okuhambisana nombuzo womsebenzisi, inguqulo yemodeli, isinqumo sokuthumela). Uhlelo lokusebenza oluzenzakalelayo lurekhoda kokubili inani elizenzakalelayo elisetshenzisiwe kanye ne- ClarificationDefault Umazisi womugqa wethebula esitembuni sesikhathi sesicelo, ngakho impendulo yocwaningo iya ku “isistimu yafika kanjani empendulweni yokuthi ikhasi 1 laliyindawo efanelekile yokubheka?” i-SQL eyodwa yokujoyina. Ukuhlolwa kwemodi yokwehluleka ngakunye kufunda imigqa efanayo ukuze kubalwe ukunemba kwesicelo esizenzakalelayo sohlobo ngalunye lwedokhumenti.
5. Umngcele onamaphethini aseduze
Le iphethini yomngane i hhayi inkhulumomphendvulwano yezingxoxo eziningi ze-chatbot. Kuyincazelo eyodwa egxilile, ebuzwa kanye, bese uhlelo luphendula noma lufunde. Ingxoxo ayihambisani nokucacisa; i ufunde okuzenzakalelayo ithwala kuzo zonke izicelo.
Umngcele:
- Umbuzo wokuhlaziya isitini: ikhiqiza i-ParsedQuestion. Lo mlingani uphethe icala lapho i-ParsedQuestion inezinkambu zokuzithemba okuphansi.
- Isendlalelo se-corpus ontology: okuzenzakalelayo okufundiwe kuhlala eduze kwamathebula e-ontology. Uhlobo olusha lomugqa:
clarification_defaults_dfeduzeconcept_keywords_dfnabangane. I-ontology iyikhaya le-canonical: imingenelo eqoqwe ngochwepheshe ifakwe kuqala; okufakiwe okufundiwe kukhula eduze kwabo futhi kuyabuyekezwa. - Isendlalelo sesitoreji: imigqa yokucacisa kanye nemigqa yohlelo lokusebenza olumisiwe ihlanganiswe nayo
query_logngequestion_id. Akudingeki ingqalasizinda entsha yocwaningo. - Ukuhlolwa kwemodi yokwehluleka ngakunye: isethi ye-eval ihlanganisa ukucaciswa-izinga lomlilo kanye nokulunga-kwesicelo-okuzenzakalelayo-nenkambu ngayinye, ngohlobo ngalunye lwe-doc.
6. Okungakafakwa kulesi sihloko
Izinkinga ezintathu ezihlehlisiwe:
- Ukucaciswa kwezinkundla eziningi. Isibonelo lapha sibuza ngenkambu eyodwa engekho. Izimo zangempela zivame ukuba nezimbili (ibhizinisi KANYE nobubanzi, inhloso KANYE nenkambu). I-schema sikala kodwa i-UX yokubuza imibuzo emithathu ilandelana yimbi; indlela efanele iwukuhlanganisa nokwethula ifomu elincane. Ingaphandle kwendawo ye-v1 yalesi sihloko.
- Abasebenzisi be-Adversarial. Umsebenzisi ophendula ngokuthi Yebo kuyo yonke into uqeqesha okuzenzakalelayo okungalungile. Okuzenzakalelayo kudinga isiginali yesithunzi somsebenzisi ngamunye noma isibuyekezo seqembu ngezikhathi ezithile. Ivolumu yesi-4 (i-RAG ye-agent enokucwaninga) iphethe i-analogue yememori ye-ejenti ibhala; umumo ofanayo ulingana lapha.
- Ukwabelana okuzenzakalelayo kwabaqashi. Uma u-broker A kanye no-broker B bobabili behamba endaweni yesikhulumi, ingabe okuzenzakalelayo kwabo okufundiwe kwabiwa? Iphethini yokuhlukanisa abaqashi ithi cha ngokuzenzakalela. Isandiso sesikhathi esizayo singavumela ukwabelana kokuzenzakalelayo kweleveli ye-doctype okungancikile kudatha eqondene nomqashi.
7. Isiphetho
Umbuzo wokuhlahlela isitini ukhiqiza i-ParsedQuestion. Lo mngane uthumela iluphu egcwalisa izinkambu zayo ezingekho: i-Pydantic eyodwa ClarificationRequest ukubuza umsebenzisi, eyodwa Pydantic ClarificationDefault ukuze ufunde empendulweni, iluphu eyodwa emfushane enquma inkambu ngayinye ukuthi ibuze noma ifake isicelo buthule. Izindleko ama-schema amabili kanye nekholomu yethebula eyodwa. Inzuzo ukuthi uhlelo luyayeka ukubuza imibuzo elula futhi lubuze imibuzo engaqondakali kuphela.
Iluphu yokucacisa iphinde ihlanganyele nokubuyiswa: inani elizenzakalelayo elizethembayo linciphisa isikophu sokubuyisa ngaphambi kokuthi ukusesha kuqalise, ngokuvamile liyehlisa lisuka kusesho olubanzi liye ekubhekeni ikhasi elilodwa. Isistimu ehlanganisiwe yiyona eyenza i “Ubani umshwalense?” umbuzo ngesinyathelo esisodwa senkontileka uhlelo eseluyibone izikhathi eziningi.
Imithombo nokufunda okuqhubekayo
Iqondaniswe nendawo yalesi sihloko. Okuthunyelwe kwamaphethini edizayini yomenzeli we-Anthropic kuhlanganisa buza ngaphambi kokuqagela iphethini njengenye ye-canonical agetic primitives. Amadokhumenti e-OpenAI Assistants API afaka iphethini yokucacisa okuhlelekile ngaphansi kwe umsebenzi-ukubiza isihloko.
I-engeli ehlukile: Iningi lezinhlaka ze-chatbot zango-2026 zizenzakalela ukuya ekucabangeni okuthulile lapho inkambu ingekho, empikiswano yokuthi ukubuza kwehlisa isithunzi somsebenzisi. Isikhundla esithathwa ngumngane wakhe: ukucabanga buthule kulungile kuphela lapho okuzenzakalelayo okufundiwe kunokuzethemba kokukuthethelela. Ngaphandle kwethebula elifundiwe-okuzenzakalelayo, ukucabanga buthule kuwukuqagela nje. Ngaphambilini ochungechungeni:
- I-Document Intelligence: isingeniso sochungechunge. Lokho uchungechunge lwakha, isitini ngesitini, futhi ngaluphi uhlelo.
- I-Baseline Enterprise RAG, isuka ku-PDF iye empendulweni egqanyisiwe. Ipayipi elinezitini ezine liyaphela: I-PDF in, impendulo egqanyisiwe iphumile.
- Ukushumeka Akuwona Umlingo: Izindlela Zokwehluleka Okubikezelwayo Zokuthola I-RAG. Lapho ukushumeka okufanayo kuphumelela khona (amagama afanayo, ama-typos, i-paraphrase), lapho kwephuka khona ngokubikezelwa (amatemu angaziwa, ukuphika, ukuhambisana kwetemu-vs-impendulo), kanye nendlela yokuyisebenzisa noma kunjalo.
- Ama-Rerankers Akuwona Umlingo Nakuwo: Lapho Isendlalelo Se-Cross-Encoder Sizifanele Izindleko. Yeka isifaki khodi esiphambeneyo esingeza ngaphezu kokushumekiwe kwe-bi-encoder, kukalwa, futhi kufanele ukubambezeleka nini.
- I-RAG ayikona ukufunda ngomshini, futhi ikhithi yamathuluzi ye-ML ixazulula inkinga engalungile. Kungani kushanela usayizi we-chunk futhi kulungiswe kahle kuthuthukisa into engalungile; umzila ngohlobo lombuzo esikhundleni salokho.
- Ukusuka ku-regex kuye kumamodeli wombono: iyiphi inqubo ye-RAG efanelana nanoma iyiphi inkinga. Izimbazo ezimbili, inkimbinkimbi yedokhumenti nokulawulwa kwemibuzo, okukhetha indlela yecala ngalinye.
- 10 amaphutha ajwayelekile e-RAG esihlala siwabona ekukhiqizeni. Amaphutha okukhiqiza ayishumi, isitini esihleliwe ngesitini, esinokulungiswa ngakunye.
- Ngale kwe-extract_text: izendlalelo ezimbili ze-PDF ezishayela ikhwalithi ye-RAG. Ingxenye yokuqala yesitini esihlukanisayo: imvelo yedokhumenti, amasignali, nesifinyezo.
- Yeka ukubuyisela umbhalo oyisicaba ovela ku-PDF: i-RAG yomumo ohlobene idinga. Ingxenye yesibili yesitini esihlukanisayo: amatafula ahlobene zonke izitini ezingezansi ziyafundwa.



