Kwa Nini Programu Yangu ya RAG Iliendelea Kutoa Majibu ya Uongo na Jinsi Nilivyorekebisha
Miezi michache iliyopita, nilionyesha mfano wa bot yangu ya msaada ya RAG. Ilimwambia mfanyakazi mwenzangu kuwa sera yetu ya kurejeshewa fedha ni siku 30. Sera yetu halisi ni siku 14. Bot haikusita. Haikusema kuwa haijui. Ilitunga jibu kwa ujasiri mkubwa.
RAG inapaswa kupunguza majibu ya uongo (hallucinations). Mpangilio wangu ulihakikisha tu kuwa yalihamia sehemu nyingine. Nilijifunza mambo matano wakati nikitafuta makosa (debugging) kwenye mfumo huu.
Acha kutumia idadi maalum ya herufi kwa ajili ya vipande (chunks) Nilitumia vipande vya herufi 1000 vyenye mwingiliano kidogo. Hii ilisababisha matatizo. Kipande kimoja mara nyingi kilichanganya sheria za usafirishaji na sheria za kurudisha bidhaa. Model ilichanganya sehemu hizi tofauti na kutoa jibu moja lisilo sahihi. Suluhisho: Nilibadilisha na kutumia semantic chunking. Niligawanya data kwa kutumia vichwa vya habari na aya. Hii inafanya habari zinazohusiana kubaki pamoja.
Kufanana hakumaanishi kuhusika (relevance) Retriever yangu ilichagua vipande 3 vya juu kulingana na cosine similarity. Kipande kinaweza kuonekana kufanana na swali bila kuwa na jibu. Model inachukulia kuwa kila kitu kilicho kwenye muktadha (context) ni kweli. Suluhisho: Niliongeza hatua ya reranking kwa kutumia cross-encoder. Pia nilianza kurekodi (logging) alama za utafutaji (retrieval scores). Hii inaonyesha wakati mfumo unakosa jibu halisi.
Iambie model kuwa ni sawa kushindwa Maelekezo (prompt) yangu ya awali yalikuwa rahisi: Tumia muktadha kujibu swali. Haikuwa na maelekezo kwa model wakati muktadha unapokosekana. Model ilijaza mapengo kwa kukisia. Suluhisho: Niliongeza maelekezo maalum. Ikiwa jibu halipo kwenye muktadha, sema kuwa hujui. Majibu ya uongo yalipungua mara moja.
Weka kiwango cha chini cha utafutaji (retrieval threshold) Model bado ilitumia maarifa ya jumla wakati utafutaji uliposhindwa. Nilikuwa nikitumaini kuwa prompt ingefanya kazi, lakini tumaini siyo mkakati. Suluhisho: Niliweka kiwango kigumu cha alama (hard score threshold). Ikiwa alama ya juu ya utafutaji ni ndogo sana, mfumo unasimama. Unatoa ujumbe wa mbadala (fallback message) badala ya kuruhusu model ikisie.
Jaribu kwa ajili ya makosa, siyo mafanikio pekee Nilijaribu maswali rahisi tu ambayo nilijua nyaraka zilikuwa na majibu yake. Nilipuuza maswali yenye utata na habari zinazokosekana. Majibu ya uongo hupatikana katika mapengo hayo. Suluhisho: Nilijenga seti ya tathmini ya maswali ya mtego (trap questions). Hizi ni hali ambapo jibu sahihi halipo kwenye mfumo. Ninaendesha majaribio haya kila ninapofanya mabadiliko.
RAG hauzuia majibu ya uongo kabisa. Inayafanya yaweze kudhibitiwa. Bot yangu bado haijui kila kitu. Lakini sasa, inapokuwa na shaka, inasema hivyo. Hiyo inafanya zana hiyo itumike.
Chanzo: https://dev.to/pallavi_sharma_10c1a6f1da/why-my-rag-app-kept-hallucinating-and-how-i-fixed-it-3i10