Vertex AI ile Google kalitesinde bir Arama Sistemi geliştirme

1. Başlamadan önce

Bu kod laboratuvarına devam etmeden önce dikkat etmeniz gereken birkaç noktayı aşağıda bulabilirsiniz.

Ön koşullar

  • LLM'ler hakkında temel bilgiler
  • RAG sistemleri hakkında temel düzeyde bilgi

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 Agents oluşturma
  • Uygulamayı dağıtmak için CloudRun'dan yararlanma

Gerekenler

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

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 zekadaki temel tekniklerden biri olan Almayla Artırılmış Üretim (RAG) adlı bir teknik sayesinde mümkün olur.

RAG, öncelikle bir doküman kitaplığından alakalı 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'nin en önemli avantajı, dil modellerinin halüsinasyondan kaçınmasına olanak tanımasıdır. Halüsinasyon, doküman topluluğundaki 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, oluşturulan metnin her zaman doküman koleksiyonundaki kanıtlara dayalı olmasını sağlayarak halüsinasyonlardan kaçınmaya yardımcı olur. Bu sayede daha güvenilir ve güvenilir bir bilgi kaynağı haline gelir.

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'nin pratikte nasıl kullanıldığına dair bazı örnekleri aşağıda bulabilirsiniz:

  • Birçok arama sistemi, kullanıcının sorgusuyla alakalı arama sonuçları oluşturmak için RAG kullanır.
  • Sohbet botları, kullanıcı sorularına bilgilendirici ve ilgi çekici yanıtlar oluşturmak için RAG'den yararlanı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 zekayı daha akıllı ve bilgilendirici hale getirmeye yardımcı olan güçlü bir araçtır.

Bu kod laboratuvarında, yüklediğiniz veri kümesiyle sorularınızı yanıtlamanıza yardımcı olabilecek bir RAG sistemi oluşturacağız. Vertex AI Search/Agent Builder adlı hazır RAG platformu, RAG sistemlerini oluşturma sürecini hızlandırmanıza yardımcı olur. Böylece, dokümanları toplama, ayrıştırma, parçalara bölme, yerleştirme oluşturma, sorgu genişletme, aday getirme ve sıralama gibi manuel işlemleri yapmak zorunda kalmazsınız. Hazır RAG sistemi hızlı bir başlangıç yapmanıza yardımcı olurken Google Cloud, kendi DIY RAG sistemlerinizi oluşturmak için her işlem için ayrı API'ler de sağlar. Bu API'ler, RAG sistemlerinizi işletmenizin gereksinimlerine göre hassas ayarlama yapmanıza yardımcı olur.

Oluşturacağınız uygulama

Bu kod laboratuvarının sonunda, sorularınızı doğru referanslarla desteklenmiş ve kaynak gösterilmiş gerçek 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'lerinin nasıl kullanılacağını daha iyi anlayacaksı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ükleyin: Kullanıcılar kendi veri kümelerini (ö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/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. 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 hizmete erişmek için Google Cloud Console'un üst kısmından 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 ayarlanıp ayarlanmadığını kontrol edin:
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 geçmektir. 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 dünya genelinde 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 veri kümesi oluşturun

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

c4a67b92bb7900e3.png

  • Temsilci Oluşturucu 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ç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çenekler arasından "Bağlı yapılandırılmamış belgeler (meta veri içeren JSONL)"i seçin.
  • Devam'ı tıklayın

13876b5d12dbe1fb.png

  • Yapılandırma sayfasında, veri deponuzun konumu olarak "global"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 üstünde doküman işleme seçeneğini görebilirsiniz.
  • Dijital, OCR veya düzen ayrıştırıcı gibi farklı ayrıştırıcılar ile denemeler yapabilirsiniz.
  • Ayrıca gelişmiş parçalara ayırma özelliğini 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 sistem türüne göre Medya veya Öneriler'i de seçebilirsiniz.
  • Hem Enterprise Edition hem de Gelişmiş LLM özelliklerini AÇIK konuma 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 dönüştürün

  • 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

  • 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, ön uçunuzun etkileşim kuracağı RESTful uç noktalar oluşturmanıza yardımcı olacak Python tabanlı bir API uygulaması içerir.
  • Ön uç: Bu, React tabanlı bir uygulamayı barındırır ve kullanıcı arayüzünü sunar. Bu, rest uç noktaları aracılığıyla arka uca yapılan gerekli uygulama düzeyindeki çağrıları da içerir.
  • Dockerfile - Bu dosya, Docker container'ı oluşturmak için gereken tüm komutları içerir
  • Depo dizininin kökünde, bir Docker resmi oluşturmanıza yardımcı olacak aşağıdaki komutu çalıştırın (not: M1, M2 vb. Apple Silicon çipleri kullanan MacBook'larda Docker kapsayıcıları oluştururken - - platform işaretini kullandığınızdan emin olun. Windows makine kullanı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 kapsayıcı görüntüsünün etiketlenmesi başarılı olduktan sonra görüntüyü Google Artifact Registry'ye (GAR) aktaralım. GAR, Google'ın Docker kapsayıcılarınızı yönetmenize ve sürüm kontrol etmenize yardımcı olan, 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 aşağıdaki 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 simge durumuna küçültün. Google Cloud Console arama çubuğunda Cloud Run'u arayın.
  • Önerilen Cloud Run ürününü tıklayın

592103eb61c16738.png

  • "Hizmet Oluştur"u tıklayın.
  • Sonraki sayfada "Mevcut bir kapsayıcı görüntüsünden bir düzeltme dağıt"ın seçili olduğundan emin olun.
  • Aşağıda "Seç"i tıklayın.
  • Sağ tarafta bir gezinme çubuğu gösterilir.
  • Sekme olarak Artifact Registry'nin seçili olup olmadığını kontrol edin
  • Projenin doğru seçildiğinden emin olun.
  • Dağıtılan kapsayıcı resim bağlantınızdaki akordeonu genişletmek için oku tıklayın.
  • Kapsayıcı etiketini seçin ve genişletin (her zaman dağıtılan en son etiketleri seçin - doğru en son etiketlerle ör. v1, v2 vb.)
  • Kapsayıcı etiket adının altında gösterilen kapsayıcı resmini tıklayın.

aac35d55d7dd874e.png

  • Yapılandırma 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 (bu durumda us-central1 veya istediğiniz herhangi bir bölge) seçin
  • Kimlik Doğrulama bölümünde
  • "Kimliği doğrulanmayan çağrılara izin ver" seçeneğinin seçili olduğundan 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
  • Hizmet Otomatik Ölçeklendirme'yi 1 olarak değiştirin (üretim amacıyla, günlük trafiğinizi işlemek için minimum sayıda örneğin çalıştırılması önerilir. Hatta bu değeri 0 (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 bu örneğin temel hazırlığı 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 "Doküman 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, yüklediğiniz dokümanda alakalı tüm yanıtlar gösterilir.
  • Arka uç koduna göz atarak denemeler yapabilir ve aşağıdaki gibi daha fazla yapılandırma ekleyebilirsiniz
  • Snippet ekleme
  • Ayıklama segmentleri ekleme
  • Yanıt ekleme
  • 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)
  • Ek olarak, dokümanı yüklerken meta veri etiketleri de ekleyebilirsiniz. Bu, yönler ve filtrelenebilir kategoriler oluşturmanıza 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 Console'da Kaynakları yönetin sayfasına gidin.
  2. Proje listesinde, 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 yeni dağıttığınız hizmeti seçip silebilirsiniz.

10. Tebrikler

Tebrikler! Google tarafından desteklenen en son modelleri kullanarak ve arama sorgularınıza Google kalitesinde sonuçlar sunmak için 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. Google Cloud'dan yararlanarak ve yalnızca 5 adımda, birkaç dakika içinde 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 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.