મેં RAG સાથે Code Q&A Bot બનાવ્યું: શું સફળ રહ્યું અને શું નિષ્ફળ ગયું
અમારા ડેવલપર્સ અમારા microservices ને સમજવા માટે Slack અને જૂના docs માં દિવસો સુધી શોધ કરતા હતા. મેં RAG નો ઉપયોગ કરીને આ પ્રશ્નોના જવાબ આપવા માટે એક chatbot બનાવવાનું નક્કી કર્યું.
આ પ્રક્રિયા દરમિયાન મેં ઘણી ભૂલો કરી. મેં જે શીખ્યું તે અહીં છે.
નિષ્ફળતાઓ
- મેં બધા docs ને એક જ prompt માં મૂકવાનો પ્રયાસ કર્યો. તેનાથી token limits વધી ગઈ, hallucinations થયા અને ખર્ચ પણ ઘણો વધી ગયો.
- મેં એક મૂળભૂત TF-IDF index નો ઉપયોગ કર્યો. જ્યારે વપરાશકર્તાઓએ સમાનાર્થી શબ્દો અથવા અલગ શબ્દોનો ઉપયોગ કર્યો ત્યારે તે નિષ્ફળ રહ્યો.
- મેં સાદા 500-character chunks નો પ્રયાસ કર્યો. પરિણામો અનિયમિત હતા કારણ કે chunks ઘણીવાર વાક્યની વચ્ચેથી કપાઈ જતા હતા.
ઉકેલ
મેં LLM ને search engine તરીકે લેવાનું બંધ કરી દીધું. મેં તેને સમર્પિત search index માટે reading engine માં બદલી નાખ્યું.
અહીં તે pipeline છે જે સફળ રહી:
- docs ને 50-token overlap સાથે 300-token ના ટુકડાઓ (chunks) માં વિભાજિત કરો.
- દરેક chunk ને vector માં embed કરો.
- vectors ને similarity search index માં સ્ટોર કરો.
- query સમયે, સૌથી વધુ સમાન 5 top chunks શોધો.
- જવાબ જનરેટ કરવા માટે LLM માં ફક્ત તે જ chunks આપો.
આ ફેરફારથી hallucinations માં 80% ઘટાડો થયો અને ખર્ચ ઘટીને પ્રતિ query $0.01 થી પણ ઓછો થઈ ગયો.
મુખ્ય બાબતો
- Chunk size અત્યંત મહત્વપૂર્ણ છે. 150 tokens ખૂબ ઓછો context છે. 1000 tokens ખૂબ વધારે noise છે. 300 tokens એ યોગ્ય સંતુલન (sweet spot) છે.
- Overlap અનિવાર્ય છે. તે chunks વચ્ચેનો context ગુમાવતા અટકાવે છે.
- ઝડપ માટે નાના models નો ઉપયોગ કરો. અમારી આંતરિક જરૂરિયાતો માટે એક નાનું embedding model સારી રીતે કામ કરી ગયું.
- તમારા retrieval ને ટેસ્ટ કરો. મેન્યુઅલ ચેક પર આધાર રાખશો નહીં. ચોકસાઈ માપવા માટે એક test set બનાવો.
RAG કોઈ જાદુ નથી. તે એક એન્જિનિયરિંગ પઝલ છે. જો તમારા chunks ખરાબ હશે, તો તમારું retrieval ખરાબ હશે. જો તમારું retrieval ખરાબ હશે, તો તમારા જવાબો ખરાબ હશે.
અમે હવે 80% onboarding પ્રશ્નોના સાચા જવાબો આપીએ છીએ. Slack પર કોઈ માણસના જવાબની રાહ જોવા કરતાં આ ઘણું ઝડપી છે.
તમે તમારા દસ્તાવેજો (documentation) માટે AI assistants કેવી રીતે બનાવો છો?
Optional learning community: https://t.me/GyaanSetuAi