Vertex AI এর সাথে ভিডিও অ্যানালিটিক্সের জন্য জেনারেটিভ এআই

১. ভূমিকা

গুগলের জেন এআই সক্ষমতা ব্যবহার করে ইউটিউবে যেকোনো কোম্পানি বা পণ্য সম্পর্কে ইনফ্লুয়েন্সারদের মতামত কীভাবে বিশ্লেষণ করতে হয়, তা শিখুন।

এলএলএম-এর আবির্ভাবের ফলে ব্যালেন্স শীট, সোশ্যাল মিডিয়া প্ল্যাটফর্মের মতামত, প্রভাবশালী ব্যক্তিদের মতামতের মতো বিভিন্ন উৎস থেকে তথ্য সংগ্রহ করা আরও সহজ হয়ে উঠেছে।

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

আপনি যা তৈরি করবেন

এই কোডল্যাবে, আপনি জানবেন কিভাবে VertexAI-এর PaLM2 মডেল এবং Langchain একত্রিত হয়ে ইউটিউব ইনফ্লুয়েন্সার অ্যানালিটিক্স সলিউশন তৈরি করে।

পরিবেশ

গুগল কোলাব স্যান্ডবক্স পরিবেশে একটি নতুন নোটবুক তৈরি করতে https://colab.research.google.com/#create=true -এ যান।

২. প্যাকেজ ইনস্টল করুন এবং প্রমাণীকরণ করুন

নতুন নোটবুকের প্রথম সেলে, প্রয়োজনীয় প্যাকেজগুলো ইনস্টল করতে এই কমান্ডগুলো ব্যবহার করুন।

!pip install google-cloud-aiplatform
!pip install langchain
!pip install chromadb
!pip install pytube
!pip install youtube-transcript-api
!pip install gradio
from google.cloud import aiplatform

উপরোক্ত প্যাকেজগুলো ইনস্টল করার পর এটি আপনাকে রানটাইম মেশিনটি পুনরায় চালু করতে বলবে। RESTART RUNTIME-এ ক্লিক করুন অথবা রানটাইম মেনু থেকে Restart runtime নির্বাচন করুন।

আপনার গুগল ক্লাউড অ্যাকাউন্ট প্রমাণীকরণ করুন

আপনার অ্যাকাউন্টে Vertex AI ইউজার রোলটি থাকা উচিত।

  • Google Cloud কনসোল খুলুন এবং IAM ও Admin পরিষেবাটি অনুসন্ধান করুন। PERMISSIONS ট্যাবের VIEW BY PRINCIPALS-এর অধীনে, GRANT ACCESS নির্বাচন করুন। আপনার প্রিন্সিপালটি লিখুন / নির্বাচন করুন এবং তারপরে "Vertex AI User" রোলটি যোগ করুন ও SAVE করুন, যেমনটি নিচের ছবিতে দেখানো হয়েছে:

c6d26238f3d57a45.png

এখন কোলাব ট্যাবে ফিরে যান এবং বর্তমান ওয়ার্কিং ফাইলের দ্বিতীয় সেলে নিচের কোড স্নিপেটটি লিখুন। এটি অথেনটিকেশন যাচাই করবে।

from google.colab import auth as google_auth
google_auth.authenticate_user()

এটি আপনাকে প্রবেশের অনুমতি দিতে বলবে। অনুমতি দিতে থাকুন।

৩. প্রারম্ভিকীকরণ এবং আমদানি

পরবর্তী সেলে নিচের কোডটি লিখে আপনার প্রজেক্টটি শুরু করুন।

import vertexai
PROJECT_ID = "<projectid>" #enter your project id here
vertexai.init(project=PROJECT_ID)

সমাধানের জন্য লাইব্রেরিগুলো ইম্পোর্ট করুন

প্রয়োজনীয় লাইব্রেরিগুলো ইম্পোর্ট করতে এই কমান্ডগুলো ব্যবহার করুন।

from langchain.document_loaders import YoutubeLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores import Chroma
from langchain.chains import RetrievalQA
from langchain.llms import VertexAI

ভার্টেক্স এআই এলএলএম মডেলটি প্রারম্ভিক করুন

Vertex AI LLM মডেলটি ইনিশিয়ালাইজ করতে এই কোড স্নিপেটটি ব্যবহার করুন। এটি Vertex AI-এর Text-Bison মডেল দিয়ে 'llm'-কে ইনিশিয়ালাইজ করে।

!python3 -m pip install langchain

llm = VertexAI(
model_name="text-bison@001",
max_output_tokens=256,
temperature=0.1,
top_p=0.8,
top_k=40,
verbose=True,
)

৪. এমবেডিং শুরু করুন

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

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

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

from langchain.embeddings import VertexAIEmbeddings

# Embedding
EMBEDDING_QPM = 100
EMBEDDING_NUM_BATCH =5
embeddings = VertexAIEmbeddings(
    requests_per_minute=EMBEDDING_QPM,
    num_instances_per_batch=EMBEDDING_NUM_BATCH,
)

৫. ভিডিওটি লোড করুন এবং খণ্ড খণ্ড করুন।

সারাংশ দেখতে বা প্রশ্ন করতে ভিডিওটি লোড করুন।

loader = YoutubeLoader.from_youtube_url("https://www.youtube.com/watch?v=A8jyW_6hCGU&t=161s", add_video_info=True)
result = loader.load()

ভিডিওটি ভাগ করুন

রিকার্সিভ ক্যারেক্টার স্প্লিটার কৌশল ব্যবহার করে ভিডিওটিকে একাধিক খণ্ডে বিভক্ত করুন।

text_splitter = RecursiveCharacterTextSplitter(chunk_size=1500, chunk_overlap=0)
docs = text_splitter.split_documents(result)
print(f"# of documents = {len(docs)}")

৬. সংরক্ষণ ও পুনরুদ্ধার করুন

আপনার নথিগুলি সংরক্ষণ করুন

এই অনুশীলনের জন্য আমরা ChromaDB ব্যবহার করছি। আপনি Vertex AI Vector Search- ও ব্যবহার করতে পারেন। আপনার ডকুমেন্টগুলো ChromaDB-তে একটি ভেক্টর স্টোর হিসেবে সংরক্ষণ ও ইনডেক্স করুন। LLM-এর সাথে ব্যবহারের জন্য ভেক্টর এমবেডিং সংরক্ষণ ও পুনরুদ্ধার করতে এবং ডেটার উপর সিমান্টিক সার্চ পরিচালনা করতে ChromaDB ব্যবহৃত হয়।

db = Chroma.from_documents(docs, embeddings)
retriever = db.as_retriever(search_type="similarity", search_kwargs={"k": 2})

একটি পুনরুদ্ধারকারী শৃঙ্খল তৈরি করুন

প্রশ্নটির উত্তর দেওয়ার জন্য একটি রিট্রিভার চেইন তৈরি করুন। এখানেই আমরা ভার্টেক্স এআই টেক্সট বাইসন মডেল এলএলএম (LLM) এবং ক্রোমা ডিবি (Chroma DB) থেকে এমবেডিংগুলো পুনরুদ্ধারকারী রিট্রিভারটিকে সংযুক্ত করি।

qa = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", retriever=retriever, return_source_documents=True)

৭. আপনার প্রম্পটটি সংজ্ঞায়িত করুন।

সূচীবদ্ধ বিষয়বস্তু থেকে প্রশ্ন জিজ্ঞাসা করতে ও উত্তর পেতে আপনার প্রশ্নটি নির্ধারণ করুন।

def sm_ask(question, print_results=True):
  video_subset = qa({"query": question})
  context = video_subset
  prompt = f"""
  Answer the following question in a detailed manner, using information from the text below. If the answer is not in the text,say I dont know and do not generate your own response.

  Question:
  {question}
  Text:
  {context}

  Question:
  {question}

  Answer:
  """
  parameters = {
  "temperature": 0.1,
  "max_output_tokens": 256,
  "top_p": 0.8,
  "top_k": 40
  }
  response = llm.predict(prompt, **parameters)
  return {
  "answer": response

  }

৮. এলএলএম আবেদনপত্রটি সমন্বিত করুন

ভিজ্যুয়াল ফ্রন্ট এন্ড ইন্টারঅ্যাকশনের জন্য LLM অ্যাপ্লিকেশনটিকে Gradio-এর সাথে ইন্টিগ্রেট করুন।

import gradio as gr
def get_response(input_text):
  response = sm_ask(input_text)
  return response

grapp = gr.Interface(fn=get_response, inputs="text", outputs="text")
grapp.launch()

৯. সমাধানটি পরীক্ষা করুন।

এবার চলুন সমাধানটি পরীক্ষা করা যাক। উপরের কোডটি থাকা সেলটি রান করুন। সেলের ফলাফলে UI-টি দেখুন অথবা তৈরি হওয়া লিঙ্কটিতে ক্লিক করুন। আপনি ইনপুট-আউটপুট উপাদানসহ ইন্টারফেসটি দেখতে পাওয়ার কথা। ভিডিওটির উপর একটি প্রশ্ন ইনপুট করুন এবং মডেলের প্রতিক্রিয়াটি দেখুন।

825c38058aab0aae.png

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

১০. অভিনন্দন!

অভিনন্দন! আপনি শুধুমাত্র SQL-কোয়েরি ব্যবহার করে প্রোগ্রাম্যাটিকভাবে আপনার ডেটার উপর টেক্সট অ্যানালিটিক্স সম্পাদন করার জন্য সফলভাবে একটি Vertex AI টেক্সট জেনারেশন LLM ব্যবহার করেছেন। উপলব্ধ মডেলগুলো সম্পর্কে আরও জানতে Vertex AI LLM প্রোডাক্ট ডকুমেন্টেশন দেখুন।