paint-brush
কীভাবে ডেটা-চালিত এআই অ্যাপস ডেভেলপ করবেন: ডাটাবেস থেকে সরাসরি এআই পরিষেবা তৈরি করার জন্য একটি নির্দেশিকাদ্বারা@paulparkinson
1,801 পড়া
1,801 পড়া

কীভাবে ডেটা-চালিত এআই অ্যাপস ডেভেলপ করবেন: ডাটাবেস থেকে সরাসরি এআই পরিষেবা তৈরি করার জন্য একটি নির্দেশিকা

দ্বারা Paul Parkinson9m2024/01/07
Read on Terminal Reader

অতিদীর্ঘ; পড়তে

এই ব্লগটি ডেটা-চালিত AI অ্যাপ্লিকেশন আর্কিটেকচারের জন্য একটি অপ্টিমাইজড পদ্ধতির বর্ণনা করে যেখানে AI কলগুলি সরাসরি ওরাকল ভেক্টর ডাটাবেস থেকে করা হয়।
featured image - কীভাবে ডেটা-চালিত এআই অ্যাপস ডেভেলপ করবেন: ডাটাবেস থেকে সরাসরি এআই পরিষেবা তৈরি করার জন্য একটি নির্দেশিকা
Paul Parkinson HackerNoon profile picture
0-item

যেহেতু AI পরিষেবাগুলি এবং তারা যে ডেটা ব্যবহার করে এবং তৈরি করে তা বিভিন্ন অ্যাপ্লিকেশন এবং প্রক্রিয়াগুলিতে আরও গুরুত্বপূর্ণ এবং প্রচলিত হয়ে ওঠে, তাই তারা যে প্ল্যাটফর্ম এবং আর্কিটেকচারগুলি তৈরি করে তা করে। যথারীতি, এখানে "একটি মাপ সব ফিট" নেই, তবে এখানে সংক্ষেপে যা উপস্থাপন করা হয়েছে তা হল এই ধরনের ডেটা-চালিত এআই অ্যাপ্লিকেশন আর্কিটেকচারের জন্য একটি অপ্টিমাইজ করা পদ্ধতি।


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


প্রায়শই, একটি প্রদত্ত AI অ্যাপে একাধিক নেটওয়ার্ক কল করতে হয়, যাতে AI পরিষেবাগুলিতে কল করা হয় এবং সেইসাথে সামগ্রীটি পুনরুদ্ধার এবং বজায় রাখার জন্য কল করা হয় (সেটি পাঠ্য, অডিও, ছবি, ভিডিও, ইত্যাদি) যা ইনপুট বা আউটপুট ক্রমাগত তথ্য প্রায়শই প্রক্রিয়া করা হয় এবং আরও বিশ্লেষণ করা হয় এবং অতিরিক্ত কল, এআই বা অন্যথায়, প্রতিক্রিয়া হিসাবে করা হয়।


ওরাকল ডাটাবেস অন্যান্য পরিষেবাগুলিতে কল করার ক্ষমতা প্রদান করে, আবার এআই এবং অন্যথায়, সেগুলি ওরাকল ক্লাউডের মধ্যেই হোক বা বাহ্যিক।


কলগুলি ডাটাবেস থেকেই তৈরি করা হলে, এটি বিভিন্ন সুবিধা সহ একটি অপ্টিমাইজ করা আর্কিটেকচার প্রদান করে:


  1. নেটওয়ার্ক কল হ্রাস, এইভাবে লেটেন্সি হ্রাস.


  2. নেটওয়ার্ক কল হ্রাস, এইভাবে, নির্ভরযোগ্যতা বৃদ্ধি.


  3. AI এবং অন্যান্য ডেটা (এবং এমনকি TxEventQ ব্যবহার করার সময় বার্তাপ্রেরণ) লেনদেন সংক্রান্ত (ACID) অপারেশন যা অদম্য/সদৃশ প্রসেসিং লজিক, ইত্যাদির প্রয়োজনীয়তা এড়ায় এবং সেখানে সম্পর্কিত নষ্ট সম্পদ।


  4. প্রসেসিং অপ্টিমাইজেশান ডেটার স্থানীয়তার কারণে হয় যে ডেটা সরাসরি ডাটাবেসে বা কোনও বস্তুর দোকানে বা অন্য উত্সে সংরক্ষণ করা হয়। এর কারণ হল ওরাকল ডাটাবেস অন্যথায় ডাম্ব অবজেক্ট স্টোরেজ বালতিগুলির জন্য একটি শক্তিশালী কার্যকরী ফ্রন্টএন্ড প্রদান করে, এবং ডাটাবেসটি অবজেক্ট স্টোর এবং অন্যান্য ডেটা উত্সগুলিতে ডেটা সিঙ্ক বা সর্বোত্তমভাবে পরিচালনা করার জন্য অনেকগুলি বিকল্প সরবরাহ করে।


  5. একটি সাধারণ প্রমাণীকরণ প্রক্রিয়া এবং একটি বিখ্যাতভাবে শক্তিশালী ডাটাবেস এবং ক্লাউড নিরাপত্তা পরিকাঠামোর পুনঃব্যবহারের কারণে উন্নত নিরাপত্তা।


  6. একটি কেন্দ্রীয় অবস্থান থেকে কল করা হয় হিসাবে সামগ্রিক কনফিগারেশন হ্রাস. ডাটাবেসের এন্ট্রি পয়েন্টটি একটি রেস্ট এন্ডপয়েন্ট হিসাবে (ORDS ব্যবহার করে) একক ক্লিকে প্রকাশ করা যেতে পারে এবং অবশ্যই, ডাটাবেস অ্যাক্সেস করতে বিভিন্ন ভাষায় ড্রাইভার ব্যবহার করা যেতে পারে।


  7. ভেক্টর ডাটাবেসের সুবিধা। এই বিষয়টি নিজেই একটি ব্লগ, এবং আমি একটি ফলো-অন হিসাবে প্রকাশ করব বিশেষ করে যেমন ওরাকল এই এলাকায় বেশ কয়েকটি শক্তিশালী বৈশিষ্ট্য যুক্ত করছে।


  8. ওরাকল ডাটাবেস মেশিন লার্নিং। বিভিন্ন এআই পরিষেবার পাশাপাশি, ওরাকল ডাটাবেসে অনেক বছর ধরে একটি মেশিন-লার্নিং ইঞ্জিন রয়েছে। OML ML লাইফসাইকেলকে স্ট্রীমলাইন করে, স্কেলযোগ্য SQL, R, Python, REST, AutoML, এবং নো-কোড টুল দিয়ে 30 টিরও বেশি ইন-ডেটাবেস অ্যালগরিদম প্রদান করে, ডাটাবেসে সরাসরি ডেটা প্রক্রিয়াকরণের মাধ্যমে ডেটা সিঙ্ক্রোনাইজেশন এবং নিরাপত্তা বাড়ায়।


  9. ওরাকল স্বায়ত্তশাসিত ডেটাবেস। AI নির্বাচন করুন যা প্রাকৃতিক ভাষা ব্যবহার করে ডেটা অনুসন্ধান করতে এবং আপনার ডাটাবেসের জন্য নির্দিষ্ট SQL তৈরি করতে সক্ষম করে।


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


    এই নতুন ক্ষমতাগুলি আরএজি (পুনরুদ্ধার অগমেন্টেড জেনারেশন) সমর্থন করে যা উচ্চতর নির্ভুলতা প্রদান করে এবং এলএলএম প্রশিক্ষণ ডেটাতে এটি অন্তর্ভুক্ত করে ব্যক্তিগত ডেটা প্রকাশ করা এড়ায়।


আবার, অনেকগুলি ভিন্ন AI অ্যাপ্লিকেশন প্রবাহ এবং প্রয়োজনীয়তা রয়েছে, তবে দুটি পদ্ধতির একটি মৌলিক তুলনা নিম্নলিখিত উপায়ে কল্পনা করা যেতে পারে:

কোড

ডাটাবেসে বিভিন্ন ভাষা চালানো সম্ভব, এটি সেখানে বিভিন্ন অ্যাপ্লিকেশন লজিক পরিচালনা করা সম্ভব করে। এর মধ্যে রয়েছে Java, JavaScript এবং PL/SQL। PL/SQL উদাহরণগুলি এখানে দেওয়া হয়েছে, এবং সেগুলি OCI কনসোলের ডেটাবেস অ্যাকশন -> SQL পৃষ্ঠা থেকে, SQLcl কমান্ড লাইন টুল থেকে (যা OCI ক্লাউড শেলে আগে থেকে ইনস্টল করা আছে বা ডাউনলোড করা যেতে পারে), থেকে চালানো যেতে পারে SQLDeveloper, VS Code (যেখানে ওরাকলের একটি সুবিধাজনক প্লাগইন আছে) ইত্যাদি।


এআই এবং অন্যান্য পরিষেবাগুলিতে কল করার কিছু উপায়ও রয়েছে। ডাটাবেসের UTL_HTTP প্যাকেজ ব্যবহার করে স্ট্যান্ডার্ড রেস্ট কল করা বা JavaScript থেকে আনা ইত্যাদি হল একটি পদ্ধতি। যদি AI পরিষেবাগুলি ওসিআই (ওরাকল ক্লাউড) এর মধ্যে চলে, তবে ওসিআই SDKগুলি, যা সমস্ত প্রধান ভাষার জন্য লেখা হয়, ব্যবহার করা যেতে পারে।


আমি সব OCI পরিষেবা কলের জন্য DBMS_CLOUD.send_request প্যাকেজের ব্যবহার (উদাহরণস্বরূপ, আরও নির্দিষ্ট OCI SDK কল যেমন DBMS_CLOUD_OCI_AIV_AI_SERVICE_VISION) সবচেয়ে সহজ এবং সবচেয়ে গতিশীল পদ্ধতির জন্য ব্যবহার করি।


আমরা একটি শংসাপত্র তৈরি করে শুরু করি যা আমাদের সমস্ত ক্লাউড পরিষেবা কলের জন্য রেফারেন্স এবং পুনরায় ব্যবহার করা যেতে পারে এবং এতে কেবল আপনার OCI অ্যাকাউন্ট/কনফিগ থেকে তথ্য অন্তর্ভুক্ত থাকে।


 BEGIN dbms_cloud.create_credential ( credential_name => 'OCI_KEY_CRED', user_ocid => 'ocid1.user.oc1..[youruserocid]', tenancy_ocid => 'ocid1.tenancy.oc1..[yourtenancyocid]', private_key => '[yourprivatekey - you can read this from file or put the contents of your pem without header, footer, and line wraps]' fingerprint => '[7f:yourfingerprint]' ); END;


এর পরে, আমরা মূল প্রোগ্রাম/ফাংশনটি দেখার আগে, আসুন দ্রুত টেবিলটি দেখি যে আমরা AI ফলাফলগুলি সংরক্ষণ করব। লক্ষ্য করুন, এই ক্ষেত্রে, টেবিলটিতে একটি AI কল রিটার্ন এবং একটি পাঠ্য থেকে JSON উভয়ের জন্য কলাম রয়েছে। দ্রুত রেফারেন্স, অনুসন্ধান ইত্যাদির জন্য JSON-এর মূল ক্ষেত্রগুলি থেকে তৈরি করা ক্ষেত্র।


আবার, টেবিল স্ট্রাকচার, এসকিউএল/রিলেশনাল বনাম JSON এর ব্যবহার, ইত্যাদি সবই আলাদা হতে পারে, এবং আবার, এটি ওরাকল মাল্টি-পারপাস ডাটাবেসের একটি দুর্দান্ত উদাহরণ যেখানে আপনি বিভিন্ন ডেটা মডেল এবং ডেটা টাইপ ব্যবহার করতে পারেন।


উদাহরণস্বরূপ, ওরাকল ডাটাবেসের JSON ডুয়ালিটি বৈশিষ্ট্যটি পরীক্ষা করার মতো কারণ এটি একই ডেটা SQL/রিলেশনালের পাশাপাশি JSON এবং এমনকি MongoDB API ব্যবহার করে অ্যাক্সেস করার অনুমতি দেয়।

 CREATE TABLE aivision_results (id RAW (16) NOT NULL, date_loaded TIMESTAMP WITH TIME ZONE, label varchar2(20), textfromai varchar2(32767), jsondata CLOB CONSTRAINT ensure_aivision_results_json CHECK (jsondata IS JSON)); /


এবং এখন, সাধারণ ফাংশন যা আর্কিটেকচারের হৃদয়কে টাইপ করে... এখানে, আমরা আমাদের তৈরি করা শংসাপত্রের সাথে DBMS_CLOUD.send_request-এ একটি কল দেখতে পাচ্ছি এবং (AI) পরিষেবা অপারেশন এন্ডপয়েন্টের ইউআরএল (ওরাকল ভিশন এআই পরিষেবার বিশ্লেষণ ইমেজ অপারেশন) এক্ষেত্রে).


বডির JSON পেলোডটিতে আমরা যে পরিষেবাটি ব্যবহার করতে চাই তার বৈশিষ্ট্য(গুলি) এবং অন্য যেকোন কনফিগারেশনের পাশাপাশি অপারেশনের আর্গুমেন্টগুলি নিয়ে গঠিত যা এই ক্ষেত্রে, একটি চিত্রের অবজেক্ট স্টোরেজ অবস্থান অন্তর্ভুক্ত করে (অন্য পেলোডের অংশ হিসাবে সরাসরি/ইনলাইনযুক্ত ইমেজ বাইট অ্যারে প্রদান করার বিকল্প হবে)।


JSON ফলাফল তারপর প্রতিক্রিয়া থেকে পুনরুদ্ধার করা হয়, এর কিছু উপাদান সুবিধার জন্য একটি পাঠ্য ক্ষেত্রে পার্স করা হয়, এবং JSON, পাঠ্য, ইত্যাদি পূর্বে উল্লিখিত হিসাবে বজায় থাকে।

 CREATE OR REPLACE FUNCTION VISIONAI_TEXTDETECTION ( p_endpoint VARCHAR2, p_compartment_ocid VARCHAR2, p_namespaceName VARCHAR2, p_bucketName VARCHAR2, p_objectName VARCHAR2, p_featureType VARCHAR2, p_label VARCHAR2 ) RETURN VARCHAR2 IS resp DBMS_CLOUD_TYPES.resp; json_response CLOB; v_textfromai VARCHAR2(32767); BEGIN resp := DBMS_CLOUD.send_request( credential_name => 'OCI_KEY_CRED', uri => p_endpoint || '/20220125/actions/analyzeImage', method => 'POST', body => UTL_RAW.cast_to_raw( JSON_OBJECT( 'features' VALUE JSON_ARRAY( JSON_OBJECT('featureType' VALUE p_featureType) ), 'image' VALUE JSON_OBJECT( 'source' VALUE 'OBJECT_STORAGE', 'namespaceName' VALUE p_namespaceName, 'bucketName' VALUE p_bucketName, 'objectName' VALUE p_objectName ), 'compartmentId' VALUE p_compartment_ocid ) ) ); json_response := DBMS_CLOUD.get_response_text(resp); SELECT LISTAGG(text, ', ') WITHIN GROUP (ORDER BY ROWNUM) INTO v_textfromai FROM JSON_TABLE(json_response, '$.imageText.words[*]' COLUMNS ( text VARCHAR2(100) PATH '$.text' ) ); INSERT INTO aivision_results (id, date_loaded, label, textfromai, jsondata) VALUES (SYS_GUID(), SYSTIMESTAMP, p_label, v_textfromai, json_response); RETURN v_textfromai; EXCEPTION WHEN OTHERS THEN RAISE; END VISIONAI_TEXTDETECTION; /


এছাড়াও আমরা নিম্নলিখিত ব্যবহার করে প্রোগ্রামটিকে একটি রেস্ট এন্ডপয়েন্ট হিসাবে প্রকাশ করতে পারি:

 BEGIN ORDS.ENABLE_OBJECT( P_ENABLED => TRUE, P_SCHEMA => 'AIUSER', P_OBJECT => 'VISIONAI_OBJECTDETECTION', P_OBJECT_TYPE => 'FUNCTION', P_OBJECT_ALIAS => 'VISIONAI_OBJECTDETECTION', P_AUTO_REST_AUTH => FALSE ); COMMIT; END; /

এআই ফলাফলের বিশ্লেষণ এবং পাঠ্য অনুসন্ধান

এই আর্কিটেকচারটি সমস্ত AI ফলাফলের বিশ্লেষণ এবং পাঠ্য অনুসন্ধানকে সুবিধাজনক এবং দক্ষ করে তোলে। এখান থেকে, আরো প্রক্রিয়াকরণ এবং বিশ্লেষণ সঞ্চালিত হতে পারে. আসুন তিনটি বিবৃতি দেখে নেওয়া যাক যা আমাদের AI ফলাফলগুলির একটি সহজে ব্যবহারযোগ্য পাঠ্য অনুসন্ধান প্রদান করবে।


  • প্রথমত, আমরা আমাদের aivision_results টেবিলে পাঠ্য অনুসন্ধানের জন্য একটি সূচক তৈরি করি।


  • তারপরে, আমরা একটি ফাংশন তৈরি করি যা শক্তিশালী ধারণ কার্যকারিতা ব্যবহার করে একটি প্রদত্ত স্ট্রিং অনুসন্ধান করে, অথবা আমরা অতিরিক্ত/ঐচ্ছিকভাবে একাধিক টেবিল অনুসন্ধান করতে এবং ফলাফলের রিফার্সার ফিরিয়ে দিতে DBMS_SEARCH প্যাকেজ ব্যবহার করতে পারি।


  • অবশেষে, আমরা ফাংশনটিকে একটি বিশ্রামের শেষ পয়েন্ট হিসাবে প্রকাশ করি।


এটা যে সহজ.

 create index aivisionresultsindex on aivision_results(textfromai) indextype is ctxsys.context; /
 CREATE OR REPLACE FUNCTION VISIONAI_RESULTS_TEXT_SEARCH(p_sql IN VARCHAR2) RETURN SYS_REFCURSOR AS refcursor SYS_REFCURSOR; BEGIN OPEN refcursor FOR select textfromai from AIVISION_RESULTS where contains ( textfromai, p_sql ) > 0; RETURN refcursor; END VISIONAI_RESULTS_TEXT_SEARCH; /
 BEGIN ORDS.ENABLE_OBJECT( P_ENABLED => TRUE, P_SCHEMA => 'AIUSER', P_OBJECT => 'VISIONAI_RESULTS_TEXT_SEARCH', P_OBJECT_TYPE => 'FUNCTION', P_OBJECT_ALIAS => 'VISIONAI_RESULTS_TEXT_SEARCH', P_AUTO_REST_AUTH => FALSE ); COMMIT; END; /

উপসংহারে…

এটি একটি দ্রুত ব্লগ যা ডাটাবেস থেকে সরাসরি AI পরিষেবাগুলিতে কল করে ডেটা-চালিত AI অ্যাপস তৈরির জন্য একটি স্থাপত্য প্যাটার্ন দেখায়।


পড়ার জন্য অনেক ধন্যবাদ, এবং দয়া করে আমাকে আপনার কোন প্রশ্ন বা প্রতিক্রিয়া জানাতে পারেন।


এছাড়াও এখানে প্রকাশিত