জেনারেটিভ ডেটা ইন্টেলিজেন্স

জটিল প্রশ্নগুলি তৈরি করে, স্ব-সংশোধন করে, এবং বিভিন্ন ডেটা উত্স অনুসন্ধান করে একটি শক্তিশালী পাঠ্য থেকে এসকিউএল সমাধান তৈরি করুন | আমাজন ওয়েব সার্ভিসেস

তারিখ:

স্ট্রাকচার্ড কোয়েরি ল্যাঙ্গুয়েজ (SQL) হল একটি জটিল ভাষা যার জন্য ডেটাবেস এবং মেটাডেটা বোঝার প্রয়োজন। আজ, জেনারেটিভ এআই SQL জ্ঞান ছাড়া মানুষ সক্ষম করতে পারেন. এই জেনারেটিভ এআই টাস্কটিকে টেক্সট-টু-এসকিউএল বলা হয়, যা ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং (এনএলপি) থেকে এসকিউএল কোয়েরি তৈরি করে এবং টেক্সটকে শব্দার্থগতভাবে সঠিক এসকিউএল-এ রূপান্তর করে। এই পোস্টের সমাধানটি প্রাকৃতিক ভাষা ব্যবহার করে আপনার ডেটার পথকে ছোট করে এন্টারপ্রাইজ বিশ্লেষণ ক্রিয়াকলাপকে পরবর্তী স্তরে নিয়ে আসা।

বৃহৎ ভাষা মডেলের (এলএলএম) উত্থানের সাথে সাথে, এনএলপি-ভিত্তিক এসকিউএল প্রজন্মের একটি উল্লেখযোগ্য রূপান্তর ঘটেছে। ব্যতিক্রমী কর্মক্ষমতা প্রদর্শন করে, এলএলএম এখন প্রাকৃতিক ভাষার বর্ণনা থেকে সঠিক SQL প্রশ্ন তৈরি করতে সক্ষম। তবে, চ্যালেঞ্জগুলি এখনও রয়ে গেছে। প্রথমত, মানুষের ভাষা সহজাতভাবে অস্পষ্ট এবং প্রসঙ্গ-নির্ভর, যেখানে SQL সুনির্দিষ্ট, গাণিতিক এবং কাঠামোগত। এই ব্যবধানের ফলে তৈরি হওয়া SQL-এ ব্যবহারকারীর চাহিদার ভুল রূপান্তর হতে পারে। দ্বিতীয়ত, আপনাকে প্রতিটি ডাটাবেসের জন্য পাঠ্য-টু-এসকিউএল বৈশিষ্ট্যগুলি তৈরি করতে হতে পারে কারণ ডেটা প্রায়শই একটি একক লক্ষ্যে সংরক্ষণ করা হয় না। NLP-ভিত্তিক SQL প্রজন্মের সাথে ব্যবহারকারীদের সক্ষম করার জন্য আপনাকে প্রতিটি ডাটাবেসের জন্য ক্ষমতা পুনরায় তৈরি করতে হতে পারে। তৃতীয়ত, ডেটা লেক এবং গুদামগুলির মতো কেন্দ্রীভূত বিশ্লেষণ সমাধানগুলির বৃহত্তর গ্রহণ সত্ত্বেও, বিভিন্ন টেবিলের নাম এবং অন্যান্য মেটাডেটা নিয়ে জটিলতা বৃদ্ধি পায় যা পছন্দসই উত্সগুলির জন্য SQL তৈরি করতে প্রয়োজনীয়। অতএব, ব্যাপক এবং উচ্চ-মানের মেটাডেটা সংগ্রহ করাও একটি চ্যালেঞ্জ। টেক্সট-টু-এসকিউএল সেরা অনুশীলন এবং ডিজাইন প্যাটার্ন সম্পর্কে আরও জানতে, দেখুন এন্টারপ্রাইজ ডেটা থেকে মান তৈরি করা: Text2SQL এবং জেনারেটিভ এআই-এর জন্য সেরা অনুশীলন.

আমাদের সমাধান ব্যবহার করে সেই চ্যালেঞ্জ মোকাবেলা করার লক্ষ্য আমাজন বেডরক এবং AWS বিশ্লেষণ সেবা। আমরা ব্যাবহার করি নৃতাত্ত্বিক ক্লদ v2.1 আমাদের এলএলএম হিসাবে অ্যামাজন বেডরকে। চ্যালেঞ্জ মোকাবেলা করার জন্য, আমাদের সমাধান প্রথমে তথ্য উৎসের মেটাডেটা অন্তর্ভুক্ত করে এডাব্লুএস আঠালো ডেটা ক্যাটালগ জেনারেট করা এসকিউএল কোয়েরির যথার্থতা বাড়াতে। ওয়ার্কফ্লোতে একটি চূড়ান্ত মূল্যায়ন এবং সংশোধন লুপ অন্তর্ভুক্ত থাকে, যদি কোনো SQL সমস্যা দ্বারা চিহ্নিত করা হয় অ্যামাজন অ্যাথেনা, যা এসকিউএল ইঞ্জিন হিসাবে ডাউনস্ট্রিম ব্যবহার করা হয়। এথেনা আমাদের একটি ভিড় ব্যবহার করার অনুমতি দেয় সমর্থিত শেষ পয়েন্ট এবং সংযোগকারী ডেটা উত্সের একটি বড় সেট কভার করতে।

আমরা সমাধানটি তৈরি করার ধাপগুলি অতিক্রম করার পরে, আমরা বিভিন্ন এসকিউএল জটিলতার মাত্রা সহ কিছু পরীক্ষার পরিস্থিতির ফলাফল উপস্থাপন করি। পরিশেষে, আমরা আলোচনা করি যে আপনার SQL কোয়েরিতে বিভিন্ন ডেটা উৎসকে একত্রিত করা কিভাবে সহজ।

সমাধান ওভারভিউ

আমাদের আর্কিটেকচারে তিনটি গুরুত্বপূর্ণ উপাদান রয়েছে: ডেটাবেস মেটাডেটা সহ পুনরুদ্ধার অগমেন্টেড জেনারেশন (RAG), একটি বহু-পদক্ষেপ স্ব-সংশোধন লুপ এবং আমাদের SQL ইঞ্জিন হিসাবে অ্যাথেনা।

অনুরোধটি সঠিক টেবিল এবং ডেটাসেটের সাথে সম্পর্কিত তা নিশ্চিত করার জন্য আমরা AWS Glue মেটাস্টোর থেকে টেবিলের বিবরণ এবং স্কিমা বিবরণ (কলাম) পুনরুদ্ধার করতে RAG পদ্ধতি ব্যবহার করি। আমাদের সমাধানে, আমরা প্রদর্শনের উদ্দেশ্যে AWS আঠালো ডেটা ক্যাটালগের সাথে একটি RAG ফ্রেমওয়ার্ক চালানোর জন্য পৃথক পদক্ষেপগুলি তৈরি করেছি। তবে, আপনিও ব্যবহার করতে পারেন জ্ঞান বেস অ্যামাজন বেডরকে দ্রুত RAG সমাধান তৈরি করতে।

মাল্টি-স্টেপ কম্পোনেন্ট LLM কে নির্ভুলতার জন্য জেনারেট করা SQL কোয়েরি সংশোধন করতে দেয়। এখানে, সিনট্যাক্স ত্রুটির জন্য তৈরি করা SQL পাঠানো হয়। আমরা জেনারেট করা SQL-এ আরও সঠিক এবং কার্যকর সংশোধনের জন্য LLM-এর জন্য আমাদের প্রম্পটকে সমৃদ্ধ করতে অ্যাথেনা ত্রুটি বার্তা ব্যবহার করি।

আপনি মাঝে মাঝে এথেনা থেকে আসা ত্রুটির বার্তাগুলি যেমন প্রতিক্রিয়া বিবেচনা করতে পারেন৷ একটি ত্রুটি সংশোধন পদক্ষেপের খরচ প্রভাব বিতরণ করা মানের তুলনায় নগণ্য। এমনকি আপনি আপনার LLM গুলিকে সূক্ষ্ম-টিউন করার জন্য তত্ত্বাবধানে চাঙ্গা শেখার উদাহরণ হিসাবে এই সংশোধনমূলক পদক্ষেপগুলি অন্তর্ভুক্ত করতে পারেন। যাইহোক, আমরা সরলতার উদ্দেশ্যে আমাদের পোস্টে এই প্রবাহটি কভার করিনি।

মনে রাখবেন যে সবসময় ভুল থাকার অন্তর্নিহিত ঝুঁকি থাকে, যা স্বাভাবিকভাবেই জেনারেটিভ এআই সমাধানের সাথে আসে। এমনকি যদি এথেনা ত্রুটি বার্তাগুলি এই ঝুঁকি হ্রাস করার জন্য অত্যন্ত কার্যকর হয়, আপনি আরও নিয়ন্ত্রণ এবং দৃষ্টিভঙ্গি যোগ করতে পারেন, যেমন মানব প্রতিক্রিয়া বা ফাইন-টিউনিংয়ের জন্য উদাহরণের প্রশ্ন, এই ধরনের ঝুঁকিগুলিকে আরও কমিয়ে আনতে।

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

নিম্নলিখিত চিত্রটি সমাধানের স্থাপত্যকে চিত্রিত করে।

সমাধান আর্কিটেকচার এবং প্রক্রিয়া প্রবাহ দেখানো হয়.

চিত্র 1. সমাধান আর্কিটেকচার এবং প্রক্রিয়া প্রবাহ.

প্রক্রিয়া প্রবাহ নিম্নলিখিত পদক্ষেপগুলি অন্তর্ভুক্ত করে:

  1. AWS আঠালো ডেটা ক্যাটালগ তৈরি করুন একটি AWS আঠালো ক্রলার ব্যবহার করে (বা একটি ভিন্ন পদ্ধতি)।
  2. উপরের অ্যামাজন বেডরে টাইটান-টেক্সট-এম্বেডিং মডেল, মেটাডেটাকে এম্বেডিং-এ রূপান্তর করুন এবং একটিতে সংরক্ষণ করুন অ্যামাজন ওপেনসার্চ সার্ভারহীন ভেক্টর স্টোর, যা আমাদের RAG কাঠামোতে আমাদের জ্ঞানের ভিত্তি হিসাবে কাজ করে।

এই পর্যায়ে, প্রক্রিয়াটি স্বাভাবিক ভাষায় প্রশ্ন গ্রহণের জন্য প্রস্তুত। ধাপ 7-9 একটি সংশোধন লুপ প্রতিনিধিত্ব করে, যদি প্রযোজ্য হয়।

  1. ব্যবহারকারী স্বাভাবিক ভাষায় তাদের প্রশ্ন প্রবেশ করে। চ্যাট UI প্রদান করতে আপনি যেকোনো ওয়েব অ্যাপ্লিকেশন ব্যবহার করতে পারেন। অতএব, আমরা আমাদের পোস্টে UI বিবরণ কভার করিনি।
  2. সমাধানটি একটি RAG কাঠামোর মাধ্যমে প্রয়োগ করে মিল অনুসন্ধান, যা ভেক্টর ডাটাবেস থেকে মেটাডেটা থেকে অতিরিক্ত প্রসঙ্গ যোগ করে। এই টেবিলটি সঠিক টেবিল, ডাটাবেস এবং বৈশিষ্ট্যগুলি খুঁজে বের করার জন্য ব্যবহার করা হয়।
  3. প্রশ্নটি প্রসঙ্গটির সাথে একত্রিত করা হয়েছে এবং এতে পাঠানো হয়েছে৷ নৃতাত্ত্বিক ক্লদ v2.1 অ্যামাজন বেডরকে।
  4. মডেলটি জেনারেট করা এসকিউএল কোয়েরি পায় এবং সিনট্যাক্স যাচাই করতে এথেনার সাথে সংযোগ করে।
  5. যদি এথেনা একটি ত্রুটি বার্তা প্রদান করে যা উল্লেখ করে যে সিনট্যাক্সটি ভুল, মডেলটি এথেনার প্রতিক্রিয়া থেকে ত্রুটি পাঠ্য ব্যবহার করে।
  6. নতুন প্রম্পট এথেনার প্রতিক্রিয়া যোগ করে।
  7. মডেলটি সংশোধন করা SQL তৈরি করে এবং প্রক্রিয়াটি চালিয়ে যায়। এই পুনরাবৃত্তি একাধিক বার সঞ্চালিত করা যেতে পারে.
  8. অবশেষে, আমরা Athena ব্যবহার করে SQL চালাই এবং আউটপুট তৈরি করি। এখানে, আউটপুট ব্যবহারকারীর কাছে উপস্থাপন করা হয়। স্থাপত্যের সরলতার জন্য, আমরা এই পদক্ষেপটি দেখাইনি।

পূর্বশর্ত

এই পোস্টের জন্য, আপনাকে নিম্নলিখিত পূর্বশর্তগুলি পূরণ করতে হবে:

  1. একটি আছে এডাব্লুএস অ্যাকাউন্ট.
  2. ইনস্টল করুন দ্য এডাব্লুএস কমান্ড লাইন ইন্টারফেস (AWS CLI)।
  3. সেট আপ করুন পাইথনের জন্য SDK (Boto3).
  4. AWS আঠালো ডেটা ক্যাটালগ তৈরি করুন একটি AWS আঠালো ক্রলার ব্যবহার করে (বা একটি ভিন্ন পদ্ধতি)।
  5. উপরের অ্যামাজন বেডরে টাইটান-টেক্সট-এম্বেডিং মডেল, মেটাডেটাকে এম্বেডিং-এ রূপান্তর করুন এবং একটি OpenSearch Serverless এ সংরক্ষণ করুন ভেক্টর স্টোর.

সমাধান বাস্তবায়ন করুন

আপনি নিম্নলিখিত ব্যবহার করতে পারেন জুপিটার নোটবুক, যা সমাধান তৈরি করতে এই বিভাগে দেওয়া সমস্ত কোড স্নিপেট অন্তর্ভুক্ত করে। আমরা ব্যবহার করার পরামর্শ দিই অ্যামাজন সেজমেকার স্টুডিও পাইথন 3 (ডেটা সায়েন্স) কার্নেলের সাথে একটি ml.t3.medium ইন্সট্যান্স সহ এই নোটবুকটি খুলতে। নির্দেশাবলীর জন্য, পড়ুন একটি মেশিন লার্নিং মডেল প্রশিক্ষণ. সমাধান সেট আপ করতে নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:

  1. RAG ফ্রেমওয়ার্কের জন্য OpenSearch Service-এ জ্ঞানের ভিত্তি তৈরি করুন:
    def add_documnets(self,index_name: str,file_name:str):
    
    documents = JSONLoader(file_path=file_name, jq_schema='.', text_content=False, json_lines=False).load()
    docs = OpenSearchVectorSearch.from_documents(embedding=self.embeddings, opensearch_url=self.opensearch_domain_endpoint, http_auth=self.http_auth, documents=documents, index_name=index_name, engine="faiss")
    index_exists = self.check_if_index_exists(index_name,aws_region,opensearch_domain_endpoint,http_auth)
    if not index_exists :
    logger.info(f'index :{index_name} is not existing ')
    sys.exit(-1)
    else:
    logger.info(f'index :{index_name} Got created')

  2. প্রম্পট তৈরি করুন (final_question) প্রাকৃতিক ভাষায় ব্যবহারকারীর ইনপুট একত্রিত করে (user_query), ভেক্টর স্টোর থেকে প্রাসঙ্গিক মেটাডেটা (vector_search_match), এবং আমাদের নির্দেশাবলী (details):
    def userinput(user_query):
    logger.info(f'Searching metadata from vector store')
    
    # vector_search_match=rqst.getEmbeddding(user_query)
    vector_search_match = rqst.getOpenSearchEmbedding(index_name,user_query)
    
    # print(vector_search_match)
    details = "It is important that the SQL query complies with Athena syntax. 
    During join if column name are same please use alias ex llm.customer_id 
    in select statement. It is also important to respect the type of columns: 
    if a column is string, the value should be enclosed in quotes. 
    If you are writing CTEs then include all the required columns. 
    While concatenating a non string column, make sure cast the column to string. 
    For date columns comparing to string , please cast the string input."
    final_question = "nnHuman:"+details + vector_search_match + user_query+ "nnAssistant:"
    answer = rqst.generate_sql(final_question)
    return answer

  3. LLM (Claude v2) এর জন্য অ্যামাজন বেডরককে আহ্বান করুন এবং এটিকে SQL কোয়েরি তৈরি করতে অনুরোধ করুন। নিম্নলিখিত কোডে, এটি স্ব-সংশোধনের পদক্ষেপটি চিত্রিত করার জন্য একাধিক প্রচেষ্টা করে:x
    try:
    logger.info(f'we are in Try block to generate the sql and count is :{attempt + 1}')
    generated_sql = self.llm.predict(prompt)
    query_str = generated_sql.split("```")[1]
    query_str = " ".join(query_str.split("n")).strip()
    sql_query = query_str[3:] if query_str.startswith("sql") else query_str
    
    # return sql_query
    syntaxcheckmsg=rqstath.syntax_checker(sql_query)
    if syntaxcheckmsg=='Passed':
    logger.info(f'syntax checked for query passed in attempt number :{attempt + 1}')
    return sql_query

  4. জেনারেট করা এসকিউএল ক্যোয়ারীতে যদি কোনো সমস্যা পাওয়া যায় ({sqlgenerated}) এথেনা প্রতিক্রিয়া থেকে ({syntaxcheckmsg}), নতুন প্রম্পট (prompt) প্রতিক্রিয়ার উপর ভিত্তি করে তৈরি করা হয় এবং মডেলটি আবার নতুন SQL তৈরি করার চেষ্টা করে:
    else:
    prompt = f"""{prompt} 
    This is syntax error: {syntaxcheckmsg}.
    To correct this, please generate an alternative SQL query which will correct the syntax error. The updated query should take care of all the syntax issues encountered. Follow the instructions mentioned above to remediate the error.
    Update the below SQL query to resolve the issue:
    {sqlgenerated}
    Make sure the updated SQL query aligns with the requirements provided in the initial question."""
    prompts.append(prompt)

  5. এসকিউএল তৈরি হওয়ার পরে, অ্যাথেনা ক্লায়েন্টকে আউটপুট চালানো এবং জেনারেট করার জন্য আহ্বান জানানো হয়:
    query_execution = self.athena_client.start_query_execution(
    QueryString=query_string,
    ResultConfiguration=result_config,
    QueryExecutionContext=query_execution_context, )
    execution_id = query_execution["QueryExecutionId"]

সমাধান পরীক্ষা করুন

এই বিভাগে, আমরা SQL প্রশ্নের বিভিন্ন জটিলতা স্তর পরীক্ষা করার জন্য বিভিন্ন উদাহরণের সাথে আমাদের সমাধান চালাই।

আমাদের পাঠ্য থেকে এসকিউএল পরীক্ষা করতে, আমরা দুটি ব্যবহার করি IMDB থেকে উপলভ্য ডেটাসেট। IMDb ডেটার উপসেট ব্যক্তিগত এবং অ-বাণিজ্যিক ব্যবহারের জন্য উপলব্ধ। আপনি ডেটাসেটগুলি ডাউনলোড করতে পারেন এবং সেগুলি সংরক্ষণ করতে পারেন৷ আমাজন সিম্পল স্টোরেজ সার্ভিস (Amazon S3)। AWS গ্লুতে টেবিল তৈরি করতে আপনি নিম্নলিখিত স্পার্ক SQL স্নিপেট ব্যবহার করতে পারেন। এই উদাহরণের জন্য, আমরা ব্যবহার করি title_ratings এবং title:

source_title_ratings3_path = 's3://llm-athena-output/input_data/title.ratings.tsv'
target_title_s3_path='s3://llm-athena-output/output_data/imdb_stg/title_ratings'
source_titleratingdf=spark.read.csv(source_title_ratings3_path,sep="t",header=True)
source_titleratingdf.write.mode('overwrite').format('parquet').option('path', target_title_s3_path).saveAsTable('imdb_stg.title_ratings')

Amazon S3-এ ডেটা সঞ্চয় করুন এবং AWS Glue-এ মেটাডেটা

এই পরিস্থিতিতে, আমাদের ডেটাসেট একটি S3 বালতিতে সংরক্ষণ করা হয়। এথেনার একটি S3 সংযোগকারী রয়েছে যা আপনাকে আমাজন S3 একটি ডেটা উৎস হিসাবে ব্যবহার করতে দেয় যা জিজ্ঞাসা করা যেতে পারে.

আমাদের প্রথম প্রশ্নের জন্য, আমরা ইনপুট প্রদান করি "আমি এতে নতুন। আপনি কি আমাকে imdb স্কিমার সমস্ত টেবিল এবং কলাম দেখতে সাহায্য করতে পারেন?"

নিম্নলিখিতটি জেনারেট করা প্রশ্ন:

WITH tables AS (
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'imdb_stg'),
columns AS (
SELECT
c.table_name,
c.column_name,
c.data_type,
c.is_nullable,
c.column_default,
c.ordinal_position
FROM information_schema.columns c
WHERE c.table_schema = 'imdb_stg')
SELECT
t.table_name,
c.column_name,
c.data_type,
c.is_nullable,
c.column_default,
c.ordinal_position
FROM tables t
INNER JOIN columns c
ON t.table_name = c.table_name
ORDER BY
t.table_name,
c.ordinal_position
LIMIT 10;

নিম্নলিখিত স্ক্রিনশট এবং কোড আমাদের আউটপুট দেখায়।

IMBD ডেটাসেটের উদাহরণের বৈশিষ্ট্যগুলি দেখানো সারণী।

table_name column_name data_type
0 title titleid varchar
1 title ordering integer
2 title title varchar
3 title region varchar
4 title language varchar

আমাদের দ্বিতীয় প্রশ্নের জন্য, আমরা জিজ্ঞাসা করি "আমাকে মার্কিন অঞ্চলের সমস্ত শিরোনাম এবং বিবরণ দেখান যার রেটিং 9.5 এর বেশি।"

নিম্নলিখিত আমাদের জেনারেট করা প্রশ্ন:

WITH us_titles AS (
SELECT t.title, t.region, tr.averageRating, tr.numVotes
FROM imdb_stg.title t
INNER JOIN imdb_stg.title_ratings tr
ON t.titleId = tr.tconst
WHERE t.region = 'US' AND cast(tr.averageRating as varchar) > '9.5'
)
SELECT title, region, averageRating, numVotes
FROM us_titles
LIMIT 100;

প্রতিক্রিয়া নিম্নরূপ.

sql কোয়েরির ফলাফল দেখানো একটি টেবিল

title region averageRating numVotes
0 The Way You Saw Me US 9.7 8
1 The Brother Side of the Wake US 9.6 20
2 Ignis Fatuus US 9.6 11
3 Love and Hip Hop Atlanta US 9.9 11
4 ronny/lily US 9.7 14781

আমাদের তৃতীয় প্রশ্নের জন্য, আমরা লিখি "দারুণ প্রতিক্রিয়া! এখন আমাকে 7.5-এর বেশি রেটিং সহ সমস্ত মূল ধরণের শিরোনাম দেখান এবং মার্কিন অঞ্চলে নয়।"

নিম্নলিখিত প্রশ্ন তৈরি করা হয়:

WITH titles AS (
SELECT t.titleId,
t.title,
t.types,
t.isOriginalTitle,
cast(tr.averageRating as decimal(3,1)) as averageRating,
tr.numVotes,
t.region
FROM imdb_stg.title t
INNER JOIN imdb_stg.title_ratings tr
ON t.titleId = tr.tconst
WHERE t.isOriginalTitle = '1'
AND cast(tr.averageRating as decimal(3,1)) > 7.5
AND t.region != 'US')
SELECT *
FROM titles
LIMIT 100;

আমরা নিম্নলিখিত ফলাফল পেতে.

একটি একক সারি SQL কোয়েরির ফলাফল দেখাচ্ছে।

titleId title types isOriginalTitle averageRating numVotes region
0 tt0986264 Taare Zameen Par original 1 8.3 203760 XWW

স্ব-সংশোধিত এসকিউএল তৈরি করুন

এই দৃশ্যটি একটি SQL কোয়েরি অনুকরণ করে যাতে সিনট্যাক্স সমস্যা রয়েছে। এখানে, অ্যাথেনার প্রতিক্রিয়ার উপর ভিত্তি করে তৈরি করা SQL স্ব-সংশোধিত হবে। নিম্নলিখিত প্রতিক্রিয়া, এথেনা একটি দিয়েছেন COLUMN_NOT_FOUND ত্রুটি এবং উল্লেখ করা হয়েছে যে table_description সমাধান করা যাবে না:

Status : {'State': 'FAILED', 'StateChangeReason': "COLUMN_NOT_FOUND: line 1:50: Column 'table_description' 
cannot be resolved or requester is not authorized to access requested resources",
'SubmissionDateTime': datetime.datetime(2024, 1, 14, 14, 38, 57, 501000, tzinfo=tzlocal()),
'CompletionDateTime': datetime.datetime(2024, 1, 14, 14, 38, 57, 778000, tzinfo=tzlocal()),
'AthenaError': {'ErrorCategory': 2, 'ErrorType': 1006, 'Retryable': False, 'ErrorMessage': "COLUMN_NOT_FOUND: 
line 1:50: Column 'table_description' cannot be resolved or requester is not authorized to 
access requested resources"}}
COLUMN_NOT_FOUND: line 1:50: Column 'table_description' cannot be resolved or requester is not authorized to access requested resources
Try Count: 2
2024-01-14 14:39:02,521,llm_execute,MainProcess,INFO,Try Count: 2
we are in Try block to generate the sql and count is :2
2024-01-14 14:39:02,521,llm_execute,MainProcess,INFO,we are in Try block to generate the sql and count is :2
Executing: Explain WITH tables AS ( SELECT table_name FROM information_schema.tables WHERE table_schema = 'imdb_stg' ), columns AS ( SELECT c.table_name, c.column_name, c.data_type, c.is_nullable, c.column_default, c.ordinal_position FROM information_schema.columns c WHERE c.table_schema = 'imdb_stg' ) SELECT t.table_name, c.column_name, c.data_type, c.is_nullable, c.column_default, c.ordinal_position FROM tables t INNER JOIN columns c ON t.table_name = c.table_name ORDER BY t.table_name, c.ordinal_position LIMIT 10;
I am checking the syntax here
execution_id: 904857c3-b7ac-47d0-8e7e-6b9d0456099b
Status : {'State': 'SUCCEEDED', 'SubmissionDateTime': datetime.datetime(2024, 1, 14, 14, 39, 29, 537000, tzinfo=tzlocal()), 'CompletionDateTime': datetime.datetime(2024, 1, 14, 14, 39, 30, 183000, tzinfo=tzlocal())}
syntax checked for query passed in tries number :2

অন্যান্য ডেটা উত্সের সাথে সমাধান ব্যবহার করা

অন্যান্য ডেটা উত্সের সাথে সমাধানটি ব্যবহার করতে, অ্যাথেনা আপনার জন্য কাজ পরিচালনা করে। এটি করার জন্য, এথেনা ব্যবহার করে তথ্য উৎস সংযোগকারী যে সঙ্গে ব্যবহার করা যেতে পারে ফেডারেটেড প্রশ্ন. আপনি এথেনা কোয়েরি ইঞ্জিনের এক্সটেনশন হিসাবে একটি সংযোগকারীকে বিবেচনা করতে পারেন। প্রাক-নির্মিত এথেনা ডেটা উত্স সংযোগকারী যেমন ডেটা উত্সের জন্য বিদ্যমান অ্যামাজন ক্লাউডওয়াচ লগস, আমাজন ডায়নামোডিবি, আমাজন ডকুমেন্টডিবি (মঙ্গোডিবি সামঞ্জস্য সহ), এবং অ্যামাজন রিলেশনাল ডাটাবেস পরিষেবা (Amazon RDS), এবং Apache 2.0 লাইসেন্সের অধীনে JDBC- অনুগত রিলেশনাল ডেটা উৎস যেমন MySQL, এবং PostgreSQL। আপনি যেকোনো ডেটা উৎসের সাথে একটি সংযোগ সেট আপ করার পরে, আপনি সমাধানটি প্রসারিত করতে পূর্ববর্তী কোড বেস ব্যবহার করতে পারেন। আরো তথ্যের জন্য, পড়ুন Amazon Athena-এর নতুন ফেডারেটেড ক্যোয়ারী সহ যেকোন ডেটা সোর্স কোয়েরি করুন.

পরিষ্কার কর

সম্পদ পরিষ্কার করতে, আপনি শুরু করতে পারেন আপনার S3 বালতি পরিষ্কার করা হচ্ছে যেখানে ডেটা থাকে। আপনার অ্যাপ্লিকেশান অ্যামাজন বেডরককে আমন্ত্রণ না করলে, এটির কোনো খরচ হবে না। অবকাঠামো পরিচালনার সর্বোত্তম অনুশীলনের জন্য, আমরা এই প্রদর্শনীতে তৈরি সংস্থানগুলি মুছে ফেলার পরামর্শ দিই।

উপসংহার

এই পোস্টে, আমরা একটি সমাধান উপস্থাপন করেছি যা আপনাকে অ্যাথেনা দ্বারা সক্ষম বিভিন্ন সংস্থান সহ জটিল SQL কোয়েরি তৈরি করতে NLP ব্যবহার করতে দেয়। আমরা ডাউনস্ট্রিম প্রসেস থেকে ত্রুটি বার্তার উপর ভিত্তি করে বহু-পদক্ষেপ মূল্যায়ন লুপের মাধ্যমে জেনারেট করা SQL কোয়েরির যথার্থতাও বাড়িয়েছি। উপরন্তু, আমরা AWS Glue Data Catalog-এ মেটাডেটা ব্যবহার করেছি RAG ফ্রেমওয়ার্কের মাধ্যমে প্রশ্নে জিজ্ঞাসা করা টেবিলের নাম বিবেচনা করতে। তারপরে আমরা বিভিন্ন প্রশ্নের জটিলতার স্তর সহ বিভিন্ন বাস্তবসম্মত পরিস্থিতিতে সমাধানটি পরীক্ষা করেছি। অবশেষে, আমরা আলোচনা করেছি কিভাবে এথেনা দ্বারা সমর্থিত বিভিন্ন ডেটা উৎসে এই সমাধানটি প্রয়োগ করা যায়।

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


লেখক সম্পর্কে

সঞ্জীব পান্ডা অ্যামাজনে একজন ডেটা এবং এমএল ইঞ্জিনিয়ার। AI/ML, ডেটা সায়েন্স এবং বিগ ডেটার পটভূমিতে, সঞ্জীব উদ্ভাবনী ডেটা এবং এমএল সমাধানগুলি ডিজাইন এবং বিকাশ করে যা জটিল প্রযুক্তিগত চ্যালেঞ্জগুলি সমাধান করে এবং বিশ্বব্যাপী 3P বিক্রেতাদের Amazon-এ তাদের ব্যবসা পরিচালনা করার জন্য কৌশলগত লক্ষ্য অর্জন করে। অ্যামাজনে ডেটা এবং এমএল ইঞ্জিনিয়ার হিসাবে তার কাজের বাইরে, সঞ্জীব পান্ডা একজন উত্সাহী ভোজনরসিক এবং সংগীত উত্সাহী।

বুরাক গোজলুকলু বোস্টন, এমএ-তে অবস্থিত একজন প্রিন্সিপাল এআই/এমএল স্পেশালিস্ট সলিউশন আর্কিটেক্ট। তিনি কৌশলগত গ্রাহকদের তাদের ব্যবসায়িক লক্ষ্য অর্জনের জন্য AWS প্রযুক্তি এবং বিশেষ করে জেনারেটিভ এআই সমাধান গ্রহণ করতে সহায়তা করেন। বুরাকের METU থেকে অ্যারোস্পেস ইঞ্জিনিয়ারিংয়ে পিএইচডি, সিস্টেম ইঞ্জিনিয়ারিংয়ে এমএস এবং কেমব্রিজে এমআইটি থেকে সিস্টেম ডাইনামিক্সে পোস্ট-ডক, এমএ। বুরাক এখনও এমআইটিতে একটি গবেষণা অনুমোদিত। বুরাক যোগব্যায়াম এবং ধ্যান সম্পর্কে উত্সাহী।

স্পট_আইএমজি

সর্বশেষ বুদ্ধিমত্তা

স্পট_আইএমজি