એન્ટરપ્રાઇઝમાં Text-to-SQL કેમ નિષ્ફળ જાય છે

મોટાભાગના Text-to-SQL ડેમો ખૂબ જ સરળ હોય છે.

તેઓ સરળ સ્કીમા અને સ્પષ્ટ ટેબલના નામનો ઉપયોગ કરે છે. તેઓ માની લે છે કે એક અથવા બે ટેબલ સંપૂર્ણ રીતે જોડાયેલા છે. આ ડેમો માટે કામ કરે છે, પરંતુ વાસ્તવિક કંપનીમાં તે નિષ્ફળ જાય છે.

એન્ટરપ્રાઇઝ ડેટાબેઝમાં, અઘરો ભાગ SELECT ક્લોઝ નથી. અઘરો ભાગ 'join path' છે.

એક મોડેલ ગ્રાહક મુજબની આવક (revenue) માટે માન્ય ક્વેરી લખી શકે છે. SQL ચાલે છે. ડેશબોર્ડ આંકડા બતાવે છે. પરંતુ જવાબ ખોટો હોય છે.

આવું શા માટે થાય છે?

  • ગ્રાહકનું ટેબલ સત્તાવાર માસ્ટર લિસ્ટ નથી.
  • રેવન્યુ (revenue) ફિલ્ડ એ ફાઇનાન્સ દ્વારા મંજૂર કરાયેલ સંસ્કરણ નથી.
  • વિવિધ પ્રદેશોમાં રેકોર્ડ્સ ડુપ્લીકેટ છે.
  • જોઇન (join) કરવાથી fanout ભૂલો થાય છે.
  • નાણાકીય કેલેન્ડર (fiscal calendars) કેલેન્ડર વર્ષોથી અલગ હોય છે.

વ્યાકરણની દૃષ્ટિએ (syntactically) માન્ય ક્વેરી એ વિશ્વાસપાત્ર ક્વેરી નથી.

વાસ્તવિક પ્રોડક્શન સિસ્ટમ્સ અસ્તવ્યસ્ત હોય છે. તમારે મિસિંગ ફોરેન કી (foreign keys), લેગસી ટેબલ્સ અને વન-ટુ-મેની (one-to-many) રિલેશનશિપનો સામનો કરવો પડે છે જે આંકડાઓને વધારી દે છે. જો માણસો પણ કોઈ જોઇન પર વિશ્વાસ કરે, તો તેમણે જૂના રિપોર્ટ્સ તપાસવા પડે છે અથવા ફાઇનાન્સ વિભાગને પૂછવું પડે છે.

AI મોડેલ ફક્ત નામ અને કોલમ્સ જુએ છે. તે અનુમાન લગાવે છે. ક્યારેક આ અનુમાન જોખમી હોઈ શકે છે.

fanout વિશે વિચારો. જો તમે ઓર્ડર્સને ઓર્ડર લાઇન્સ સાથે અને પછી શિપમેન્ટ સાથે જોડો છો, તો એક ઓર્ડરની ગણતરી અનેક વખત થઈ શકે છે. SQL સાચું છે, પરંતુ પરિણામ ખોટું છે.

મેટાડેટા મદદ કરે છે, પરંતુ તે પૂરતું નથી. કોલમના નામ તમને એ નથી કહેતા કે કોઈ રિલેશનશિપ નાણાકીય રિપોર્ટિંગ માટે સુરક્ષિત છે કે નહીં. ફોરેન કીઝ ઐતિહાસિક અપવાદો સમજાવતી નથી.

Text-to-SQL ને રિલેશનશિપ ઇન્ટેલિજન્સની જરૂર છે.

એક વિશ્વસનીય સિસ્ટમ જાણવી જોઈએ:

  • ચોક્કસ વ્યવસાયિક પ્રશ્નો માટે મંજૂર થયેલા join paths.
  • રિલેશનશિપ કાર્ડિનાલિટી (Relationship cardinality).
  • જાણીતા fanout જોખમો.
  • કયા પાથ (paths) હવે વપરાશમાં નથી (deprecated).

ફક્ત કોડ લખવાને બદલે, સિસ્ટમે સુરક્ષા વિશે વિચારવું જોઈએ. જ્યારે પાથ અસ્પષ્ટ હોય ત્યારે તેણે વિશ્વાસપાત્ર પાથ પસંદ કરવો જોઈએ અથવા મદદ માંગવી જોઈએ.

વર્તમાન સિસ્ટમ્સમાં જે ખામી છે તે નામ મેપિંગથી SQL જનરેટ કરવા વચ્ચેનો મોટો તફાવત છે. તમારે રિલેશનશિપ કોન્ટેક્સ્ટ (relationship context) નો એક લેયર ઉમેરવો પડશે.

Text-to-SQL એ માત્ર ભાષાની સમસ્યા નથી. તે કોન્ટેક્સ્ટ (context) ની સમસ્યા છે.

જ્યાં સુધી મોડેલ્સ એ ન સમજે કે કયા જોઇન્સ સુરક્ષિત છે, ત્યાં સુધી તેઓ ડેમોમાં કામ કરશે પરંતુ પ્રોડક્શનમાં નિષ્ફળ જશે.

Source: https://dev.to/arisyndata/why-text-to-sql-breaks-when-the-join-path-is-not-obvious-3bk0

Optional learning community: https://t.me/GyaanSetuAi