במדריך הזה נראה איך לשלב אפליקציה של מודל שפה גדול (LLM) שמבוססת על יצירה משולבת-אחזור (RAG) עם קובצי PDF שמעלים לקטגוריה של Cloud Storage.
במדריך הזה נעשה שימוש במסד נתונים כמנוע אחסון וחיפוש סמנטי שמכיל את הייצוגים (הטמעות) של המסמכים שהועלו. אתם משתמשים ב-framework של Langchain כדי ליצור אינטראקציה עם ההטמעות, ומשתמשים במודלים של Gemini שזמינים דרך Vertex AI.
Langchain הוא פריימוורק פופולרי של Python בקוד פתוח, שמפשט הרבה משימות של למידת מכונה ויש לו ממשקי משתמש לשילוב עם מסדי נתונים שונים של וקטורים ושירותי AI.
המדריך הזה מיועד למנהלים ולארכיטקטים של פלטפורמות ענן, למהנדסי ML ולמומחי MLOps (DevOps) שרוצים לפרוס אפליקציות RAG LLM ב-GKE וב-Cloud Storage.
מטרות
במדריך הזה תלמדו איך:
- ליצור ולפרוס אפליקציה כדי ליצור הטמעות של מסמכים ולאחסן אותן במסד נתונים וקטורי.
- אוטומציה של האפליקציה כדי להפעיל העלאות של מסמכים חדשים לקטגוריה של Cloud Storage.
- פריסת אפליקציית צ'אטבוט שמשתמשת בחיפוש סמנטי כדי לענות על שאלות על סמך תוכן המסמך.
ארכיטקטורת פריסה
במדריך הזה תיצרו קטגוריה של Cloud Storage, טריגר Eventarc ואת השירותים הבאים:
embed-docs: טריגר של Eventarc מפעיל את השירות הזה בכל פעם שמשתמש מעלה מסמך חדש לקטגוריה של Cloud Storage. השירות מתחיל Kubernetes Job שיוצר הטמעות למסמך שהועלה ומכניס את ההטמעות למסד נתונים וקטורי.-
chatbot: השירות הזה עונה על שאלות בשפה טבעית לגבי המסמכים שהועלו באמצעות חיפוש סמנטי ו-Gemini API.
בתרשים הבא מוצג תהליך ההעלאה והווקטוריזציה של מסמכים:
בתרשים, המשתמש מעלה קבצים לקטגוריה ב-Cloud Storage.
Eventarc נרשם לאירועים של אובייקט metadataUpdated בדלי ומשתמש במעביר האירועים של Eventarc, שהוא עומס עבודה של Kubernetes, כדי לקרוא לשירות embed-docs כשמעלים מסמך חדש. השירות יוצר הטבעות למסמך שהועלה. embed-docs
השירות מאחסן את ההטמעות במסד נתונים וקטורי באמצעות מודל ההטמעה של Vertex AI.
בתרשים הבא מוצג התהליך של שאילת שאלות לגבי תוכן המסמך שהועלה באמצעות chatbot Service:
המשתמשים יכולים לשאול שאלות בשפה טבעית, והצ'אטבוט יוצר תשובות שמבוססות רק על התוכן של הקבצים שהועלו. הצ'אטבוט מאחזר הקשר ממסד הנתונים הווקטורי באמצעות חיפוש סמנטי, ואז שולח את השאלה וההקשר ל-Gemini.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.
כשמסיימים את המשימות שמתוארות במסמך הזה אפשר למחוק את המשאבים שיצרתם כדי להימנע מחיובים נוספים. מידע נוסף זמין בקטע הסרת המשאבים.
לפני שמתחילים
במדריך הזה משתמשים ב-Cloud Shell כדי להריץ פקודות. Cloud Shell היא סביבת מעטפת לניהול משאבים שמתארחים ב- Google Cloud. ב-Cloud Shell מותקנים מראש כלי שורת הפקודה Google Cloud CLI, kubectl ו-Terraform. אם אתם לא משתמשים ב-Cloud Shell, אתם צריכים להתקין את Google Cloud CLI.
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Google Cloud פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
יוצרים Google Cloud פרויקט:
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של פרויקט Google Cloud שיוצרים. -
בוחרים את הפרויקט שיצרתם: Google Cloud
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Google Cloud .
מפעילים את ממשקי ה-API של Vertex AI, Cloud Build, Eventarc ו-Artifact Registry:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידיםgcloud services enable aiplatform.googleapis.com
cloudbuild.googleapis.com eventarc.googleapis.com artifactregistry.googleapis.com -
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Google Cloud פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
יוצרים Google Cloud פרויקט:
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של פרויקט Google Cloud שיוצרים. -
בוחרים את הפרויקט שיצרתם: Google Cloud
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Google Cloud .
מפעילים את ממשקי ה-API של Vertex AI, Cloud Build, Eventarc ו-Artifact Registry:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידיםgcloud services enable aiplatform.googleapis.com
cloudbuild.googleapis.com eventarc.googleapis.com artifactregistry.googleapis.com -
מעניקים תפקידים לחשבון המשתמש. מריצים את הפקודה הבאה לכל אחד מהתפקידים הבאים ב-IAM:
eventarc.admingcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
USER_IDENTIFIER: המזהה של חשבון המשתמש . לדוגמה,myemail@example.com. -
ROLE: תפקיד ה-IAM שאתם מקצים לחשבון המשתמש.
-
יצירת אשכול
יצירת אשכול Qdrant, Elasticsearch או Postgres:
Qdrant
פועלים לפי ההוראות במאמר פריסת מסד נתונים של וקטורים של Qdrant ב-GKE כדי ליצור אשכול Qdrant שפועל במצב Autopilot או במצב Standard של אשכול GKE.
Elasticsearch
פועלים לפי ההוראות במאמר פריסת מסד נתונים וקטורי של Elasticsearch ב-GKE כדי ליצור אשכול Elasticsearch שפועל באשכול GKE במצב Autopilot או במצב רגיל.
PGVector
פועלים לפי ההוראות במאמר פריסת מסד נתונים של וקטורים ב-PostgreSQL ב-GKE כדי ליצור אשכול Postgres עם PGVector שפועל במצב Autopilot או במצב רגיל של אשכול GKE.
Weaviate
פועלים לפי ההוראות לפריסת מסד נתונים וקטורי של Weaviate ב-GKE כדי ליצור אשכול Weaviate שפועל באשכול GKE במצב Autopilot או במצב רגיל.
מגדירים את הסביבה
מגדירים את הסביבה באמצעות Cloud Shell:
מגדירים משתני סביבה לפרויקט:
Qdrant
export PROJECT_ID=PROJECT_ID export KUBERNETES_CLUSTER_PREFIX=qdrant export CONTROL_PLANE_LOCATION=us-central1 export REGION=us-central1 export DB_NAMESPACE=qdrantמחליפים את
PROJECT_IDבמזהה הפרויקט ב-Google Cloud .Elasticsearch
export PROJECT_ID=PROJECT_ID export KUBERNETES_CLUSTER_PREFIX=elasticsearch export CONTROL_PLANE_LOCATION=us-central1 export REGION=us-central1 export DB_NAMESPACE=elasticמחליפים את
PROJECT_IDבמזהה הפרויקט ב-Google Cloud .PGVector
export PROJECT_ID=PROJECT_ID export KUBERNETES_CLUSTER_PREFIX=postgres export CONTROL_PLANE_LOCATION=us-central1 export REGION=us-central1 export DB_NAMESPACE=pg-nsמחליפים את
PROJECT_IDבמזהה הפרויקט ב-Google Cloud .Weaviate
export PROJECT_ID=PROJECT_ID export KUBERNETES_CLUSTER_PREFIX=weaviate export CONTROL_PLANE_LOCATION=us-central1 export REGION=us-central1 export DB_NAMESPACE=weaviateמחליפים את
PROJECT_IDבמזהה הפרויקט ב-Google Cloud .מוודאים שקלאסטר ה-GKE פועל:
gcloud container clusters list --project=${PROJECT_ID} --location=${CONTROL_PLANE_LOCATION}הפלט אמור להיראות כך:
NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS [KUBERNETES_CLUSTER_PREFIX]-cluster us-central1 1.30.1-gke.1329003 <EXTERNAL IP> e2-standard-2 1.30.1-gke.1329003 6 RUNNINGמשכפלים את מאגר הקוד לדוגמה מ-GitHub:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samplesמנווטים לספרייה
databases:cd kubernetes-engine-samples/databases
הכנת התשתית
יצירת מאגר ב-Artifact Registry, יצירת קובצי אימג' של Docker והעברת קובצי אימג' של Docker בדחיפה אל Artifact Registry:
יוצרים מאגר Artifact Registry:
gcloud artifacts repositories create ${KUBERNETES_CLUSTER_PREFIX}-images \ --repository-format=docker \ --location=${REGION} \ --description="Vector database images repository" \ --asyncמגדירים את ההרשאות
storage.objectAdminו-artifactregistry.adminבחשבון השירות של Compute Engine כדי להשתמש ב-Cloud Build ליצירה ולדחיפה של תמונות Docker לשירותיםembed-docsו-chatbot.export PROJECT_NUMBER=PROJECT_NUMBER gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --role="roles/storage.objectAdmin" gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --role="roles/artifactregistry.admin"מחליפים את
PROJECT_NUMBERבמספר הפרויקט ב-Google Cloud .יוצרים קובצי אימג' של Docker לשירותים
embed-docsו-chatbot.embed-docsהתמונה מכילה קוד Python גם לאפליקציה שמקבלת בקשות להעברה של Eventarc וגם למשימת ההטמעה.Qdrant
export DOCKER_REPO="${REGION}-docker.pkg.dev/${PROJECT_ID}/${KUBERNETES_CLUSTER_PREFIX}-images" gcloud builds submit qdrant/docker/chatbot --region=${REGION} \ --tag ${DOCKER_REPO}/chatbot:1.0 --async gcloud builds submit qdrant/docker/embed-docs --region=${REGION} \ --tag ${DOCKER_REPO}/embed-docs:1.0 --asyncElasticsearch
export DOCKER_REPO="${REGION}-docker.pkg.dev/${PROJECT_ID}/${KUBERNETES_CLUSTER_PREFIX}-images" gcloud builds submit elasticsearch/docker/chatbot --region=${REGION} \ --tag ${DOCKER_REPO}/chatbot:1.0 --async gcloud builds submit elasticsearch/docker/embed-docs --region=${REGION} \ --tag ${DOCKER_REPO}/embed-docs:1.0 --asyncPGVector
export DOCKER_REPO="${REGION}-docker.pkg.dev/${PROJECT_ID}/${KUBERNETES_CLUSTER_PREFIX}-images" gcloud builds submit postgres-pgvector/docker/chatbot --region=${REGION} \ --tag ${DOCKER_REPO}/chatbot:1.0 --async gcloud builds submit postgres-pgvector/docker/embed-docs --region=${REGION} \ --tag ${DOCKER_REPO}/embed-docs:1.0 --asyncWeaviate
export DOCKER_REPO="${REGION}-docker.pkg.dev/${PROJECT_ID}/${KUBERNETES_CLUSTER_PREFIX}-images" gcloud builds submit weaviate/docker/chatbot --region=${REGION} \ --tag ${DOCKER_REPO}/chatbot:1.0 --async gcloud builds submit weaviate/docker/embed-docs --region=${REGION} \ --tag ${DOCKER_REPO}/embed-docs:1.0 --asyncמאמתים את התמונות:
gcloud artifacts docker images list $DOCKER_REPO \ --project=$PROJECT_ID \ --format="value(IMAGE)"הפלט אמור להיראות כך:
$REGION-docker.pkg.dev/$PROJECT_ID/${KUBERNETES_CLUSTER_PREFIX}-images/chatbot $REGION-docker.pkg.dev/$PROJECT_ID/${KUBERNETES_CLUSTER_PREFIX}-images/embed-docsפריסת חשבון שירות של Kubernetes עם הרשאות להפעלת משימות של Kubernetes:
Qdrant
sed "s/<PROJECT_ID>/$PROJECT_ID/;s/<CLUSTER_PREFIX>/$KUBERNETES_CLUSTER_PREFIX/" qdrant/manifests/05-rag/service-account.yaml | kubectl -n qdrant apply -f -Elasticsearch
sed "s/<PROJECT_ID>/$PROJECT_ID/;s/<CLUSTER_PREFIX>/$KUBERNETES_CLUSTER_PREFIX/" elasticsearch/manifests/05-rag/service-account.yaml | kubectl -n elastic apply -f -PGVector
sed "s/<PROJECT_ID>/$PROJECT_ID/;s/<CLUSTER_PREFIX>/$KUBERNETES_CLUSTER_PREFIX/" postgres-pgvector/manifests/03-rag/service-account.yaml | kubectl -n pg-ns apply -f -Weaviate
sed "s/<PROJECT_ID>/$PROJECT_ID/;s/<CLUSTER_PREFIX>/$KUBERNETES_CLUSTER_PREFIX/" weaviate/manifests/04-rag/service-account.yaml | kubectl -n weaviate apply -f -כשמשתמשים ב-Terraform כדי ליצור את אשכול GKE והערך של
create_service_accountמוגדר כ-true, נוצר חשבון שירות נפרד שמשמש את האשכול והצמתים. צריך להקצות את התפקידartifactregistry.serviceAgentלחשבון השירות הזה של Compute Engine כדי שהצמתים יוכלו לשלוף תמונה מ-Artifact Registry שנוצר עבורembed-docsו-chatbot.export CLUSTER_SERVICE_ACCOUNT=$(gcloud container clusters describe ${KUBERNETES_CLUSTER_PREFIX}-cluster \ --location=${CONTROL_PLANE_LOCATION} \ --format="value(nodeConfig.serviceAccount)") gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${CLUSTER_SERVICE_ACCOUNT}" \ --role="roles/artifactregistry.serviceAgent"אם לא תעניקו גישה לחשבון השירות, יכול להיות שהצמתים שלכם ייתקלו בבעיית הרשאה בניסיון למשוך תמונה מ-Artifact Registry כשמנסים לפרוס את השירותים
embed-docsו-chatbot.פורסים Kubernetes Deployment לשירותים
embed-docsו-chatbot. פריסה היא אובייקט Kubernetes API שמאפשר להפעיל כמה רפליקות של Pods שמפוזרות בין הצמתים באשכול:Qdrant
sed "s|<DOCKER_REPO>|$DOCKER_REPO|" qdrant/manifests/05-rag/chatbot.yaml | kubectl -n qdrant apply -f - sed "s|<DOCKER_REPO>|$DOCKER_REPO|" qdrant/manifests/05-rag/docs-embedder.yaml | kubectl -n qdrant apply -f -Elasticsearch
sed "s|<DOCKER_REPO>|$DOCKER_REPO|" elasticsearch/manifests/05-rag/chatbot.yaml | kubectl -n elastic apply -f - sed "s|<DOCKER_REPO>|$DOCKER_REPO|" elasticsearch/manifests/05-rag/docs-embedder.yaml | kubectl -n elastic apply -f -PGVector
sed "s|<DOCKER_REPO>|$DOCKER_REPO|" postgres-pgvector/manifests/03-rag/chatbot.yaml | kubectl -n pg-ns apply -f - sed "s|<DOCKER_REPO>|$DOCKER_REPO|" postgres-pgvector/manifests/03-rag/docs-embedder.yaml | kubectl -n pg-ns apply -f -Weaviate
sed "s|<DOCKER_REPO>|$DOCKER_REPO|" weaviate/manifests/04-rag/chatbot.yaml | kubectl -n weaviate apply -f - sed "s|<DOCKER_REPO>|$DOCKER_REPO|" weaviate/manifests/04-rag/docs-embedder.yaml | kubectl -n weaviate apply -f -הפעלת טריגרים של Eventarc ל-GKE:
gcloud eventarc gke-destinations initכשתופיע בקשה, כותבים
y.פורסים את קטגוריית Cloud Storage ויוצרים טריגר Eventarc באמצעות Terraform:
export GOOGLE_OAUTH_ACCESS_TOKEN=$(gcloud auth print-access-token) terraform -chdir=vector-database/terraform/cloud-storage init terraform -chdir=vector-database/terraform/cloud-storage apply \ -var project_id=${PROJECT_ID} \ -var region=${REGION} \ -var cluster_prefix=${KUBERNETES_CLUSTER_PREFIX} \ -var db_namespace=${DB_NAMESPACE}כשמופיעה בקשה, כותבים
yes. יכול להיות שהפקודה תימשך כמה דקות.Terraform יוצר את המשאבים הבאים:
- קטגוריה של Cloud Storage להעלאת המסמכים
- טריגר Eventarc
- Google Cloud חשבון שירות בשם
service_account_eventarc_nameעם הרשאה להשתמש ב-Eventarc. - חשבון שירות בשם
service_account_bucket_nameעם הרשאה לקרוא את הקטגוריה ולגשת למודלים של Vertex AI. Google Cloud
הפלט אמור להיראות כך:
... # Several lines of output omitted Apply complete! Resources: 15 added, 0 changed, 0 destroyed. ... # Several lines of output omitted
טעינת מסמכים והרצת שאילתות בצ'אטבוט
מעלים את מסמכי ההדגמה ומריצים שאילתות כדי לחפש במסמכי ההדגמה באמצעות הצ'אטבוט:
מעלים את המסמך לדוגמה
carbon-free-energy.pdfלקטגוריה:gcloud storage cp vector-database/documents/carbon-free-energy.pdf gs://${PROJECT_ID}-${KUBERNETES_CLUSTER_PREFIX}-training-docsמוודאים שמשימת הטמעת המסמך הושלמה בהצלחה:
kubectl get job -n ${DB_NAMESPACE}הפלט אמור להיראות כך:
NAME COMPLETIONS DURATION AGE docs-embedder1716570453361446 1/1 32s 71sמקבלים את כתובת ה-IP החיצונית של מאזן העומסים:
export EXTERNAL_IP=$(kubectl -n ${DB_NAMESPACE} get svc chatbot --output jsonpath='{.status.loadBalancer.ingress[0].ip}') echo http://${EXTERNAL_IP}:80פותחים את כתובת ה-IP החיצונית בדפדפן האינטרנט:
http://EXTERNAL_IPצ'אטבוט ישיב בהודעה שדומה להודעה הבאה:
How can I help you?לשאול שאלות לגבי התוכן של המסמכים שהועלו. אם הצ'אטבוט לא מוצא כלום, הוא עונה
I don't know. לדוגמה, אפשר לשאול את השאלות הבאות:You: Hi, what are Google plans for the future?פלט לדוגמה מהצ'אטבוט:
Bot: Google intends to run on carbon-free energy everywhere, at all times by 2030. To achieve this, it will rely on a combination of renewable energy sources, such as wind and solar, and carbon-free technologies, such as battery storage.לשאול את הצ'אט בוט שאלה שלא קשורה להקשר של המסמך שהועלה. לדוגמה, אתם יכולים לשאול את השאלות הבאות:
You: What are Google plans to colonize Mars?פלט לדוגמה מהצ'אטבוט:
Bot: I don't know. The provided context does not mention anything about Google's plans to colonize Mars.
מידע על קוד האפליקציה
בקטע הזה מוסבר איך קוד האפליקציה פועל. יש שלושה סקריפטים בתוך קובצי האימג' של Docker:
-
endpoint.py: מקבל אירועי Eventarc בכל העלאה של מסמך ומפעיל את משימות Kubernetes כדי לעבד אותם. -
embedding-job.py: מוריד מסמכים מהמאגר, יוצר הטמעות ומכניס אותן למסד הנתונים הווקטורי. -
chat.py: מריץ שאילתות על התוכן של מסמכים מאוחסנים.
בתרשים מוצג תהליך יצירת התשובות באמצעות נתונים מהמסמכים:
בתרשים, האפליקציה טוענת קובץ PDF, מפצלת את הקובץ למקטעים, ואז לוקטורים, ואז שולחת את הווקטורים למסד נתונים וקטורי. בשלב מאוחר יותר, משתמש שואל שאלה את הצ'אטבוט. שרשרת ה-RAG משתמשת בחיפוש סמנטי כדי לחפש במסד הנתונים הווקטורי, ואז מחזירה את ההקשר יחד עם השאלה ל-LLM. מודל ה-LLM עונה על השאלה ושומר אותה בהיסטוריית הצ'אט.
מידע על endpoint.py
הקובץ הזה מעבד הודעות מ-Eventarc, יוצר Kubernetes Job להטמעת המסמך ומקבל בקשות מכל מקום ביציאה 5001
Qdrant
Elasticsearch
PGVector
Weaviate
מידע על embedding-job.py
הקובץ הזה מעבד מסמכים ושולח אותם למאגר הנתונים הווקטורי.
Qdrant
Elasticsearch
PGVector
Weaviate
מידע על chat.py
קובץ ההגדרה הזה מגדיר את המודל לענות על שאלות רק באמצעות ההקשר שסופק והתשובות הקודמות. אם ההקשר או היסטוריית השיחה לא תואמים לאף נתון, המודל מחזיר I don't know.
Qdrant
Elasticsearch
PGVector
Weaviate
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
מחיקת הפרויקט
הדרך הקלה ביותר להימנע מחיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך הזה.
כדי למחוק Google Cloud פרויקט:
gcloud projects delete PROJECT_ID
אם מחקתם את הפרויקט, סיימתם את הניקוי. אם לא מחקתם את הפרויקט, צריך למחוק את המשאבים בנפרד.
מחיקת משאבים בודדים
מחיקת מאגר Artifact Registry:
gcloud artifacts repositories delete ${KUBERNETES_CLUSTER_PREFIX}-images \ --location=${REGION} \ --asyncכשמופיעה בקשה, כותבים
y.מחיקת קטגוריית Cloud Storage והטריגר של Eventarc:
export GOOGLE_OAUTH_ACCESS_TOKEN=$(gcloud auth print-access-token) terraform -chdir=vector-database/terraform/cloud-storage destroy \ -var project_id=${PROJECT_ID} \ -var region=${REGION} \ -var cluster_prefix=${KUBERNETES_CLUSTER_PREFIX} \ -var db_namespace=${DB_NAMESPACE}כשמופיעה בקשה, כותבים
yes.כדי ליצור ולמחוק נקודת יעד ב-Eventarc, צריך לוודא שהיא תקפה.