Generative AI สำหรับการวิเคราะห์วิดีโอด้วย Vertex AI

1. บทนำ

ดูวิธีวิเคราะห์มุมมองของครีเอเตอร์อินลูเอนเซอร์ใน YouTube เกี่ยวกับบริษัทหรือผลิตภัณฑ์ใดๆ โดยใช้ความสามารถของ Gen AI ของ Google

เมื่อ LLM ถือกำเนิดขึ้น ซึ่งได้นำข้อมูลเชิงลึกจากแหล่งต่างๆ มากมาย เช่น งบดุล การดูในแพลตฟอร์มโซเชียลมีเดีย ทำให้ความคิดเห็นจากผู้ทรงอิทธิพล (Influencer) กลายเป็นเรื่องที่ง่ายขึ้น

อินฟลูเอนเซอร์บนโซเชียลมีเดียโดยเฉพาะในแวดวงเทคโนโลยีและ ผู้คนในแวดวงการเงินกลายเป็นผู้สนับสนุนคนสำคัญขององค์กรหรือคู่แข่งมากขึ้นเรื่อยๆ ผลิตภัณฑ์และ

สิ่งที่คุณจะสร้าง

ใน Codelab นี้ คุณจะได้สำรวจวิธีที่โมเดล PaLM2 ใน VertexAI และ Langchain รวมเข้าด้วยกันสำหรับโซลูชันการวิเคราะห์จากอินฟลูเอนเซอร์ของ YouTube

สภาพแวดล้อม

ไปที่ https://colab.research.google.com/#create=true เพื่อสร้างสมุดบันทึกใหม่ในสภาพแวดล้อมแซนด์บ็อกซ์ของ Google Colab

2. ติดตั้งแพ็กเกจและตรวจสอบสิทธิ์

ใช้คำสั่งเหล่านี้เพื่อติดตั้งแพ็กเกจที่จำเป็นในเซลล์แรกของสมุดบันทึกใหม่

!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

ระบบจะแจ้งให้คุณรีสตาร์ทเครื่องรันไทม์หลังจากติดตั้งแพ็กเกจข้างต้น คลิก "รีสตาร์ท RUNTIME" หรือเลือก "รีสตาร์ทรันไทม์" จากเมนูรันไทม์

ตรวจสอบสิทธิ์บัญชี Google Cloud

บัญชีของคุณควรมีบทบาทผู้ใช้ Vertex AI

  • เปิดคอนโซล Google Cloud และค้นหา IAM และบริการผู้ดูแลระบบ ในแท็บ "สิทธิ์" ใต้ "ดูตามผู้ใช้หลัก" ให้เลือก "ให้สิทธิ์เข้าถึง" ป้อน / เลือกผู้ใช้หลัก จากนั้นเพิ่มบทบาท "ผู้ใช้ Vertex AI" แล้วบันทึก ดังที่แสดงในรูปภาพด้านล่าง

c6d26238f3d57a45.png

กลับไปที่แท็บ Colab แล้วป้อนข้อมูลโค้ดด้านล่างในเซลล์ที่ 2 ในไฟล์ที่ใช้งานอยู่ในปัจจุบัน ซึ่งจะเป็นการตรวจสอบการตรวจสอบสิทธิ์

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

จากนั้นระบบจะแจ้งให้คุณอนุญาตการเข้าถึง ดำเนินการต่อ

3. เริ่มต้นและนำเข้า

เริ่มต้นโปรเจ็กต์ด้วยการป้อนข้อมูลโค้ดด้านล่างลงในเซลล์ถัดไป

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 LLM การดำเนินการนี้จะเริ่มต้น "llm" ด้วยโมเดล Text-Bison ของ Vertex AI

!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,
)

4. เริ่มการฝัง

เราจะใช้การฝัง Vertex AI เพื่อแปลงส่วนวิดีโอเป็นการฝัง ในส่วนนี้ เราจะเริ่มต้นเฉพาะออบเจ็กต์ที่ฝัง ในส่วนของ Store และเรียกข้อมูล เราจะใช้การฝังกับเนื้อหาที่สร้างขึ้นจากวิดีโอ

การแยกส่วนใน Generative AI คือกระบวนการแบ่งเนื้อหาขนาดใหญ่ออกเป็น "ส่วนเล็กๆ ที่จัดการได้" หรือ "ส่วนเล็กๆ" เนื่องจากโมเดล Generative AI มีขีดจำกัดปริมาณข้อมูลที่ประมวลผลได้ในคราวเดียว การแยกข้อมูลออกเป็นส่วนย่อยๆ ทำให้โมเดลสามารถมุ่งเน้นไปที่กลุ่มข้อมูลทีละกลุ่มและสร้างผลลัพธ์ที่แม่นยำและสอดคล้องกันมากขึ้น

การฝังเป็นวิธีแสดงเนื้อหาเป็นเวกเตอร์ของตัวเลข ซึ่งช่วยให้คอมพิวเตอร์เข้าใจความหมายของข้อมูลได้ซับซ้อนกว่าวิธีการแบบดั้งเดิม เช่น การตรวจจับช็อตหรือการแยกคีย์เฟรม หากเป็นข้อมูลสำหรับวิดีโอและคำต่างๆ หากเป็นข้อมูลภาษา

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,
)

5. โหลดและแบ่งวิดีโอเป็นส่วนๆ

โหลดวิดีโอเพื่อสรุปหรือถามคำถาม

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)}")

6. จัดเก็บและเรียกข้อมูล

จัดเก็บเอกสาร

สำหรับแบบฝึกหัดนี้ เราใช้ ChromaDB หรือจะใช้ Vertex AI Vector Search ก็ได้เช่นกัน จัดเก็บเอกสารและจัดทำดัชนีเอกสารใน ChromaDB เป็นที่เก็บเวกเตอร์ ChromaDB ใช้ในการจัดเก็บและเรียกการฝังเวกเตอร์เพื่อใช้กับ LLM และค้นหาข้อมูลเชิงความหมาย

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

สร้างเชนรีทรีฟเวอร์

สร้างเชนรีทรีฟเวอร์เพื่อตอบคำถาม ซึ่งเป็นจุดที่เราเชื่อมโยงโมเดล Vertex AI Text Bison LLM และรีทรีฟเวอร์ที่ดึงข้อมูลการฝังจาก Chroma DB

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

7. กำหนดพรอมต์

กำหนดพรอมต์ของคุณเพื่อถามคำถามและรับคำตอบจากเนื้อหาที่จัดทำดัชนี

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

  }

8. ผสานรวมแอปพลิเคชัน LLM

ผสานรวมแอปพลิเคชัน 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()

9. ทดสอบโซลูชัน

มาลองทดสอบโซลูชันกัน เรียกใช้เซลล์ที่มีโค้ดข้างต้น โปรดดู UI ในผลการค้นหาเซลล์หรือคลิกลิงก์ที่สร้างขึ้น คุณควรเห็นภาพอินเทอร์เฟซที่มีคอมโพเนนต์เอาต์พุตอินพุตได้ ป้อนคำถามในวิดีโอและดูการตอบสนองของโมเดล

825c38058aab0aae.png

ตอนนี้เราสามารถผสานรวมวิดีโอ YouTube และวิเคราะห์วิดีโอโดยใช้โมเดล Vertex AI PaLM API ได้ คุณยังขยายระยะเวลานี้ให้ผสานรวมกับฐานข้อมูลหรือคลังข้อมูลได้ด้วย ดูข้อมูลเพิ่มเติมเกี่ยวกับโมเดลที่พร้อมใช้งานได้ที่เอกสารประกอบผลิตภัณฑ์ Vertex AI LLM

10. ยินดีด้วย

ยินดีด้วย คุณได้ใช้ Vertex AI Text Generation LLM แบบเป็นโปรแกรมเพื่อวิเคราะห์ข้อความในข้อมูลโดยใช้เฉพาะการค้นหา SQL เท่านั้นเรียบร้อยแล้ว ดูข้อมูลเพิ่มเติมเกี่ยวกับโมเดลที่พร้อมใช้งานได้ในเอกสารประกอบผลิตภัณฑ์ Vertex AI LLM