Vertex AI ile Google kalitesinde bir Arama Sistemi geliştirme

1. Başlamadan önce

Bu codelab'e devam etmeden önce göz önünde bulundurmanız gereken birkaç noktayı aşağıda bulabilirsiniz.

Ön koşullar

  • LLM'lere dair temel bilgiler
  • RAG sistemleriyle ilgili temel bilgiler

Neler öğreneceksiniz?

  • Yüklediğiniz verilerden sorularınıza yanıt verebilecek, Google kalitesinde bir arama motoru nasıl oluşturulur?
  • Vertex AI Datastore'u oluşturma
  • Vertex AI aracıları oluşturma
  • Uygulamayı dağıtmak için CloudRun'dan yararlanma

Gerekenler

  • Google Cloud hesabı
  • Bir Google Cloud projesi
  • Terminal içeren IDE (Entegre Geliştirme Ortamı)

Giriş

Google Arama, kullanıcı sorgularına alakalı sonuçlar sağlamak için web sayfalarından ve diğer içeriklerden oluşan devasa bir dizinden yararlanan güçlü bir araçtır. Bu, modern yapay zekanın önemli tekniklerinden biri olan Alma Artırılmış Nesil (RAG) adı verilen bir teknikle mümkün oluyor.

RAG ilk olarak bir belge topluluğundan ilgili pasajları alarak çalışır. Bunun 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, özet oluşturmak veya kullanıcının sorgusunun yanıtını oluşturmak için kullanılır.

RAG'in en önemli faydası, dil modellerinin halüsinasyonu önlemesine olanak sağlamasıdır. Halüsinasyon, belge kitaplığındaki kanıtlarla desteklenmeyen metin oluşturmayı açıklamak için kullanılan bir terimdir. Bu durum, dil modelleri alakalı ve alakasız bilgileri ayırt edemediğinde ortaya çıkabilir.

RAG, oluşturulan metnin daima belgedeki kanıtlara göre hazırlanmasını sağlayarak halüsinasyonların önlenmesine yardımcı olur. Bu da YouTube'un daha güvenilir ve güvenilir bir bilgi kaynağı olmasını sağlar.

RAG; arama motorları, chatbot'lar ve soru yanıtlama sistemleri gibi çeşitli uygulamalarda kullanılan güçlü bir tekniktir. Gelecek yıllarda yapay zekada giderek daha önemli bir rol oynayabilir.

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

  • Birçok arama sistemi, kullanıcının sorgusuyla alakalı arama sonuçları oluşturmak için RAG kullanır.
  • Chatbot'lar, bilgilendirici ve ilgi çekici kullanıcı sorularına yanıt üretmek için RAG'yi kullanır.
  • Soru cevaplama sistemleri, kullanıcı sorularına doğru ve kapsamlı cevaplar üretmek için RAG sistemini kullanır.

RAG, çeşitli alan ve uygulamalarda metin üretmek için kullanılabilecek çok yönlü bir tekniktir. Yapay zekanın daha akıllı ve bilgilendirici hale getirilmesine yardımcı olan güçlü bir araçtır.

Bu codelab'de, sizin yüklediğiniz şekilde sağlanan kitaplık ile sorularınızı yanıtlamanıza yardımcı olabilecek bir RAG sistemi oluşturacağız. Vertex AI Search/Agent Builder adı verilen kullanıma hazır RAG platformu, RAG sistemlerini derleme işlemini hızlandırmanıza yardımcı olur. Böylece belgeleri toplama, ayrıştırma, parçalama, yerleştirme oluşturma, sorgu genişletme, aday alımı ve sıralaması gibi işlemleri manuel olarak yapmanız gerekmez. Kullanıma hazır RAG sistemi hızlıca başlangıç yapmanıza yardımcı olurken Google Cloud da kendi DIY RAG sistemlerinizi kurabilmeniz için her süreç için ayrı API'ler sunar. Bu API'ler, RAG sistemlerinizi işletmenizin ihtiyaçlarına uygun hale getirmeye yardımcı olur.

Oluşturacaklarınız

Bu codelab'in sonunda RAG sistemini, doğru referanslarla gerekçelendirilmiş ve alıntılanmış gerçek bilgilerle yanıtlamanıza yardımcı olabilecek çalışan bir RAG sistemine sahip olacaksınız.

Ayrıca bu RAG mimarisini Google Cloud'da oluşturmak için Vertex AI Arama API'lerini nasıl kullanacağınızı daha iyi anlamış olacaksınız. Ayrıca, bu RAG mimari uygulamasını (ön uç ve arka uçla) Google Cloud'da uygulamaları container'lar olarak dağıtmak için kullanılan sunucusuz bir platform olan CloudRun'da nasıl dağıtacağınızı da öğreneceksiniz.

2d055ded874603a6.png

Uygulamanın işleyiş şekli

  • Verilerinizi yükleme: Kullanıcılar kendi veri topluluklarını (ör.PDF dosyası) giriş olarak yükleyebilir.
  • Arama çubuğunda sorgular sor: Kullanıcılar, yüklenen veri kitaplığına dayalı olarak arama çubuğunda sorular 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/doğruluğunu 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ı nasıl kontrol edeceğinizi öğ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ğrulanıp doğrulanmadığını ve projenin proje kimliğinize ayarlandığından emin olmak için aşağıdaki komutu kullanın:
gcloud auth list
  1. gcloud komutunun projenizi bildiğini onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın.
gcloud config list project
  1. Projeniz ayarlanmadıysa 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 kullanmanın alternatifi, bu bağlantıyı kullanarak konsoldan yararlanmaktır. 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çlar arasından Cloud Storage'ı seçin. 21d2bc910e71f7ec.png
  • Create Bucket (Paket Oluştur) seçeneğini 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

  • Create Bucket (Paket Oluştur) seçeneğini tıklayın.

f7ac409ed9c4af21.png

4. 2. Adım: Vertex AI Datastore oluşturun

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

c4a67b92bb7900e3.png

  • Agent Builder sayfasında, soldaki gezinme çubuğunda gösterildiği gibi "Data Stores" (Veri Depoları) öğesini tıklayın.

f86f67d344d398fb.png

  • "Veri Deposu Oluştur"u tıklayın.

e64e771f33543f46.png

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

3a8d22888e7eedc2.png

  • "Klasör" seçeneğinin altındaki sekmede "Göz at" 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ış dokümanlar (meta veri içeren JSONL)" seçeneğini belirlediğinizden emin olun
  • Devam'ı tıklayın

13876b5d12dbe1fb.png

  • Yapılandırma sayfasında veri deponuzun konumu olarak "genel"i seçin
  • Veri mağazanıza tanımlayıcı bir ad verin
  • Oluştur'u tıklayın.

618b7a456fbffad4.png

Tarayıcı:

  • "Oluştur" düğmesinin hemen üzerinde doküman 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.
  • Ayrıca, gelişmiş parçalamayı etkinleştirebilir ve kendi özel parça boyutu sınırlarınızı belirleyebilirsiniz

38471c1d3411610d.png

5. 3. Adım: Aracı 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 (Ayrıca aracılar, sohbet botları, öneriler vb. de oluşturabilirsiniz).

ae5294e33f63567c.png

  • İçerik bölümünde "Genel"i seçtiğinizden emin olun. Ayrıca, veri deposuna ve oluşturmak istediğiniz veri ve sistemlerin türüne göre Medya veya Öneriler'i seçebilirsiniz.
  • Hem kurumsal sürüm hem de gelişmiş büyük dil modeli özelliklerini açık duruma getirdiğinizden emin olun
  • Uygulamanızın adını girin
  • Şirketinizin adını girin

f8a41c9751f7a8d3.png

  • Bölgeyi "global" olarak seçtiğinizden emin olun
  • "Devam"ı ed17b18e094ba59a.png tıklayın.
  • Sonraki ekranda, 2. Adım'da oluşturduğunuz veri deposunu seçin
  • "Oluştur"u tıklayın.

bc77006e0025ae9e.png

6. 4. Adım: Uygulamanızı Docker'a uygun hale getirin

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

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

  • Dizini değiştirin ve aşağıdaki komutu kullanarak klonlanan depoya gidin

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

  • Klasör yapısı
  • Arka uç: Bu, ön ucunuzun etkileşim kurabileceği dinlendirici uç noktalar oluşturmaya yardımcı olacak Python tabanlı bir API uygulamasını barındırır.
  • Ön uç: Bu, tepkiye dayalı bir uygulama barındırır ve kullanıcı arayüzüne hizmet verir. Bu, dinlenme uç noktaları aracılığıyla arka uca yapılan gerekli uygulama düzeyinde çağrıları da içerir
  • Dockerfile - Bu dosya, bir Docker container'ı oluşturmak için ilgili tüm komutları içerir
  • Depo dizininin kök düzeyinde, bir Docker görüntüsü derlemeye yardımcı olacak aşağıdaki komutu çalıştırın (not: M1, M2 gibi Apple Silikon çipleri kullanan Macbooks'larda Docker container'ları oluştururken - - platform işaretini kullandığınızdan emin olun. Windows makinesi kullanarak derleme yapıyorsanız veya CPU mimariniz Intel tabanlıysa bu işaret gerekli değildir)

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

  • Docker container derlemesi başarılı olduğunda aşağıdaki komutu çalıştırarak container'ı doğru etiketlerle etiketleyerek görüntünüzün bir sürümünü sağladığınızdan emin olun. Uygulamanın birden fazla sürümü olabileceğini ve dolayısıyla Docker kapsayıcılarında etiket olarak birden fazla sürümünün olabileceğini unutmayın. DevOps'un bakış açısından her zaman en son kararlı sürümün kullanılmasını öneririz.

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 şimdi görüntüyü Google Artifact Registry'ye (GAR) aktaralım. GAR, Docker container'larınızı yönetmenize ve sürüm denetimine yardımcı olan, Google tarafından sunulan tamamen yönetilen bir platformdur. Yukarıdaki etiketli kapsayıcıyı GAR'a aktaracak aşağıdaki komutu çalıştırın. Daha fazla bilgi için şu bağlantıyı inceleyebilirsiniz: [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

  • Terminali 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 "Deploy one düzeltme from an existing container görüntüsü"nden (Mevcut bir container görüntüsünden bir düzeltmeyi dağıt) emin olun
  • Aşağıda "Seç"i tıklayın.
  • Şimdi sağ tarafta bir gezinme çubuğu gösterilecek.
  • Sekme olarak Artifact Registry'nin seçili olup olmadığını kontrol edin
  • Projenin doğru seçildiğinden emin olun.
  • Dağıtılan container görüntüsü bağlantısındaki akordeonu genişletmek için oku tıklayın
  • Kapsayıcı etiketi seçin ve genişletin (her zaman, doğru en güncel etiketlerle (ör.v1, v2 vb.) dağıtılan en son etiketleri seçin.)
  • Kapsayıcı etiket 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ı sağlayın (bu ad, uygulamayı Cloud Run'da dağıttığınızda URL'nin bir parçası olacaktır)
  • Uygun bölgeyi seçin (bu durumda us-central1 veya tercih ettiğiniz herhangi bir bölge)
  • Kimlik Doğrulama Altında
  • "Kimliği doğrulanmayan çağrılara izin ver"in seçili olduğundan emin olun
  • CPU tahsisi ve Fiyatlandırma altında
  • "CPU yalnızca istek işleme sırasında ayrılır"ı seçin
  • Hizmet Otomatik Ölçeklendirme'yi 1 olarak değiştirin (üretim amacıyla, günlük trafiğinizi yönetmek için minimum örneğin çalışır durumda olması önerilir, hatta 0, yani Sıfır olarak da bırakabilirsiniz)
  • İnternetten gelen trafiğin uygulamanıza erişmesine izin vermek için "Giriş Denetimi"ni "Tümü" olarak ayarlayın
  • "Oluştur"u tıklayın.
  • Bu işlem bir Cloud Run örneği dağıtır ve aynı yerin temel hazırlığının yapılması birkaç dakika sürer

b8b147265b8d457b.png

  • Dağıtımdan sonra, web uygulamanıza şuradan erişebileceğiniz herkese açık URL'yi görebilirsiniz:

1dfdb007c52581a1.png

8. İşleyiş şekli

  • Uygulamanın ana sayfasına geldiğinizde "Belge Yükle" düğmesini tıklayın
  • PDF dosyanızı yükleyin
  • Yükleme tamamlandığında
  • Web sayfasının üst kısmındaki arama çubuğunu tıklayın
  • Yüklediğiniz dokümanla ilgili sorguları aramaya başlayın
  • Sorgunuzu yazıp Ara'yı tıkladığınızda, az önce yüklediğiniz dokümandaki tüm alakalı yanıtlar gösterilecektir.
  • Arka uç koduna bakarak denemeler yapabilir ve aşağıdaki gibi daha fazla yapılandırma ekleyebilirsiniz
  • Snippet ekleme
  • Ayıklama segmentleri ekleme
  • Yanıtlar ekleniyor
  • LLM'nin yanıtı özetlemesine yardımcı olmak için ilk k sıradaki sonuçları inceleyebilme (Google Arama'daki Yapay Zekaya Genel Bakış gibi bir şey)
  • Eklenti olarak dokümanı yüklerken de meta veri etiketleri ekleyebilirsiniz. Bu işlem, özellikler 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 aşağıdaki adımları uygulayın:

  1. Google Cloud konsolunda Kaynakları yönetin sayfasına gidin.
  2. Proje listesinden silmek istediğiniz projeyi seçin ve ardından Sil'i tıklayın.
  3. İletişim kutusuna proje kimliğini yazın ve projeyi silmek için Kapat'ı tıklayın.
  4. Alternatif olarak konsolda Cloud Run'a gidip az önce dağıttığınız hizmeti seçip silebilirsiniz.

10. Tebrikler

Tebrikler! Google tarafından desteklenen son teknoloji modelleri kullanarak ve arama sorgularınıza Google kalitesinde sonuçlar sunmak için, kullanıma hazır bir RAG sistemini başarıyla oluşturdunuz. Bu codelab yalnızca gösterim amaçlıdır. Üretim kullanım alanları için daha fazla güvenlik ve korumanın oluşturulması gerekir. Deponun tamamının bağlantısı buradadır. Yalnızca 5 adımda Google Cloud'dan yararlanarak uçtan uca bir RAG sistemi oluşturabiliriz. Bu sistem sayesinde Google kalitesinde sonuçları birkaç dakika içinde kullanıma hazır hale getirebiliriz. Üretken yapay zeka ve büyük dil modelleri geliştikçe bu tür RAG sistemleri oluşturmak halüsinasyon ve atıfta bulunulmayan bilgilerin açığa çıkması gibi risklerden kaçınmamıza da yardımcı olur.

Bu sadece bir başlangıç olsa da tamamen özelleştirilebilir DIY RAG API'leriyle harikalar yapabiliriz. Bu API'ler, ardışık düzen sürecinin her aşamasını etkili bir şekilde yönetmeniz için size daha da fazla şeffaflık, güç ve verimlilik sağlar.