কৃত্রিম বুদ্ধিমত্তার নতুন যুগ: RAG, যুক্তি, এবং গ্রাফের সমন্বয়
কৃত্রিম বুদ্ধিমত্তা (AI), বিশেষ করে বড় ভাষা মডেল (LLM), আমাদের ধারণাকে বদলে দিয়েছে যে মেশিনগুলো কী করতে পারে। তবে, এই মডেলগুলোর "ব্ল্যাক বক্স" প্রকৃতি এবং "হ্যালুসিনেশন"—অর্থাৎ, তথ্য বানিয়ে বলা—এর প্রবণতা তাদের বড় সীমাবদ্ধতা তুলে ধরেছে। সমাধান শুধু বড় মডেল তৈরি নয়, বরং আরও স্মার্ট স্থাপত্য গড়ে তোলা। এই প্রবন্ধে আমরা দেখব কীভাবে RAG (Retrieval-Augmented Generation), যুক্তি, অ্যাটেনশন, গ্রাফ তত্ত্ব, এবং লজিক একসাথে কাজ করে আরও নির্ভরযোগ্য ও সক্ষম AI-এর দিকে আমাদের এগিয়ে নিয়ে যায়।
মূল উপাদান: অ্যাটেনশন থেকে RAG
আরও গভীরে যাওয়ার আগে, চলুন মূল ধারণাগুলো পরিষ্কার করি।
১. অ্যাটেনশন মেকানিজম
অ্যাটেনশন আধুনিক ভাষা মডেলের (যেমন ট্রান্সফরমার, যা GPT-কে চালায়) ভিত্তি। সহজভাবে বললে, এটি মডেলকে ইনপুট টেক্সটের বিভিন্ন অংশকে বিভিন্ন গুরুত্ব দিয়ে বিবেচনা করতে দেয় জেনারেশনের সময়। যখন কোনো বাক্য অনুবাদ করতে বলা হয়, তখন মডেলটি প্রতিটি শব্দকে সমানভাবে বিবেচনা করে না; বরং, এটি সবচেয়ে প্রাসঙ্গিক শব্দগুলোর দিকে "মনোযোগ" দেয়। এটি প্রসঙ্গ বোঝার জন্য মৌলিক।
২. RAG: রিট্রিভাল-অগমেন্টেড জেনারেশন
LLM-গুলো একটি নির্দিষ্ট সময় পর্যন্ত উপলব্ধ ডেটা দিয়ে প্রশিক্ষিত হয়। তারা প্রশিক্ষণের পরবর্তী ঘটনার কিছুই জানে না, এবং নির্দিষ্ট, ব্যক্তিগত ডেটা (যেমন, আপনার কোম্পানির অভ্যন্তরীণ ডকুমেন্ট) তাদের কাছে নেই। RAG এই সমস্যার সমাধান করে LLM-কে একটি বাহ্যিক জ্ঞানভাণ্ডারের সাথে সংযুক্ত করে।
এই প্রক্রিয়া দুটি ধাপে হয়:
১. রিট্রিভাল: যখন ব্যবহারকারী একটি প্রশ্ন করে, তখন সিস্টেমটি প্রথমে বাহ্যিক ডেটা সোর্স (যেমন ডকুমেন্ট ডাটাবেস, ওয়েব পেজ, বা অভ্যন্তরীণ উইকি) থেকে প্রাসঙ্গিক তথ্য খুঁজে বের করে।
২. জেনারেশন: প্রাপ্ত প্রসঙ্গ (তথ্য, ডকুমেন্ট) মূল প্রশ্নের সাথে LLM-কে সরবরাহ করা হয়। মডেলটি এই তথ্য ব্যবহার করে একটি সঠিক, তথ্যভিত্তিক উত্তর তৈরি করে।
এটি হ্যালুসিনেশন কমায় এবং মডেলকে তার তথ্যসূত্র উল্লেখ করতে দেয়, ফলে এটি আরও স্বচ্ছ ও বিশ্বাসযোগ্য হয়।
graph TD;
A[ব্যবহারকারীর প্রশ্ন] --> B{রিট্রিভার};
B -- প্রাসঙ্গিক তথ্য অনুসন্ধান করে --> C[জ্ঞানভাণ্ডার / ভেক্টর ডেটাবেস];
C -- প্রসঙ্গ ফেরত দেয় --> B;
B -- প্রসঙ্গ --> D{জেনারেটর (LLM)};
A -- মূল প্রশ্ন --> D;
D -- প্রসঙ্গের ভিত্তিতে উত্তর তৈরি করে --> E[তথ্যভিত্তিক এবং উৎসসহ উত্তর];
৩. যুক্তি
যুক্তি হলো AI-এর সেই ক্ষমতা, যা একাধিক ধাপে যৌক্তিক পদক্ষেপ নিয়ে কোনো সমস্যা সমাধান করতে পারে। কেবল পরবর্তী শব্দ অনুমান করার বদলে, মডেলটি একটি "চিন্তার শৃঙ্খল" গড়ে তুলতে চেষ্টা করে। উদাহরণস্বরূপ, কোনো গাণিতিক সমস্যা সমাধানের সময়, এটি শুধু উত্তরটি দেয় না, বরং উত্তরটি কীভাবে পাওয়া গেলো তার ধাপগুলো লিখে দেয়। এতে জটিল কাজের ক্ষেত্রে যথার্থতা অনেক বেড়ে যায়।
সমন্বয়: গ্রাফ তত্ত্ব ও যুক্তির সংমিশ্রণ
এখানেই বিষয়টি সত্যিই আকর্ষণীয় হয়ে ওঠে। RAG এবং যুক্তি ক্ষমতাকে গঠিত তথ্য ও নিয়মের সাথে একত্রিত করে আমরা আরও শক্তিশালী সিস্টেম তৈরি করতে পারি।
জ্ঞানের নেটওয়ার্ক হিসেবে গ্রাফ
সাধারণত RAG সিস্টেমগুলো টেক্সট ডকুমেন্ট থেকে তথ্য উদ্ধার করে, যেগুলো ভেক্টরাইজড থাকে। কিন্তু পৃথিবী কেবল অগঠিত টেক্সট দিয়ে গঠিত নয়। অনেক জ্ঞানই স্বভাবতই সম্পর্কিত। এখানেই গ্রাফ তত্ত্ব গুরুত্বপূর্ণ হয়ে ওঠে।
একটি জ্ঞানের গ্রাফ তথ্যকে নোড (সত্তা, যেমন "তাল্লিন", "এস্তোনিয়া") এবং এজ (সম্পর্ক, যেমন "রাজধানী", "অবস্থিত") হিসেবে উপস্থাপন করে।
graph TD;
A(তাল্লিন) -- অবস্থিত --> B(এস্তোনিয়া);
A -- রাজধানী --> B;
C(তার্তু) -- অবস্থিত --> B;
D(তোমাস হেনড্রিক ইলভেস) -- রাষ্ট্রপতি ছিলেন --> B;
D -- জন্মস্থান --> E(স্টকহোম);
B -- সদস্য --> F(ইউরোপীয় ইউনিয়ন);
এটি কীভাবে RAG-কে উন্নত করে?
- গঠিত অনুসন্ধান: "এস্তোনিয়া ইউরোপীয় ইউনিয়নে যোগদান করার সময় দেশটির রাষ্ট্রপতি কে ছিলেন?" এর মতো একটি প্রশ্নের জন্য, সিস্টেমটি শুধু কীওয়ার্ড খোঁজে না। এটি গ্রাফে নেভিগেট করতে পারে, এস্তোনিয়া, ইইউ এবং রাষ্ট্রপতিদের মধ্যে সম্পর্ক খুঁজে পেতে পারে এবং উত্তরটি নির্ধারণ করতে পারে।
- প্রাসঙ্গিক যুক্তি: গ্রাফটি মডেলকে পরোক্ষ সম্পর্ক বুঝতে সাহায্য করে। এমনকি যদি কোনো ডকুমেন্ট সরাসরি না বলে "তোমাস হেনড্রিক ইলভেস ছিলেন রাষ্ট্রপতি যখন এস্তোনিয়া ইইউ সদস্য ছিল," সিস্টেমটি তার মেয়াদ এবং এস্তোনিয়ার ইইউতে যোগদানের তারিখ তুলনা করে এটি নির্ধারণ করতে পারে।
নিরাপত্তা নেট হিসেবে যুক্তি
যদিও LLM গুলো শক্তিশালী, তবুও এদের মধ্যে কঠোর যৌক্তিক যুক্তি নেই। এগুলো সম্ভাব্যতাভিত্তিক, নির্ধারিত নয়। এখানে আমরা ক্লাসিক্যাল, প্রতীকী AI-এর শক্তি ব্যবহার করতে পারি: আনুষ্ঠানিক যুক্তি।
যুক্তির নিয়ম (যেমন, "যদি ব্যক্তি X কোম্পানি Y-এর CEO হন, তবে ব্যক্তি X কোম্পানি Y-তে কাজ করেন") বিভিন্নভাবে ব্যবহার করা যেতে পারে:
- প্রশ্ন পরিশোধন: ব্যবহারকারীর প্রশ্নটি বিশ্লেষণ করা যেতে পারে এবং যৌক্তিক অনুমান দিয়ে সমৃদ্ধ করা যেতে পারে, তারপর RAG রিট্রিভারে পাঠানো যেতে পারে।
- ফলাফল যাচাই: LLM একটি উত্তর তৈরি করার পরে, সেটি একটি যুক্তির নিয়মের সেটের সাথে যাচাই করা যেতে পারে। যদি উত্তরটি কোনো নিয়ম লঙ্ঘন করে (যেমন, দাবি করে একজন ব্যক্তি একসাথে দুই জায়গায় আছেন), তবে সেটি বাতিল করা যেতে পারে বা মডেলকে পুনরায় উত্তর দিতে বলা যেতে পারে।
- চিন্তার ধারা পরিচালনা: যুক্তি মডেলের চিন্তার ধারা পরিচালনা করতে পারে, নিশ্চিত করতে পারে প্রতিটি ধাপ বৈধ এবং সঠিক সমাধানে পৌঁছায়।
কোড উদাহরণ: তত্ত্বের বাস্তব প্রয়োগ
এসো দেখি কীভাবে এই ধারণাগুলো পাইথনে বাস্তবায়ন করা যায়।
উদাহরণ ১: langchain দিয়ে সহজ RAG
এই উদাহরণে একটি ইন-মেমরি ভেক্টর ডাটাবেসে ডকুমেন্ট ব্যবহার করে একটি সহজ RAG সিস্টেম তৈরি দেখানো হয়েছে।
# প্রয়োজনীয় লাইব্রেরি: pip install langchain openai faiss-cpu
from langchain.vectorstores import FAISS
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.chains import RetrievalQA
from langchain.chat_models import ChatOpenAI
from langchain.document_loaders import TextLoader
# ১. ডেটা লোড করুন (যেমন, একটি সাধারণ টেক্সট ফাইল)
# একটি ফাইল তৈরি করুন 'my_data.txt' নামে, যার মধ্যে থাকবে:
# "Toomas একটি কোম্পানিতে কাজ করে যার নাম GenAI OY। GenAI OY অবস্থিত Tallinn-এ।"
loader = TextLoader('my_data.txt')
documents = loader.load()
# ২. একটি ভেক্টর ডাটাবেস তৈরি করুন (রিট্রিভার)
# টেক্সটগুলো সংখ্যাগত ভেক্টরে রূপান্তরিত হয় এবং সংরক্ষিত হয়
embeddings = OpenAIEmbeddings(openai_api_key="YOUR_API_KEY")
vectorstore = FAISS.from_documents(documents, embeddings)
retriever = vectorstore.as_retriever()
# ৩. LLM এবং RAG চেইন সেটআপ করুন (জেনারেটর)
llm = ChatOpenAI(temperature=0, model_name="gpt-3.5-turbo", openai_api_key="YOUR_API_KEY")
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff", # "stuff" মানে হল পাওয়া সব কনটেক্সট প্রম্পটে ঢুকিয়ে দেওয়া হয়
retriever=retriever
)
# ৪. একটি প্রশ্ন সাবমিট করুন
query = "Toomas যে কোম্পানিতে কাজ করে সেটি কোথায় অবস্থিত?"
response = qa_chain.run(query)
print(response)
# প্রত্যাশিত আউটপুট: "Toomas যে কোম্পানিতে কাজ করে, GenAI OY, সেটি Tallinn-এ অবস্থিত।"
উদাহরণ ২: ধারণাগত গ্রাফ-ভিত্তিক যুক্তি
একটি সম্পূর্ণ কার্যকরী গ্রাফ-RAG সিস্টেম জটিল, তবে এখানে যুক্তি বোঝাতে একটি ধারণাগত উদাহরণ দেওয়া হলো।
import networkx as nx
# ১. একটি জ্ঞান গ্রাফ তৈরি করুন
G = nx.Graph()
G.add_edge("Toomas", "GenAI OY", label="works_at_company")
G.add_edge("GenAI OY", "Tallinn", label="located_in_city")
G.add_edge("Tallinn", "Estonia", label="located_in_country")
def query_knowledge_graph(graph, query):
"""
ধারণাগত ফাংশন যা গ্রাফে নেভিগেট করার অনুকরণ করে।
বাস্তবে, আরও জটিল কুয়েরি ভাষা যেমন Cypher বা SPARQL ব্যবহার করা হবে,
অথবা AI প্রাকৃতিক ভাষাকে গ্রাফ অপারেশনে অনুবাদ করবে।
"""
# ধরুন AI সত্তা "Toomas" চিহ্নিত করেছে এবং তার অবস্থান খুঁজছে
if "Toomas" in query and ("where" in query or "location" in query):
# ধাপ ১: Toomas কোথায় কাজ করে তা খুঁজুন
company = [n for n, _, data in graph.edges("Toomas", data=True) if data.get("label") == "works_at_company"][0]
# ধাপ ২: ঐ কোম্পানি কোথায় অবস্থিত তা খুঁজুন
city = [n for n, _, data in graph.edges(company, data=True) if data.get("label") == "located_in_city"][0]
return f"Toomas {company}-এ কাজ করে, যা {city}-এ অবস্থিত।"
else:
return "আমি এই প্রশ্নের উত্তর গ্রাফে খুঁজে পাইনি।"
# একটি কুয়েরি জমা দিন
user_query = "Where is Toomas located through his work?"
answer = query_knowledge_graph(G, user_query)
print(answer)
# আউটপুট: "Toomas GenAI OY-এ কাজ করে, যা Tallinn-এ অবস্থিত।"
উপসংহার: কৃত্রিম বুদ্ধিমত্তার ভবিষ্যৎ হলো হাইব্রিড
কৃত্রিম বুদ্ধিমত্তার ভবিষ্যৎ একক নয়। এটি একটি হাইব্রিড সিস্টেম, যেখানে নিউরাল নেটওয়ার্কের (যেমন LLMs) নমনীয়তা ও প্যাটার্ন চিনতে পারার ক্ষমতা একত্রিত হয় প্রতীকী সিস্টেমের (গ্রাফ, যুক্তি) নির্ভুলতা ও গঠনশীলতার সাথে।
- Attention মডেলগুলোকে প্রসঙ্গ বুঝতে সাহায্য করে।
- RAG মডেলগুলোকে তথ্যভিত্তিক ডেটার সাথে সংযুক্ত করে।
- Graphs ডেটাকে গঠন ও সম্পর্ক দেয়।
- Logic এবং reasoning সঠিকতা ও নির্ভরযোগ্যতা নিশ্চিত করে।
এই সমন্বয় এমন এক AI তৈরি করে, যা শুধু আরও বুদ্ধিমানই নয়, বরং আরও স্বচ্ছ, বিশ্বাসযোগ্য এবং শেষ পর্যন্ত বাস্তব জীবনের জটিল সমস্যার সমাধানে আরও কার্যকর। আমরা এমন এক জগতে যাচ্ছি, যেখানে আমরা AI-কে শুধুমাত্র "তুমি কী ভাবো?" জিজ্ঞেস করি না, বরং জিজ্ঞেস করতে পারি "তুমি কী জানো এবং কীভাবে জানো?"