1. מבוא
איך מנתחים את הצפיות של מובילי הדעה ב-YouTube בכל חברה או מוצר באמצעות היכולות של ה-AI הגנרטיבי של Google.
בעקבות הופעתם של מודלים גדולים של שפה (LLM) שמקיפים את התובנות ממגוון רחב של מקורות כמו מאזנים, צפיות בפלטפורמות של רשתות חברתיות, הרבה יותר קל היום להחליט בעזרת מובילי דעה.
מובילי דעה במדיה החברתית במיוחד בתחום הטכנולוגיה יותר ויותר עולם פיננסי נתפס כתומכים מרכזיים בארגון או במתחרים שלו מוצרים .
מה תפַתחו
בשיעור ה-Codelab הזה תכירו איך מודל PaLM2 ב-VertexAI וב-Langchain משתלב יחד לפתרון ניתוח נתונים בין מובילי דעה ב-YouTube.
סביבה
עוברים אל https://colab.research.google.com/#create=true כדי ליצור notebook חדש בסביבת ה-Sandbox של 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
אחרי התקנת החבילות שצוינו למעלה תופיע הנחיה להפעיל מחדש את המכונה של סביבת זמן הריצה. לוחצים על RESTART RUNTIME (התחלה מחדש) או בוחרים באפשרות 'הפעלה מחדש של סביבת זמן הריצה' בתפריט 'סביבת זמן הריצה'.
אימות חשבון Google Cloud
לחשבון שלכם צריך להיות תפקיד משתמש ב-Vertex AI.
- פותחים את מסוף Google Cloud ומחפשים את IAM ואת שירות Admin. בכרטיסייה 'הרשאות', בקטע 'הצגה לפי פרטים', בוחרים באפשרות 'הענקת גישה'. מזינים או בוחרים את חשבון המשתמש ואז מוסיפים את התפקיד 'Vertex AI User' ו'שמירה', כמו שמוצג בתמונה למטה:
עכשיו חוזרים לכרטיסייה של Colab ומזינים את קטע הקוד שלמטה בתא השני בקובץ העבודה הנוכחי. תתבצע בדיקה לאימות.
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
משתמשים בקטע הקוד הזה כדי לאתחל את המודל 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 כדי להמיר את מקטעי הסרטון להטמעות. בחלק הזה של הקוד, נאתחל רק את אובייקט ההטמעות. בקטע 'חנות ואחזור', נחיל את ההטמעות על המקטעים שנוצרו מהסרטון.
פיצול בבינה מלאכותית גנרטיבית הוא התהליך של פירוק תוכן גדול לחלקים או ל'מקטעים' קטנים יותר שניתנים לניהול. הסיבה לכך היא שלמודלים של בינה מלאכותית גנרטיבית יש מגבלות על כמות הנתונים שהם יכולים לעבד בבת אחת. חלוקת הנתונים מאפשרת למודל להתמקד במקטע אחד בכל פעם ולהפיק פלט מדויק ועקבי יותר.
הטמעות הן דרך לייצג תוכן בווקטור של מספרים. כך מחשבים יכולים להבין את המשמעות של נתונים בדרך מתוחכמת יותר משיטות מסורתיות כמו זיהוי שוטים או חילוץ תמונות מפתח – כשמדובר בסרטונים ובלי שקים, אם מדובר בנתוני שפה.
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 משמש לאחסון ולאחזור של הטמעות וקטורים לשימוש עם מודלים גדולים של שפה ולביצוע חיפוש סמנטי בנתונים.
db = Chroma.from_documents(docs, embeddings)
retriever = db.as_retriever(search_type="similarity", search_kwargs={"k": 2})
יצירת שרשרת רטריבר
כדי לענות על השאלה, צריך ליצור שרשרת רטריבר. כאן משייכים את מודל ה-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. בדיקת הפתרון
עכשיו נמשיך בבדיקת הפתרון. מריצים את התא שמכיל את הקוד שלמעלה. מציגים את ממשק המשתמש בתוצאת התא או לוחצים על הקישור שנוצר. צריכה להיות לכם אפשרות ליצור תצוגה חזותית של הממשק עם רכיבי הקלט-פלט. מזינים שאלה בסרטון וצופים בתשובה של המודל.
עכשיו אנחנו יכולים לשלב סרטונים ב-YouTube ולנתח אותם באמצעות מודלים של Vertex AI PaLM API. אפשר להרחיב את השילוב עם מסדי נתונים או מחסני נתונים (data warehouse). מידע נוסף על המודלים הזמינים זמין במסמכי התיעוד של Vertex AI LLM.
10. מעולה!
מעולה! השתמשתם בהצלחה ב-LLM של Vertex AI Text Generation באופן פרוגרמטי כדי לבצע ניתוח נתונים של טקסט על הנתונים שלכם רק באמצעות שאילתות SQL. אתם יכולים לעיין במסמכי התיעוד של מוצרי Vertex AI LLM כדי לקבל מידע נוסף על המודלים הזמינים.