Vertex AI ile Google kalitesinde bir Arama Sistemi geliştirme

1. Başlamadan önce

Bu codelab'e devam etmeden önce dikkat etmeniz gereken birkaç nokta:

Ön koşullar

  • LLM'ler hakkında temel bilgi
  • Temel seviyede RAG sistemleri bilgisi

Neler öğreneceksiniz?

  • Yüklediğiniz verilerdeki sorularınızı yanıtlayabilecek kaliteli bir Google arama motoru oluşturma
  • Vertex AI veri deposu oluşturma
  • Vertex AI Agents nasıl oluşturulur?
  • Uygulamayı dağıtmak için Cloud Run'dan yararlanma

Gerekenler

  • Google Cloud hesabı
  • Google Cloud projesi
  • Terminal içeren bir IDE

Giriş

Google Arama, kullanıcı sorgularına alakalı sonuçlar sunmak için web sayfalarının ve diğer içeriklerin yer aldığı büyük bir dizini kullanan güçlü bir araçtır. Bu, modern yapay zekanın temel tekniklerinden biri olan Almayla Artırılmış Üretim (RAG) adlı bir teknik sayesinde mümkün olur.

RAG, önce bir doküman kitaplığından ilgili pasajları alarak çalışır. Bu işlem için anahtar kelime eşleme, anlamsal benzerlik ve makine öğrenimi gibi çeşitli yöntemler kullanılır. İlgili pasajlar alındıktan sonra, kullanıcının sorgusuna yanıt vermek veya özet oluşturmak için kullanılır.

RAG'nin temel avantajı, dil modellerinin halüsinasyon yapmasını önlemesidir. Halüsinasyon, doküman derlemesindeki kanıtlarla desteklenmeyen metinlerin oluşturulmasını tanımlamak için kullanılan bir terimdir. Bu durum, dil modelleri alakalı ve alakasız bilgileri ayırt edemediğinde ortaya çıkabilir.

RAG, üretilen metnin her zaman doküman kitaplığındaki kanıtlara dayanmasını sağlayarak halüsinasyonun önlenmesine yardımcı olur. Bu sayede, daha güvenilir bir bilgi kaynağı haline gelir.

RAG, arama motorları, chatbot'lar ve soru-cevap sistemleri gibi çeşitli uygulamalarda kullanılan güçlü bir tekniktir. Bu teknoloji, önümüzdeki yıllarda yapay zekada giderek daha önemli bir rol oynayacak.

Aşağıda, RAG'nin pratikte nasıl kullanıldığına dair bazı örnekler verilmiştir:

  • Birçok arama sistemi, kullanıcının sorgusuyla alakalı arama sonuçları oluşturmak için RAG'yi kullanır.
  • Chatbot'lar, kullanıcı sorularına bilgilendirici ve ilgi çekici yanıtlar oluşturmak için RAG'yi kullanır.
  • Soru yanıtlama sistemleri, kullanıcı sorularına doğru ve kapsamlı yanıtlar oluşturmak için RAG'den yararlanır.

RAG, çeşitli alanlarda ve uygulamalarda metin oluşturmak için kullanılabilen çok yönlü bir tekniktir. Yapay zekanın daha akıllı ve bilgilendirici olmasına yardımcı olan güçlü bir araçtır.

Bu codelab'de, sorularınızı yanıtlamanıza yardımcı olabilecek bir RAG sistemi oluşturacağız. Bu sistem, sizin yüklediğiniz dokümanları kullanacak. Vertex AI Search/Agent Builder adlı kullanıma hazır RAG platformu, RAG sistemleri oluşturma sürecini hızlandırmanıza yardımcı olur. Böylece doküman toplama, ayrıştırma, parçalama, yerleştirme oluşturma, sorgu genişletme, aday alma ve sıralama gibi manuel işlemlerden kurtulursunuz. Hazır RAG sistemi hızlı bir şekilde başlamanıza yardımcı olsa da Google Cloud, kendi RAG sistemlerinizi oluşturmak için her süreçte ayrı API'ler de sunar. Bu API'ler, RAG sistemlerinizi işletme gereksinimlerinize uyacak şekilde ince ayarlamanıza yardımcı olur.

Ne oluşturacaksınız?

Bu codelab'in sonunda, sorularınızı doğru referanslarla desteklenen ve alıntılanan olgusal bilgilerle yanıtlamanıza yardımcı olabilecek, çalışan bir RAG sistemi dağıtmış olacaksınız.

Ayrıca, Google Cloud'da bu RAG mimarisini oluşturmak için Vertex AI Search API'lerini nasıl kullanacağınız konusunda daha iyi bir anlayışa sahip olacaksınız. Bunun yanı sıra, bu RAG mimarisi uygulamasını (ön uç ve arka uç ile) Google Cloud'da uygulamaları kapsayıcı olarak dağıtmak için kullanılan sunucusuz bir platform olan Cloud Run'da nasıl dağıtacağınızı da öğreneceksiniz.

2d055ded874603a6.png

Uygulamanın işleyiş şekli

  • Verilerinizi yükleme: Kullanıcılar, kendi veri kümesini (ör.PDF dosyası) giriş olarak yükleyebilir.
  • Arama çubuğunda sorgu sorma: Kullanıcılar, yüklenen veri kümesine göre arama çubuğunda soru sorabilir.
  • Yanıtları alma: Kullanıcılar, arama sonuçlarını/adayları alabilir ve sorgunun alaka düzeyine göre alınan yanıtın doğruluğunu/temellendirilmişliğini kontrol edebilir.

2. Ortam Kurulumu

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

1829c3759227c19b.png

  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. Projeniz ayarlanmamışsa ayarlamak için aşağıdaki komutu kullanın:
gcloud config set project <YOUR_PROJECT_ID>
  1. Aşağıdaki API'lerin etkinleştirildiğinden emin olun:
  • Cloud Run
  • Vertex AI
  • Cloud Storage

gcloud komutunu kullanmak yerine bu bağlantıyı kullanarak konsolu da kullanabilirsiniz. gcloud komutları ve kullanımı için belgelere bakın.

3. 1. adım: GCP paketi oluşturun

  • Konsola gidin ve arama çubuğuna Cloud Storage yazın.
  • Önerilen sonuçlardan Cloud Storage'ı seçin. 21d2bc910e71f7ec.png
  • Paket oluştur'u tıklayın.

adf5c0382f6c3540.png

  • Paket için global olarak benzersiz bir ad girin.
  • Devam'ı tıklayın.
  • Konum Türü'nde Çoklu Bölge'yi seçin.
  • Açılır menüde us (multiple regions in United States) seçeneğini belirlediğinizden emin olun.

731aead7d8497725.png

  • Paket oluştur'u tıklayın.

f7ac409ed9c4af21.png

4. 2. adım: Vertex AI veri deposu oluşturun

  • Console sayfasının arama çubuğuna "Vertex AI Agent Builder" yazın.
  • İlk ürünü ("Agent Builder") seçin.

c4a67b92bb7900e3.png

  • Agent Builder sayfasında, sol taraftaki gezinme çubuğunda gösterildiği gibi "Veri depoları"nı tıklayın.

f86f67d344d398fb.png

  • "Veri deposu oluştur"u tıklayın.

e64e771f33543f46.png

  • Veri deponuz olarak Cloud Storage'ı seçin.
  • Cloud Storage simgesinin altındaki "Seç"i tıklayın.

3a8d22888e7eedc2.png

  • "Klasör" seçeneğinin altındaki sekmede "Gözat" düğmesini tıklayın.
  • 1. adımda oluşturduğunuz paketi seçin.
  • Aşağıdaki seçeneklerde "Bağlı yapılandırılmamış belgeler (meta veriler içeren JSONL)"i seçtiğinizden emin olun.
  • Devam'ı tıklayın.

13876b5d12dbe1fb.png

  • Yapılandırma sayfasında, veri deponuzun konumu olarak "global"i seçin.
  • Veri deponuza tanımlanabilir bir ad verin
  • Oluştur'u tıklayın.

618b7a456fbffad4.png

Brownie:

  • "Oluştur" düğmesinin hemen üstünde belge işleme seçeneğini görebilirsiniz.
  • Dijital, OCR veya düzen ayrıştırıcı gibi farklı ayrıştırıcılarla denemeler yapabilirsiniz.
  • Gelişmiş parçalama özelliğini etkinleştirebilir ve kendi özel parçalama boyutu sınırlarınızı belirleyebilirsiniz.

38471c1d3411610d.png

5. 3. adım: Temsilci oluşturun

  • Veri deponuz oluşturulduktan sonra soldaki gezinme çubuğunda uygulamayı tıklayın ve "Uygulamalar"ı seçin.
  • "Uygulama Oluştur" düğmesini tıklayın.
  • Uygulama türünü "Arama" olarak seçin (aracı, sohbet botu, öneri vb. de oluşturabilirsiniz).

ae5294e33f63567c.png

  • İçerik bölümünde "Genel"i seçtiğinizden emin olun. Ayrıca, oluşturmak istediğiniz veri deposuna, veri türüne ve sistemlere bağlı olarak Medya veya Öneriler'i de seçebilirsiniz.
  • Hem Enterprise Edition hem de Advanced LLM özelliklerini AÇIK duruma getirin.
  • Uygulama adınızı girin
  • Şirketinizin adını girme

f8a41c9751f7a8d3.png

  • Bölgenin "küresel" olarak seçildiğinden emin olun.
  • "Devam"ı ed17b18e094ba59a.png tıklayın.
  • Sonraki ekranda, 2. adımda oluşturduğunuz veri deposunu seçin.
  • "Oluştur"u tıklayın.

bc77006e0025ae9e.png

6. 4. adım: Uygulamanızı Dockerize edin

  • Google Cloud Console'da terminalinizi açın
  • Aşağıdaki komutu kullanarak <sample_repository_link> deposunu klonlayın.

git clone https://github.com/kkrishnan90/vertex-ai-search-agent-builder-demo

  • Aşağıdaki komutu kullanarak dizini değiştirin ve klonlanan depoya gidin.

cd vertex-ai-search-agent-builder-demo

  • Klasör yapısı
  • Arka uç: Bu bölümde, ön ucunuzun etkileşim kurması için RESTful uç noktaları oluşturmaya yardımcı olacak Python tabanlı bir API uygulaması yer alır.
  • Ön uç: Bu bölümde, React tabanlı bir uygulama yer alır ve kullanıcı arayüzü sunulur. Bu, REST uç noktaları aracılığıyla arka uca yapılan gerekli uygulama düzeyindeki çağrıları da içerir.
  • Dockerfile: Bu dosya, bir Docker kapsayıcısı oluşturmak için gereken tüm komutları içerir.
  • Depo dizininin kök dizininde, bir Docker görüntüsü oluşturmaya yardımcı olacak aşağıdaki komutu çalıştırın (Not: M1, M2 gibi Apple Silicon çipleri kullanan MacBook'larda Docker kapsayıcıları oluştururken - - platform işaretini kullandığınızdan emin olun. Windows makinesi kullanarak veya CPU mimariniz Intel tabanlıysa bu işaret gerekli değildir).

docker build --platform linux/amd64 -t your-image-name .

  • Docker kapsayıcı derlemesi başarılı olduktan sonra, görüntünüzün bir sürümünü sağladığınızdan emin olmak için kapsayıcıyı doğru etiketlerle etiketlemek üzere aşağıdaki komutu çalıştırın. Uygulamanın birden fazla sürümü ve dolayısıyla Docker kapsayıcılarında birden fazla etiket sürümü olabileceğini unutmayın. Her zaman en son kararlı sürümün kullanılmasını sağlamak, DevOps açısından iyi bir yaklaşımdır.

docker tag your-image-name REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG

  • Docker container görüntüsünün etiketlenmesi başarılı olduktan sonra görüntüyü Google Artifact Registry'ye (GAR) aktaralım. GAR, Docker container'larınızı yönetmenize ve sürüm denetimi yapmanıza yardımcı olmak için Google tarafından sunulan, tamamen yönetilen bir platformdur. Yukarıda etiketlenen kapsayıcıyı GAR'a aktaracak aşağıdaki komutu çalıştırın. Daha fazla bilgi için şu bağlantıya bakın: [ https://cloud.google.com/artifact-registry/docs/docker/pushing-and-pulling]

docker push REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG

7. 5. adım: Uygulamanızı Cloud Run'a dağıtın

  • Terminalinizi küçültün. Google Cloud Console arama çubuğunda Cloud Run'ı arayın.
  • Önerilen Cloud Run ürününü tıklayın.

592103eb61c16738.png

  • "Hizmet Oluştur"u tıklayın.
  • Sonraki sayfada "Mevcut container görüntüsünden bir düzeltme dağıt" seçeneğinin belirlendiğinden emin olun.
  • Aşağıda "Seç"i tıklayın.
  • Sağda bir gezinme çubuğu gösterilir.
  • Sekme olarak Artifact Registry'nin seçilip seçilmediğini kontrol edin.
  • Projenin doğru seçilip seçilmediğini kontrol edin.
  • Dağıtılan kapsayıcı resmi bağlantınızdaki akordeonu genişletmek için oku tıklayın.
  • Kapsayıcı etiketini seçin ve genişletin (her zaman en son dağıtılanları seçin; doğru en son etiketler, ör. v1, v2 vb.)
  • Kapsayıcı etiketi adının altında gösterilen kapsayıcı resmini tıklayın.

aac35d55d7dd874e.png

  • Yapılandır alanında
  • Cloud Run uygulamanız için bir hizmet adı girin (bu ad, uygulamayı Cloud Run'a dağıttığınızda URL'nin bir parçası olur).
  • Uygun bölgeyi seçin (bu örnekte us-central1 veya istediğiniz herhangi bir bölge)
  • Kimlik Doğrulama bölümünde
  • "Kimliği doğrulanmamış çağrılara izin ver" seçeneğinin belirlendiğinden emin olun.
  • CPU tahsisi ve fiyatlandırma bölümünde
  • "CPU yalnızca istek işleme sırasında ayrılır"ı seçin.
  • Hizmetin otomatik ölçeklendirme özelliğini 1 olarak değiştirin (üretim amacıyla, günlük trafiğinizi karşılamak için minimum sayıda örneğin çalıştırılması önerilir.Hatta 0 olarak da bırakabilirsiniz).
  • İnternetten gelen trafiğin uygulamanıza erişmesine izin vermek için "Giriş Kontrolü"nü "Tümü" olarak ayarlayın.
  • "Oluştur"u tıklayın.
  • Bu işlem, bir Cloud Run örneği dağıtır ve aynı örneğin sağlanması birkaç dakika sürebilir.

b8b147265b8d457b.png

  • Dağıtım tamamlandıktan sonra, web uygulamanıza erişebileceğiniz herkese açık URL'yi görebilirsiniz.

1dfdb007c52581a1.png

8. Her şey nasıl çalışır?

  • Uygulamanın ana sayfasına girdikten sonra "Belge Yükle" düğmesini tıklayın.
  • PDF dosyanızı yükleyin
  • Yükleme tamamlandıktan sonra
  • Web sayfasının üst kısmındaki arama çubuğunu tıklayın.
  • Yüklediğiniz belgeyle ilgili sorguları aramaya başlama
  • Sorgunuzu yazıp Ara'yı tıkladığınızda, yeni yüklediğiniz dokümandaki tüm alakalı yanıtlar gösterilir.
  • Arka uç koduna bakarak denemeler yapabilir ve aşağıdaki gibi daha fazla yapılandırma ekleyebilirsiniz.
  • Snippet ekleme
  • Özetleyici segmentler ekleme
  • Yanıt ekleme
  • Büyük dil modelinin yanıtı özetlemesine yardımcı olmak için top-k sonuçlarını ayarlama (Google Arama'daki AI Bakışı gibi)
  • Eklenti olarak, dokümanı yüklerken meta veri etiketleri de ekleyebilirsiniz. Bu, yönler ve filtrelenebilir kategoriler oluşturmaya yardımcı olur.

9. Temizleme

Bu codelab'de kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini istemiyorsanız şu adımları uygulayın:

  1. Google Cloud Console'da Kaynakları yönetin sayfasına gidin.
  2. Proje listesinde silmek istediğiniz projeyi seçin ve Sil'i tıklayın.
  3. İletişim kutusunda proje kimliğini yazın ve projeyi silmek için Kapat'ı tıklayın.
  4. Alternatif olarak, konsolda Cloud Run'a gidebilir, yeni dağıttığınız hizmeti seçip silebilirsiniz.

10. Tebrikler

Tebrikler! Google tarafından desteklenen ve arama sorgularınıza Google kalitesinde sonuçlar sunan en yeni modelleri kullanarak hızlı ve kullanıma hazır bir RAG sistemi oluşturmayı başardınız. Bu codelab yalnızca gösterim amaçlıdır. Üretim kullanım alanları için daha fazla güvenlik ve koruma önlemi ayarlanmalıdır. Tam depoya ait bağlantıyı burada bulabilirsiniz. Google Cloud'dan yararlanarak ve yalnızca 5 adımda, birkaç dakika içinde size Google kalitesinde sonuçlar sunabilecek uçtan uca bir RAG sistemi oluşturabiliriz. Üretken yapay zeka ve büyük dil modelleri geliştikçe bu tür RAG sistemleri oluşturmak, halüsinasyon ve alıntılanmamış bilgilerin ortaya çıkması gibi sorunlardan kaçınmamıza da yardımcı olur.

Bu sadece bir başlangıç noktası olsa da tamamen özelleştirilebilir DIY RAG API'leri ile harikalar yaratabiliriz. Bu API'ler, işlem hattı sürecinin her bölümünü etkili bir şekilde yönetmek için daha fazla şeffaflık, güç ve verimlilik sağlar.