મેં એક RAG એપ બનાવી, પછી તેને પૂછ્યું કે મને કઈ કાર ગમે છે. તેને ખબર નહોતી.
હું Kenning નામનું એક ડોક્યુમેન્ટ-ચેટ ટૂલ બનાવી રહ્યો છું. તે વપરાશકર્તાઓને અપલોડ કરેલી ફાઇલો વિશે પ્રશ્નો પૂછવા દેવા માટે RAG (Retrieval-Augmented Generation) નો ઉપયોગ કરે છે.
મેં આખી પાઇપલાઇન શૂન્યથી બનાવી છે:
- Java 21 અને Spring Boot
- Spring AI
- PostgreSQL સાથે pgvector
- Ollama (llama3.2:3b અને nomic-embed-text ચલાવી રહ્યું છે)
- Docker Compose
પાઇપલાઇન આ રીતે કામ કરે છે: ફાઇલ અપલોડ કરો → ટેક્સ્ટ એક્સટ્રેક્ટ કરો → ટેક્સ્ટના ચંક્સ (chunks) બનાવો → ચંક્સને વેક્ટરમાં રૂપાંતરિત કરો → pgvector માં સ્ટોર કરો → સમાન ચંક્સ શોધો → મોડેલને ચંક્સ + પ્રશ્ન મોકલો → સોર્સ સાથે જવાબ મેળવો.
સિસ્ટમ કામ કરતી હતી, પરંતુ મને બે અલગ-અલગ નિષ્ફળતાઓનો સામનો કરવો પડ્યો. તે દેખાવમાં સમાન હતા, પરંતુ તેના કારણો અલગ હતા.
નિષ્ફળતા 1: મોડેલ મૂંઝવણમાં હતું. મેં પૂછ્યું: "આ પ્રોજેક્ટ કયા એમ્બેડિંગ મોડેલનો ઉપયોગ કરે છે?" ડોક્યુમેન્ટમાં સ્પષ્ટપણે જવાબ લખેલો હતો. મોડેલે સાચો ટેક્સ્ટ મેળવ્યો હતો. જોકે, તેણે એવું કહીને જવાબ આપ્યો કે તેને ખબર નથી, ભલે પછીના વાક્યમાં તેણે સાચા મોડેલનું નામ ફરીથી લખ્યું હોય.
મારો સિદ્ધાંત: 3B મોડેલ ખૂબ નાનું છે. તેણે સાચો ડેટા મેળવ્યો પરંતુ તે આત્મવિશ્વાસ સાથે જવાબ આપી શક્યું નહીં. મોટું મોડેલ કદાચ આ સમસ્યા હલ કરી દેશે.
નિષ્ફળતા 2: મોડેલને કંઈ જ મળ્યું નહીં. મેં પૂછ્યું: "મને કઈ કાર બ્રાન્ડ ગમે છે?" ડોક્યુમેન્ટમાં ઉલ્લેખ હતો કે મને BMW ગમે છે. પરંતુ સિસ્ટમે શૂન્ય પરિણામો આપ્યા. સમાનતા સ્કોર (similarity score) મારા થ્રેશોલ્ડ કરતા ઘણો ઓછો હતો.
મારો સિદ્ધાંત: ચંક ડાયલ્યુશન (Chunk dilution). મારું ટેસ્ટ ડોક્યુમેન્ટ ટૂંકું હતું. તેમાં Spring AI, OAuth2 અને મારી કારની પસંદગી જેવા ઘણા વિષયો એક જ ચંકમાં મિક્સ થઈ ગયા હતા. તે ચંક માટેનો વેક્ટર આ તમામ વિષયોમાં વિખેરાઈ ગયો હતો. કાર વિશેના ચોક્કસ પ્રશ્નની તાકાત એક વ્યાપક ચંક સામે ઓછી થઈ ગઈ હતી. વધુ સારી ચંકિંગ સ્ટ્રેટેજી આ સમસ્યા હલ કરી શકે છે.
શીખેલા પાઠ:
- નાના મોડેલ્સની તર્ક કરવાની મર્યાદા હોય છે.
- સાધારણ ચંકિંગ (Naive chunking) રિટ્રાઇવલ ચોકસાઈને અસર કરે છે.
- માત્ર ભૂલ સુધારવા કરતાં "શા માટે" તે ભૂલ થઈ તેનું ડિબગિંગ કરવું વધુ મહત્વનું છે.
આર્કિટેક્ચર મજબૂત છે. તે ધીમું છે અને ક્યારેક ખોટું પણ છે, પરંતુ લૂપ પૂર્ણ છે.
Source: https://dev.to/mido-dev/i-built-a-rag-app-then-asked-it-what-car-i-like-it-didnt-know-583n
Optional learning community: https://t.me/GyaanSetuAi
