Karanlık Verileri Yapılandırılmış Değerlere Dönüştürme

1. Genel Bakış

Hepimiz "karanlık verilerin" ne kadar can sıkıcı olduğunu biliyoruz. Bunlar, bulut depolama alanında bulunan ve SQL sorgularınız ile BI kontrol panelleriniz için tamamen görünmez olan PDF'ler, resimler ve metin dosyalarıdır. Geleneksel olarak bu verilerin kilidini açmak için karmaşık OCR ardışık düzenleri, manuel veri girişi veya hassas özel komut dosyaları gerekiyordu.

Artık sorun değil.

Bu laboratuvarda, metin, tablo ve resim içeren 400 yapılandırılmamış PDF dosyasını, aralarındaki ilişkilerin otomatik olarak çıkarıldığı, temiz bir şekilde yapılandırılmış BigQuery tablolarına nasıl dönüştüreceğinizi göstereceğim. BigQuery Knowledge Catalog ve Dataplex'i kullanarak bu işlemi dakikalar içinde yapacağız.

Ne oluşturacaksınız?

Bu durumu somutlaştırmak için kurgusal bir işletmeye, hızlı büyüyen bir dondurulmuş yoğurt franchise'ına göz atalım.

Bu Froyo işletmesinin verilerini yönettiğinizi düşünün. Yüzlerce tarifiniz ve tedarikçi spesifikasyon sayfanız var. Bunların hepsi PDF olarak kaydedilmiş. İşletme yöneticileri, mağaza yöneticilerinin ve müşterilerin ürün ayrıntılarını sorgulamasına yardımcı olacak bir yapay zeka ajanı başlatmak istiyor.

Korkunç senaryo: Bir müşteri, "Midnight Swirl adlı frozen yoğurt ürününüzle çok ilgileniyorum. Alerjen içeriyor mu?"

Bu soruyu yanıtlamak için sisteminizin normalde şunları yapması gerekir:

  1. "Midnight Swirl" tarifi PDF'sini bulun.
  2. Malzemeleri (ör. "Kakao Tozu", "Süt Bazı", "Emülgatör X") okuyun.
  3. Düzinelerce tedarikçi PDF'si arasında arama yaparak söz konusu malzemelerin spesifikasyon sayfalarını bulabilirsiniz.
  4. Bu malzemelerle ilişkili gizli alerjenler için tedarikçi sayfalarını kontrol edin.

Çalışma zamanında 400 ham PDF'yi okuyarak bunu anında yapan bir yapay zeka aracısı oluşturmaya çalışmak yavaş, pahalı ve halüsinasyona yatkındır. Bunun yerine, tüm bunları önce ilişkisel bir veritabanına ayıklamak için anlamsal çıkarım kullanacağız. Böylece gelecekteki yapay zeka aracımız ışık hızında çalışacak ve% 100 olgusal SQL verilerine dayanacak.

Oluşturmaya başlayalım.

2381f1453211387d.png

Neler öğreneceksiniz?

  • Kaynak dosyalar (PDF'ler) için Cloud Storage paketi oluşturma
  • Kaynak PDF'lerden veri ayıklamak, bağlantıları ve bağlamı anlamsal olarak tahmin etmek ve bunları BigQuery'de depolamak için Bilgi Kataloğu'nda Datascan işini ve anlamsal çıkarımı ayarlama ve çalıştırma
  • Yeni oluşturulan veri kümesiyle sohbet etmek için BigQuery Ajanları'nı kullanma

Şartlar

  • Chrome veya Firefox gibi bir tarayıcı
  • Faturalandırmanın etkin olduğu bir Google Cloud projesi.
  • SQL ve Java hakkında temel düzeyde bilgi sahibi olmanız gerekir.

2. Başlamadan önce

Proje oluşturma

  1. Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun.
  2. Cloud projeniz için faturalandırmanın etkinleştirildiğinden emin olun. Bir projede faturalandırmanın etkin olup olmadığını kontrol etmeyi öğrenin.
  1. Google Cloud'da çalışan bir komut satırı ortamı olan Cloud Shell'i kullanacaksınız. Google Cloud Console'un üst kısmında Cloud Shell'i Etkinleştir'i tıklayın.

Cloud Shell'i etkinleştir düğmesinin resmi

  1. Cloud Shell'e bağlandıktan sonra aşağıdaki komutu kullanarak kimliğinizin doğrulandığını ve projenin proje kimliğinize ayarlandığını kontrol edin:
gcloud auth list
  1. gcloud komutunun projeniz hakkında bilgi sahibi olduğunu onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın.
gcloud config list project
  1. Kimlik doğrulamak istiyorsanız
gcloud auth login
  1. Projeniz ayarlanmamışsa ayarlamak için aşağıdaki komutu kullanın:
export PROJECT_ID=<YOUR_PROJECT_ID>
gcloud config set project <YOUR_PROJECT_ID>
  1. Gerekli API'leri etkinleştirin: Gerekli tüm API'leri etkinleştirmek için şu komutu çalıştırın:
gcloud services enable \
    dataplex.googleapis.com \
    datacatalog.googleapis.com \
    discoveryengine.googleapis.com \
    bigqueryconnection.googleapis.com \
    bigquery.googleapis.com \
    aiplatform.googleapis.com \
    cloudresourcemanager.googleapis.com \
    serviceusage.googleapis.com \
    storage.googleapis.com

Dikkat Edilmesi Gerekenler ve Sorun Giderme

"Hayalet Proje" Sendromu

gcloud config set project komutunu çalıştırdınız ancak Console kullanıcı arayüzünde aslında farklı bir projeye bakıyorsunuz. Sol üstteki açılır listede proje kimliğini kontrol edin.

Faturalandırma Barikatı

Projeyi etkinleştirdiniz ancak faturalandırma hesabını unuttunuz. AlloyDB yüksek performanslı bir motordur. "Yakıt deposu" (faturalandırma) boşsa çalışmaz.

API Yayılımı Gecikmesi

"API'leri etkinleştir"i tıkladınız ancak komut satırında hâlâ Service Not Enabled yazıyor. 60 saniye bekleyin. Bulutun nöronlarını uyandırması biraz zaman alabilir.

Kota Quags

Yeni bir deneme hesabı kullanıyorsanız AlloyDB örnekleri için bölgesel kotaya ulaşabilirsiniz. us-central1 başarısız olursa us-east1'ı deneyin.

"Gizli" Hizmet Aracısı

Bazen AlloyDB hizmet aracısına aiplatform.user rolü otomatik olarak verilmez. SQL sorgularınız daha sonra Gemini ile iletişim kuramıyorsa genellikle sorun bundan kaynaklanır.

3. Google Cloud Storage paketi kurulumu

Bu bölümde, özellikle Froyo ürün ayrıntıları için Froyo tarifi ve tedarikçi verilerini depolamak üzere BigQuery'de bir kuruluş yapısı oluşturacaksınız. Ayrıca, BigQuery'nin Cloud Storage gibi harici kaynaklardaki dosyaları okumasına olanak tanıyan güvenli bir "köprü" görevi gören bir Cloud Resource Connection (Bulut Kaynağı Bağlantısı) oluşturur.

Başlamadan önce:

Bu depoda, bu projede kullanacağımız tarifler ve tedarikçilerin PDF dosyaları yer alıyor. Bu dosyaları indirdiğinizden emin olun. Dosyaları indirmek için aşağıdakileri yapın.

Cloud Shell'de aşağıdaki komutu çalıştırın:

git clone --depth 1 --filter=blob:none --sparse https://github.com/GoogleCloudPlatform/next-26-keynotes.git

Yeni oluşturulan klasöre gidin:

cd next-26-keynotes

data-cloud-demo klasörünü çekin.

git sparse-checkout set genkey/data-cloud-demo

Ödeme işlemi tamamlandıktan sonra data-cloud-demo klasörüne gidin ve codelab öğelerine erişmek için ZIP dosyalarını çıkarın.

Paket oluşturma ve Froyo (tarifler ve tedarikçiler) PDF dosyalarını yükleme

  1. Google Cloud Console'da Cloud Storage Paketleri sayfasına gidin.
  2. Oluştur'u tıklayın.
  3. Paket oluştur sayfasında paket bilgilerinizi girin. Aşağıdaki adımların her birinden sonra bir sonraki adıma geçmek için Devam'ı tıklayın:
  4. Başlayın bölümünde paket adını girin. Örnek: froyo_data
  5. Verilerinizi nerede depolayacağınızı seçin bölümünde Bölge'yi belirleyin ve bölgenizi girin. us-central1
  6. Nesnelere erişimi nasıl denetleyeceğinizi seçin bölümünde, "Bu pakette herkese açık erişim engeli uygula" onay kutusunun işaretini kaldırın.
  7. Oluştur'u tıklayın.
  8. Paketler listesinde, oluşturduğunuz paketi tıklayın.
  9. Paketin Nesneler sekmesinde Yükle'yi ve ardından Klasörleri yükle'yi tıklayın.
  10. Bu codelab'in Başlamadan önce bölümünde çıkardığınız recipes klasörünü seçin.
  11. Yükle'yi tıklayın.
  12. suppliers klasörü için yükleme işlemini tekrarlayın.

Yüklendikten sonra paket yapınız şu şekilde görünmelidir (paket adı ne olursa olsun):

596b8acb481016b7.png

4. BigQuery bağlantı kurulumu

Cloud Resource Connection oluşturun. Bu işlem, harici dosyalara erişmek için BigQuery'nin "kimlik kartı" olarak işlev gören benzersiz bir hizmet hesabı oluşturur.

  • BigQuery sayfasına gidin.
  • Sol bölmede Explorer'ı tıklayın. Sol bölmeyi görmüyorsanız bölmeyi açmak için Sol bölmeyi genişlet'i tıklayın.
  • Gezgin bölmesinde proje adınızı genişletin ve ardından Bağlantılar'ı tıklayın.
  • Bağlantılar sayfasında Bağlantı oluştur'u tıklayın.
  • Bağlantı türü için Vertex AI uzak modelleri, uzak işlevler, BigLake ve Spanner'ı (Cloud Kaynağı) seçin.
  • Bağlantı kimliği alanına bağlantı kimliği adını girin:
  • bq-connection. Bu kimliği not edin. Bu codelab'in ilerleyen bölümlerinde veri taraması ayarlarken bu kimliğe ihtiyacınız olacak.
  • Konum türünü Bölge olarak ayarlayın ve bir bölge seçin. Örneğin, us-central1. Bağlantı, veri kümeleri gibi diğer kaynaklarınızla aynı bölgede bulunmalıdır.
  • Bağlantı oluştur'u tıklayın.
  • Bağlantıya git'i tıklayın.
  • Bağlantı bilgileri bölmesinde, sonraki bir adımda kullanmak üzere hizmet hesabı kimliğini kopyalayın. Hizmet hesabı, bqcx-**********-qn3a@gcp-sa-bigquery-condel.iam.gserviceaccount.com'a benzer.

5. İzinleri ayarlama

  1. Cloud Storage nesnelerine ve Knowledge Catalog'a erişmek için BigQuery bağlantısına gerekli izinleri verme

IAM ve Yönetici sayfasına gidin ve Ana Hesaplara Göre Görüntüle bölümünde Erişim izni ver düğmesini tıklayın. Son adımda kopyaladığınız hizmet hesabını yapıştırarak bir ana hesap ekleyin. Roller bölümünde aşağıdaki rollerin adlarını tek tek ekleyin ve kaydedin:

  • roles/storage.objectUser
  • roles/storage.objectViewer
  • roles/bigquery.user
  • roles/bigquery.dataEditor
  • roles/aiplatform.viewer
  • roles/agentplatform.user
  • roles/storage.admin
  • roles/dataproc.serviceAgent
  • roles/dataplex.discoveryPublishingServiceAgent
  • roles/dataplex.serviceAgent
  • roles/dataplex.securityAdmin
  1. Dataplex hizmet hesabına Cloud Storage paketine erişim izni verme

IAM ve Yönetici sayfasına gidin ve Ana Hesaplara Göre Görüntüleme bölümünde Erişim izni ver düğmesini tıklayın. Yeni ana hesap metin çubuğuna Dataplex yazarak bir ana hesap ekleyin. Otomatik tamamlama listesinden şu biçime benzer Dataplex hizmet hesabı sorumlusunu seçin:

service-*********@ gcp-sa-dataplex.iam.gserviceaccount.com

Bu hizmet hesabına aşağıdaki rolleri verin:

  • roles/storage.objectUser
  • roles/storage.objectViewer
  • roles/storage.viewer
  • roles/dataplex.discoveryBigLakePublishingServiceAgentroles/storage.objectUser
  • roles/storage.objectViewer
  • roles/storage.viewer
  • roles/dataplex.discoveryBigLakePublishingServiceAgentroles/storage.objectUser
  • roles/storage.objectViewer
  • roles/storage.viewer
  • roles/dataplex.discoveryBigLakePublishingServiceAgent

6. Bilgi Kataloğu Kurulumu

Yapılandırılmamış verileri birleştirmek ve yapılandırılmamış dosyaların (ör. PDF tarifler ve PDF tedarikçiler) keşfini otomatikleştirmek için bir Bilgi Kataloğu oluşturun.

  1. curl ile DataScan oluşturma

Bu işi konsoldan da oluşturabilirsiniz ancak bu bölümde, datascan_ID'yi ekleyip BigQuery veri kümelerine yönlendirerek Cloud Storage paketi için taramalar oluşturacağız. Ardından Knowledge Catalog, BigQuery'de PDF'leriniz için otomatik olarak girişler oluşturur.

İlgilendiğiniz mevcut etkin projenizin Cloud Shell terminalinde aşağıdaki komut grubunu çalıştırın:

# 1. Set your variables
PROJECT_ID="<PROJECT_ID>"
REGION="<REGION>"
ENV_SUFFIX="stg1"
DATASCAN_ID="froyo-data-${ENV_SUFFIX}"
BUCKET_NAME="<BUCKET_NAME>"

# 2. Set this to the Name of the connection you created in Step 7
CONNECTION_ID="<CONNECTION_ID_NAME>"

# 3. Define the API Endpoint
DATAPLEX_API="dataplex.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}"

# 4. Create the DataScan via CURL
echo "Creating Dataplex DataScan: ${DATASCAN_ID}..."

curl -X POST "https://$DATAPLEX_API/dataScans?dataScanId=${DATASCAN_ID}" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"data": {
   "resource": "//storage.googleapis.com/projects/'"${PROJECT_ID}"'/buckets/'"${BUCKET_NAME}"'"
   },
"executionSpec": {
   "trigger": {
      "on_demand": {}
   }
},
"dataDiscoverySpec": {
   "bigqueryPublishingConfig": {
      "tableType": "BIGLAKE",
      "connection": "projects/'"${PROJECT_ID}"'/locations/'"${REGION}"'/connections/'"${CONNECTION_ID}"'"
   },
   "storageConfig": {
      "unstructuredDataOptions": {
      "entity_inference_enabled": true
      }
   }
   }
}'

Komutun başarıyla çalıştırılması için yukarıdaki yer tutucu değişkenlerin değerlerini değiştirin. Bu komutun yalnızca işi oluşturduğunu, uygulamadığını unutmayın.

  1. 1-2 dakika sonra Google Cloud Console'da Metadata curation (Meta veri düzenleme) sayfasına gidin.
  2. Cloud Storage keşif sekmesinde, keşif taraması öğesinin adını tıklayın (kaynak bağlantısını tıklamayın. Bu bağlantı cazip bir seçenek olsa da depolama alanını açar).

31afb1dc3caba5f6.png

  1. Kritik adım:

İşi düzenleyin ve "Anlamsal çıkarımı etkinleştir" onay kutusunun işaretli olduğundan emin olun. İşaretli değilse işaretleyin, proje kimliğini ve bölgeyi girin, ardından kaydet'i tıklayın.

c021927bf80fe204.png

İşlem tamamlandıktan sonra Cloud Shell terminalinden aşağıdaki komutu çalıştırabilir veya Cloud Storage Discovery sayfasında Şimdi çalıştır düğmesini tıklayabilirsiniz:

gcloud dataplex datascans run $DATASCAN_ID --location=$REGION
  1. Tarama işinin tamamlanması biraz zaman alır. İş tamamlandıktan sonra Yayınlanan veri kümesinin mevcut olup olmadığını kontrol edin. İş durumunu kontrol etmek için Meta veri düzenleme sayfasını kontrol edebilirsiniz. Cloud Storage bulma sekmesinde, son çalıştırmanın bulma taramalarının adını tıklayın. Yayınlanan veri kümesini aşağıdaki gibi görmeniz gerekir:

d0cd6ae1edb81ce9.png

Not: Tarama adımında hatalarla karşılaşırsanız biraz bekleyip tekrar deneyin (işin oluşturulması ve yürütülmesinin tamamlanması birkaç dakika sürer).

Tabloyu BigQuery'de görüntülemek için froyo_data veri kümesini tıklayıp bu veri kümesine gidin. BigQuery'de tablo kimliğini tıklayın ve Sorgu Düzenleyici sekmesinde aşağıdaki sorguyu çalıştırın:

SELECT count(*) FROM `agent-data-cloud.froyo_data.froyo_data` LIMIT 1000;

Bu işlem 400 ile sonuçlanır (değilse geri gidip veri tarama işini tekrar çalıştırabilirsiniz).

7. Semantik Veri Ayıklama

Harika!! Şimdi Bilgi Kataloğu'nu kullanarak bu yapılandırılmamış nesnelerle ilgili çıkarımı alalım.

Yapılandırılmamış tablodan yapılandırılmış verileri ayıklamak için SQL ifadeleri oluşturmak üzere Insights özelliğini kullanacağız.

  1. Google Cloud Console'da Knowledge Catalog Search sayfasına gidin.
  2. Analizlerini görüntülemek istediğiniz veri kümesi tablosunu arayın. Arama çubuğuna önceki adımdaki veri kümesi / tablo adını ("froyo_data") girip Enter tuşuna basın.
  3. Sonuç listesinde TABLO girişini (veri kümesi girişini değil) tıklayın.
  4. ANALİZLER sekmesini görürsünüz. Bu seçeneği tıklayın (herhangi bir API'yi etkinleştirmeniz gerekiyorsa talimatları uygulayın ve API'leri etkinleştirin).

Bu noktada API'leri etkinleştirdiyseniz tarama işini tekrar çalıştırmanız gerekir.

  1. ANALİZLER sekmesinde AYIKLA düğmesinin açılır menüsünü görürsünüz. Bunu tıklayın ve "SQL ile ayıkla" seçeneğini belirleyin.

89809b34c610569d.png

"SQL ile ayıkla" iletişim kutusunda, HEDEF veri kümesini Datascan işinin sonucunda gördüğünüz veri kümesi olarak ayarlayın. Adını yazmaya başladığınızda otomatik tamamlama özelliğinde gösterilir. "Ayıkla" düğmesini tıklayın. Alternatif olarak, bu noktada yeni bir veri kümesi oluşturup verileri ayıklayabilirsiniz.

Bu işlem, veri tarama çıkarımından çıkarılan SQL ile doldurulmuş bir sekme açıkken BigQuery sorgu düzenleyicisini açar.

8. SQL Doğrulama ve Şema Oluşturma

Oluşturulan sorgu iyi görünüyorsa ve yapılandırılmamış verilerinizle anlamsal olarak alakalıysa sorgu düzenleyicideki Çalıştır düğmesini tıklayarak sorguyu uygulayın. Yapılandırılmamış medyalarınızın yapılandırılmış depolanması için gereken şemanın oluşturulması birkaç dakika sürer.

İşlem tamamlandıktan sonra, aşağıdaki resimde gösterildiği gibi BigQuery Studio'nun Gezgin bölmesinde veri kümesini genişleterek şemayı doğrulayabilirsiniz:

6e65906240a9a8be.png

Tamamdır!!! Bu kadar çok şeyin hızlı bir şekilde yapılması çok güzeldi. Şimdi nihai test zamanı!

9. The Ultimate Test!!!

Aracımın, kullanıcının sorularına gerçek, eksiksiz ve iyi düzenlenmiş, olgulara dayalı bilgilerle yanıt vermesini istediğimi varsayalım. Ajana, yalnızca kaynağımdaki birden fazla medya dosyasına ve referansa bakarak yanıtlayabileceği bir soru soracağım.

Kullanıcı sorum:

I'm really interested in your Midnight Swirl froyo. Are there any allergens in it?

Artık genel bir arama veya LLM araması yapıldığında "Sıfır bileşen" ifadesi gösterilecek. Ancak tüm yapılandırılmamış medyalarımızı yapılandırılmış verilere dönüştüren tam bir anlamsal çıkarım oluşturduk. Bu bilgileri getirecek basit bir SQL ile devam edelim:

SELECT p.product_name, i.ingredient_name, a.allergen_name, category, stability
FROM froyo_data.consistsof c
INNER JOIN froyo_data.product p
  ON c.product_id = p.product_id
INNER JOIN froyo_data.ingredient i
  ON c.ingredient_id = i.ingredient_name
LEFT OUTER JOIN froyo_data.containsallergen a
  ON i.ingredient_id = a.ingredient_id
WHERE
  UPPER(p.product_name) LIKE '%MIDNIGHT%SWIRL%'
  AND allergen_name IS NOT NULL;

Harika! Sonuca bakın:

f582d55814a23e8.png

10. Temizleme

Bu laboratuvarı tamamladıktan sonra tarama işini ve işin oluşturduğu BigQuery tablolarını silmeyi unutmayın.

https://console.cloud.google.com/bigquery/governance/metadata-curation/cloud-storage-discovery adresine gidin. Yanındaki üç nokta simgesini tıklayarak silmek istediğiniz işi seçin ve SİL'i tıklayın.

9fcbbfa1a9ccba6d.png

Bu işlem, işi temizlemelidir.

11. Tebrikler

Uygulamamız, gizli alerjeni başarıyla tespit edebildi. Artık karanlık veriler yok!!! 2. bölümde, bu BigQuery verilerini AlloyDB ile birlikte bir işlemsel sistemde birleştirerek yapay zeka aracılı uygulamamızın veri ihtiyaçlarını karşılayacağız.