কেন এন্টারপ্রাইজ পরিবেশে Text-to-SQL ব্যর্থ হয়

বেশিরভাগ Text-to-SQL ডেমো খুব বেশি পরিচ্ছন্ন।

এগুলো সহজ স্কিমা এবং স্পষ্ট টেবিল নাম ব্যবহার করে। এগুলো ধরে নেয় যে এক বা দুটি টেবিল নিখুঁতভাবে সংযুক্ত। এটি একটি ডেমোর জন্য কাজ করলেও একটি বাস্তব কোম্পানিতে ব্যর্থ হয়।

এন্টারপ্রাইজ ডেটাবেসে, কঠিন অংশটি SELECT clause নয়। কঠিন অংশটি হলো join path।

একটি মডেল কাস্টমার অনুযায়ী রেভিনিউ বের করার জন্য একটি সঠিক কুয়েরি লিখতে পারে। SQL রান করে। ড্যাশবোর্ডে সংখ্যা দেখায়। কিন্তু উত্তরটি ভুল হয়।

কেন এমন হয়?

  • কাস্টমার টেবিলটি অফিসিয়াল মাস্টার লিস্ট নয়।
  • রেভিনিউ ফিল্ডটি ফিন্যান্স-অনুমোদিত সংস্করণ নয়।
  • বিভিন্ন অঞ্চলে রেকর্ডগুলো ডুপ্লিকেট বা পুনরাবৃত্ত অবস্থায় থাকে।
  • join করার ফলে fanout error তৈরি হয়।
  • ফিসকাল ক্যালেন্ডার সাধারণ ক্যালেন্ডার বছরের চেয়ে আলাদা হয়।

সিনট্যাক্টিক্যালি সঠিক একটি কুয়েরি মানেই সেটি নির্ভরযোগ্য কুয়েরি নয়।

বাস্তব প্রোডাকশন সিস্টেমগুলো বেশ জটিল। আপনি মিসিং foreign keys, legacy tables এবং one-to-many relationship-এর সম্মুখীন হবেন যা সংখ্যা বাড়িয়ে দেখায়। এমনকি মানুষও একটি join-এর ওপর ভরসা করার আগে পুরনো রিপোর্ট চেক করে বা ফিন্যান্স বিভাগকে জিজ্ঞাসা করে।

একটি AI মডেল কেবল নাম এবং কলামগুলো দেখে। এটি অনুমান করে। মাঝে মাঝে এই অনুমান বিপজ্জনক হতে পারে।

fanout-এর কথা ভাবুন। আপনি যদি orders-কে order lines-এর সাথে এবং তারপর shipments-এর সাথে join করেন, তবে একটি order একাধিকবার গণনা হতে পারে। SQL সঠিক হলেও ফলাফল ভুল হয়।

Metadata সাহায্য করে, কিন্তু তা যথেষ্ট নয়। কলামের নাম দেখে বোঝা যায় না যে কোনো রিলেশনশিপ ফিন্যান্সিয়াল রিপোর্টিংয়ের জন্য নিরাপদ কি না। Foreign keys ঐতিহাসিক ব্যতিক্রমগুলো ব্যাখ্যা করে না।

Text-to-SQL-এর জন্য relationship intelligence প্রয়োজন।

একটি নির্ভরযোগ্য সিস্টেমকে অবশ্যই জানতে হবে:

  • নির্দিষ্ট ব্যবসায়িক প্রশ্নের জন্য অনুমোদিত join paths।
  • Relationship cardinality।
  • পরিচিত fanout ঝুঁকি।
  • কোন পথগুলো deprecated করা হয়েছে।

শুধু কোড লেখার পরিবর্তে, সিস্টেমটির নিরাপত্তার বিষয়ে যুক্তি দেওয়া উচিত। পথগুলো অস্পষ্ট হলে এটি নির্ভরযোগ্য পথ বেছে নেওয়া উচিত বা সাহায্য চাওয়া উচিত।

বর্তমান সিস্টেমগুলোর ঘাটতি হলো নাম ম্যাপিং থেকে SQL জেনারেট করার মধ্যকার বিশাল ব্যবধান। আপনাকে রিলেশনশিপ কনটেক্সটের একটি স্তর যোগ করতে হবে।

Text-to-SQL কেবল একটি ভাষার সমস্যা নয়। এটি একটি কনটেক্সট বা প্রেক্ষাপটের সমস্যা।

মডেলগুলো কোন join নিরাপদ তা না বোঝা পর্যন্ত, সেগুলো ডেমোতে কাজ করলেও প্রোডাকশনে ব্যর্থ হবে।

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