1. Giriş
Bu codelab'de, "Petverse" için dağıtılmış bir bilgi edinme ardışık düzeni oluşturacaksınız. Cloud Storage paketindeki yapılandırılmamış multimedya öğelerini (ses, video, Görseller, metin/CSV) işleyecek, evcil hayvanlarla ilgili temel bilgileri (en sevdiği yemek, hobileri) çıkaracak ve bir Bilgi Grafiği oluşturacaksınız. Google Kubernetes Engine'de (GKE) Gemini çok formatlı işleme özelliğini kullanarak çoklu ortam dosyasının işlenmesini ölçeklendireceksiniz. Son olarak, bu verileri BigQuery'de depolayacak ve ilişkileri analiz etmek için yeni BigQuery Property Graph özelliğini kullanacaksınız.
Yüksek hacimli verilerin paralel olarak işlenmesini göstermek için Google Kubernetes Engine'in gücünden yararlanacağız.
Neden bilgi grafikleri?
Bilgi grafikleri, varlıklar arasındaki karmaşık ilişkileri temsil etme ve analiz etme konusunda geleneksel ilişkisel veritabanlarından daha uygundur.
Resimleri, sesleri ve video dosyalarını analiz etmek ve farklı evcil hayvanlar hakkında bilgiler edinmek için Gemini 2.5 Flash'i kullanacağız.

Yapacaklarınız
- GKE'de dağıtılmış bir veri işleme işi oluşturup dağıtın.
- Gemini'ı kullanarak multimedya dosyalarından öğeleri ve ilişkileri ayıklayın.
- Bilgi grafiği verilerini BigQuery'de depolayın.
- Grafik Sorgu Dili'ni (GQL) kullanarak BigQuery'de Özellik Grafiği oluşturma ve sorgulama
İhtiyacınız olanlar
- Chrome gibi bir web tarayıcısı
- Faturalandırmanın etkin olduğu bir Google Cloud projesi
- Kaynak oluşturmak ve IAM politikalarını değiştirmek için projedeki izinler
Bu codelab, yeni başlayanlar da dahil olmak üzere her seviyeden geliştiriciye yöneliktir.
Tahmini Süre: 45 dakika
Maliyet: Bu codelab'de oluşturulan kaynakların maliyeti 5 ABD dolarından az olmalıdır.
2. Başlamadan önce
Google Cloud projesi oluşturma
- Google Cloud Console'a (https://console.cloud.google.com) gidin ve bir Google Cloud projesi seçin veya oluşturun.
- ⚠️ Proje kimliğini not edin. Bu laboratuvarda çeşitli komutlar için bu bilgiyi kullanacaksınız.

Cloud Shell'i Başlatma
- Yeni sekmede Cloud Shell'i açın: https://shell.cloud.google.com/.
- İstenirse Yetkilendir'i tıklayın.
PROJECT_IDyerine aşağıdaki komutu kopyalayıp terminale yapıştırın:
export PROJECT_ID="YOUR_PROJECT_ID"
gcloud config set project $PROJECT_ID

📝 Not: Projeniz komut satırında sarı renkte gösterilir. Oturumunuz yeniden başlarsa proje kimliğini ayarlamak için yukarıdaki komutu yeniden çalıştırdığınızdan emin olun.
API'leri etkinleştir
Gerekli tüm API'leri etkinleştirmek için bu komutu çalıştırın:
gcloud services enable \
aiplatform.googleapis.com \
bigquery.googleapis.com \
artifactregistry.googleapis.com \
container.googleapis.com \
cloudbuild.googleapis.com \
pubsub.googleapis.com
Kod deposunu klonla
Depoyu klonlamak için aşağıdaki komutları çalıştırın.
cd ~/
git clone --filter=blob:none --no-checkout https://github.com/GoogleCloudPlatform/devrel-demos.git
cd ~/devrel-demos
git sparse-checkout init --cone
git sparse-checkout set codelabs/gke-knowledge-graph
git checkout main
cd codelabs/gke-knowledge-graph/
Kurulum komut dosyasını çalıştırın
Bu komut dosyası, arka uç yapılandırmasını şu şekilde otomatikleştirir:
- Container görüntüsü ve Artifact Registry deposu oluşturma
- BigQuery veri kümesi oluşturma
- SQL'den Gemini yapay zeka işlevlerini yürütmek için BigQuery bağlantısı oluşturma
Terminalinizde aşağıdaki komutu çalıştırın:
./scripts/setup.sh
Komut dosyası yapılandırma ayrıntılarını isterse şu değerleri kullanın:
- Proje kimliği: Önceki adımda oluşturduğunuz kimliği kullanın.
- Bölge:
us-central1
⚠️ Önemli: Komut dosyasının tamamlanması birkaç dakika sürer. Arka planda tamamlamak için bu terminal penceresini açık bırakın. Sonraki adıma geçmek için yeni bir terminal sekmesi veya penceresi açarak sonraki komutlarınızı çalıştırın.

3. Veri Aracısı Kitini kurma
- Sağ üst köşedeki kalem simgesini kullanarak Cloud Shell Düzenleyici'yi etkinleştirin.
- Cloud Shell Düzenleyici'de, soldaki kenar çubuğunda Uzantılar simgesini tıklayın.
- Google Cloud Data Agent Kit'i arayın ve henüz yüklenmemişse Yükle'yi tıklayın.

- Uzantıyla Google Hesabınızda oturum açın.
- Yapılandırma Özeti'nde proje kimliğinizi ve bölge olarak
us-central1girin.

- MCP Sunucularını Yapılandır'ı tıklayın. Bu pencerede herhangi bir değişiklik yapmanız gerekmez. Başlayın'ı tıklamanız yeterlidir.
- İstenirse pencereyi yeniden yükleyin. Şimdilik Hızlı Başlangıç Kılavuzu sekmesini kapatabilirsiniz.
BigQuery'de tabloları ayarlama
- Kenar çubuğunda, Explorer'a dönün. Ana klasörünüz (ör.
/home/your_user_name/) henüz açık değilse Open Folder'ı (Klasör Aç) tıklayın ve klasörünüzü seçin.

- Gezgin penceresinde, depodan klonladığınız klasörü (
devrel-demos) bulun.codelabs/gke-knowledge-graph/scriptsaltındacreate_tables.sql'ı görürsünüz. İlgili dosyayı açın. - Sağ üstte Sorgu Ayarlarını Aç'ı tıklayın.
- BigQuery'yi seçin. Kaydet ve Kapat'ı tıklayın.
- Çalıştır'ı tıklayın.
İki ifadenin başarıyla yürütüldüğünü görmeniz gerekir. Artık bilgi grafiğinizdeki düğümleri ve kenarları depolayacak tabloları oluşturdunuz.
create_tables.sql sekmesini ve sonuç konsolunu kapatabilirsiniz.

4. GKE kümesini başlatma
Veri işleme işimizi çalıştırmak için GKE Autopilot'u kullanacağız. Autopilot, küme altyapısını sizin için yönettiğinden önerilen en iyi uygulamadır.
Kurulum komut dosyası bu noktada tamamlanmış olmalıdır. İşlemin başarılı olduğunu belirten bir mesaj görmeniz gerekir: 🎉🦄 Setup successfully finished! 🎉🦄.
Kümeyi oluşturmak için bu komutu terminale yapıştırın:
source scripts/setenv.sh
gcloud container clusters create-auto petverse-cluster \
--region=$REGION
🕓 Bu işlem yaklaşık 5 dakika sürer.
Kümeyle etkileşim kurmak için kimlik bilgilerini alın:
source scripts/setenv.sh
gcloud container clusters get-credentials petverse-cluster --region $REGION
Şu çıkışı görürsünüz:
Fetching cluster endpoint and auth data. kubeconfig entry generated for petverse-cluster.
5. Workload Identity'yi yapılandırma
GKE için Workload Identity Federation (Doğrudan Kaynak Erişimi kullanılarak), GKE iş yüklerinizin hizmet hesabı anahtarlarını yönetmenize gerek kalmadan Google Cloud hizmetlerine güvenli bir şekilde erişmesini sağlar.
deploy.sh komutunu şu amaçla yürütün:
- Kubernetes hizmet hesabı oluşturma
- Gerekli IAM rollerini doğrudan Kubernetes hizmet hesabı asıl sorumlusuna atama
- IAM hizmet hesabını Kubernetes hizmet hesabına bağlama
- Bağlantıyı tamamlamak için Kubernetes hizmet hesabına açıklama ekleyin
source scripts/setenv.sh
./scripts/deploy.sh
6. Ayrılmış işleme işlerini dağıtma
Bu adımda, kuyruğa alıcıyı (üretici) ve işleme motorlarını (çalışanlar) GKE'ye dağıtacaksınız.
Yeni ayrılmış mimarimiz, öğeleri eşzamansız olarak işlemek için Google Cloud Pub/Sub'ı kullanır:
- Üretici, GCS'yi tarar ve tüm dosya yollarını bir Pub/Sub kuyruğuna ekler.
- Bir işçi havuzu, GKE'de ölçeklenir, görevleri dinamik olarak paralel şekilde çeker, Gemini aracılığıyla işler ve BigQuery'ye yazar.
setup.sh komut dosyası, hem Producer hem de Worker kapsayıcı görüntülerini oluşturup aktardı, Pub/Sub konularını sıraya aldı ve GKE dağıtım manifestlerinizi (job-producer.yaml ve job-worker.yaml) dinamik olarak oluşturdu.
- Depolama paketinizi taramak ve tüm öğeleri sıraya almak için Producer Job'ı uygulayın:
kubectl apply -f job-producer.yaml
Bu iş yalnızca meta verileri sıraya aldığından hızlı bir şekilde çalışır ve tamamlanır.
- Kuyruğu boşaltmak için 6 paralel çalışan çalıştıracak şekilde yapılandırılmış Worker Job'u dağıtın:
kubectl apply -f job-worker.yaml
GKE Autopilot, bekleyen kapsülleri otomatik olarak algılar, işlem düğümlerini dinamik olarak ölçeği artırır ve sıraya alınmış sesleri, videoları, resimleri ve CSV'leri işlemek için çalışanları paralel olarak çalıştırır.
7. Sonuçları Doğrulama
- İşlerinizin durumunu kontrol etme:
kubectl get jobs
Hem petverse-producer-job hem de petverse-worker-job başarılı bir şekilde tamamlanana kadar bekleyin.
🕓 Bu işlem yaklaşık 10 dakika sürer. Aşağıdaki komutlarla ilerleme durumunu görebilirsiniz.
- Dosyaları başarıyla sıraya aldığını doğrulamak için üreticinin günlüklerini kontrol edin:
cd ~/devrel-demos/codelabs/gke-knowledge-graph
source scripts/setenv.sh
kubectl logs -l app=petverse-producer --tail=50
- Paralel çalışanlarınızın kuyruktaki dosyaları işlemesini izleyin:
kubectl logs -l app=petverse-worker --tail=50
(Çalışanlar 60 saniyelik boşta kalma zaman aşımına sahiptir ve Pub/Sub sırası boş olduğunda otomatik olarak kapatılıp temizlenir).
BigQuery'deki verileri doğrulayın.
- BigQuery Studio'ya gidin. petverse_kg.Nodes ve petverse_kg.Edges olmak üzere iki tablo oluşturulur.

- Tabloların içeriğini görmek için adlarını çift tıklayın ve Önizleme'yi tıklayın.

Düğümler tablosunda, Gemini'ın ses, video ve resimlerde tespit ettiği öğelerle ilgili bilgiler yer alır. Edges tablosu, bunlar arasındaki ilişkileri içerir. Örneğin, SQL adlı kedinin sesini dinlerseniz ayakkabı bağcıklarıyla oynamayı ve dondurularak kurutulmuş balıkları sevdiğini öğrenirsiniz.
- Yeni sorgu oluşturmak için + düğmesini kullanın. Aşağıdaki ifadeyi yapıştırıp Çalıştır'ı tıklayın:
SELECT n.name, n.entity_id, e.relationship, e.target_id
FROM
`petverse_kg.Nodes` n
JOIN
`petverse_kg.Edges` e
ON n.entity_id = e.source_id
WHERE n.name = 'SQL'
- Yeni sorgu oluşturmak için + düğmesini kullanın. Aşağıdaki ifadeyi yapıştırıp Çalıştır'ı tıklayın:
SELECT name, entity_type, pet_bio,
AI.SIMILARITY('Pets who like to relax', pet_bio, endpoint => 'text-embedding-005') as similarity_score
FROM `petverse_kg.Nodes`
WHERE name IS NOT NULL
ORDER BY similarity_score DESC
LIMIT 5
Rahatlamayı seven evcil hayvanlarla ilgili düğümleri görürsünüz. Bu sorgu, biyografileri sorgu metnine en çok benzeyen evcil hayvanları bulmak için AI.SIMILARITY yapay zeka işlevini kullanarak anlamsal arama gerçekleştirdi.

Mülk grafiğini oluşturma
BigQuery'de düğümler ve kenarlar olduğuna göre artık ilişkileri kolayca sorgulamak için bir Özellik Grafiği oluşturabiliriz.
Grafiği oluşturma
- Önceki sorgunun üzerine yazın ve özellik grafiğini oluşturmak için aşağıdaki DDL'yi çalıştırın:
CREATE OR REPLACE PROPERTY GRAPH `petverse_kg.knowledge_graph`
NODE TABLES (
`petverse_kg.Nodes` AS `Nodes`
KEY (`entity_id`)
LABEL `Nodes` PROPERTIES (entity_id AS `entity_id`, entity_type AS `entity_type`, name AS `name`, pet_bio AS `pet_bio`, properties AS `properties`, bio_embedding AS `bio_embedding`))
EDGE TABLES (
`petverse_kg.Edges` AS `Edges`
KEY (`source_id`,`target_id`,`relationship`)
SOURCE KEY (`source_id`)
REFERENCES `Nodes` (`entity_id`)
DESTINATION KEY (`target_id`)
REFERENCES `Nodes` (`entity_id`)
LABEL `Edges` PROPERTIES (properties AS `properties`));
- Grafiğe git'i tıklayın. Kendisine bağlı bir kenarı olan düğüm içeren grafik görselleştirmesini görürsünüz. Bu beklenen bir durumdur.

Grafiği sorgulama
- + düğmesini kullanarak önceki tüm sorguları kapatabilir ve yeni bir boş sorgu açabilirsiniz.
- GQL'yi kullanarak ortak ilgi alanları (ör. hobiler, en sevilen yemekler veya oyuncaklar) üzerinden diğer evcil hayvanlarla ilişkili evcil hayvanları bulabilirsiniz. Bu çok adımlı sorgu, aynı düğüme bağlı iki farklı evcil hayvanla eşleşiyor:
GRAPH `petverse_kg.knowledge_graph`
MATCH p = (pet1:Nodes)-[e1]->(interest:Nodes)<-[e2]-(pet2:Nodes)
WHERE pet1.entity_id != pet2.entity_id
AND (LOWER(pet1.entity_type) = 'pet' AND LOWER(pet2.entity_type) = 'pet')
AND LOWER(interest.entity_type) IN ('hobby', 'action', 'activity', 'food', 'toy')
RETURN TO_JSON(p) as res
LIMIT 100
- Grafiğin görselleştirilmiş halini görürsünüz. Düğümlerin ve kenarların özelliklerini görmek için düğümleri tıklayabilirsiniz.

🕵️ İpucu: Şema görünümüne geç'i tıklayarak düğümün gösterdiği değeri ayarlayabilirsiniz:

- Açık tüm sorgu sekmelerini kapatabilirsiniz.
8. Grafikle sohbet etme
- + işaretinin yanında bir açılır menü bulunur. Sohbet'i seçin.

- Gemini ile Veri Analizi API'sini etkinleştirmeniz istenir. Her iki API'yi de etkinleştirin. Bu işlem tamamlandıktan sonra, pencereyi yenileyin veya yeni bir sohbet oluşturarak temsilciyi görün.
- New Agent'ı (Yeni Ajan) tıklayın.
- Temsilciye
petversegibi bir ad verin. - Kaynak ekle'yi ve ardından Grafik'i tıklayın.
- Oluşturduğunuz
knowledge_graphöğesini seçin ve Ekle'yi tıklayın.

Artık ajana soru sorabilir, yanıtları ve bu yanıtların gerekçelerini görebilirsiniz. İlham almak için aşağıdaki örnek sorulara göz atabilirsiniz. Düşünme modeli biraz daha uzun sürebilir ancak daha iyi bir GQL sorgusu oluşturma olasılığı daha yüksektir. Show Thinking seçeneğini genişleterek neyin oluşturulduğunu görebilirsiniz.
- Benzer yiyecekleri yiyen, uyumayı seven evcil hayvanlarla arkadaş olan evcil hayvanları bulabilirsiniz.
- Evcil hayvanlarınızın hobileri, en sevdikleri yiyecekler veya oyuncaklar aynı mı? Çiftleri ve ortak ilgi alanlarını listeleyin.
- Aynı tür veya cins olup tamamen farklı hobileri olan evcil hayvanları bulabilirsiniz.
9. Temizleme
Google Cloud hesabınızın sürekli olarak ücretlendirilmesini önlemek için bu codelab sırasında oluşturulan kaynakları silin.
- GKE kümesini silin:
gcloud container clusters delete petverse-cluster --region $REGION --quiet
- BigQuery veri kümesini silin (bu işlem tüm tabloları siler):
bq rm -r -f -d $PROJECT_ID:petverse_kg
- Pub/Sub sıra kaynaklarını silin:
gcloud pubsub subscriptions delete petverse-sub --quiet
gcloud pubsub topics delete petverse-topic --quiet
- Artifact Registry deposunu silin:
gcloud artifacts repositories delete gke-cats-repo --location=$REGION --quiet
- Projeye özel GCS paketini silin:
gcloud storage buckets delete gs://$PROJECT_ID-petverse --quiet
10. Tebrikler
Tebrikler! GKE ve Gemini'ı kullanarak dağıtılmış bir bilgi grafiği ardışık düzenini başarıyla oluşturdunuz ve BigQuery Property Graphs'ı kullanarak sorguladınız.
Öğrendikleriniz
- GKE Autopilot'ta dağıtılmış işleri dağıtma
- Çok formatlı veri ayıklama için Gemini'ı kullanma
- BigQuery otomatik yerleştirmelerini kullanma
- BigQuery'de Özellik Grafikleri oluşturma ve sorgulama