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

1. บทนำ

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

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

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

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

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

สภาพแวดล้อม

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

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

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

!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

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

ตรวจสอบสิทธิ์บัญชี 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

เริ่มต้นโมเดล LLM ของ Vertex AI

ใช้ข้อมูลโค้ดนี้เพื่อเริ่มต้นโมเดล LLM ของ Vertex AI ซึ่งจะเริ่มต้น "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 เพื่อแปลงก้อนวิดีโอเป็นการฝัง ในส่วนนี้ของโค้ด เราจะเริ่มต้นออบเจ็กต์การฝังเท่านั้น ในส่วนจัดเก็บและเรียกข้อมูล เราจะใช้การฝังกับก้อนข้อมูลที่สร้างจากวิดีโอ

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

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

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

สร้างเชน Retriever

สร้างเชนตัวดึงข้อมูลเพื่อตอบคำถาม ในส่วนนี้ เราจะเชื่อมโยง LLM โมเดล Vertex AI Text Bison กับตัวดึงข้อมูลที่ดึงข้อมูลการฝังจาก 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 ได้แล้ว คุณยังขยายการทำงานนี้เพื่อผสานรวมกับฐานข้อมูลหรือคลังข้อมูลได้อีกด้วย ดูข้อมูลเพิ่มเติมเกี่ยวกับโมเดลที่มีให้บริการได้ที่เอกสารประกอบสำหรับผลิตภัณฑ์ LLM ของ Vertex AI

10. ยินดีด้วย

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