Firebase AI ve Machine Learning: Adım Adım Uygulama Rehberi
Yazar: Burak Balkı | Kategori: AI & Machine Learning | Okuma Süresi: 10 dk
Firebase ML ve Vertex AI kullanarak modern uygulamalara yapay zeka özelliklerinin nasıl entegre edileceğini anlatan kapsamlı teknik rehber. Görüntü işleme, m...
## Firebase AI ve Machine Learning Ekosistemine Giriş
Modern uygulama geliştirme süreçlerinde yapay zeka (AI) ve makine öğrenimi (ML), kullanıcı deneyimini kişiselleştirmek ve otomatize etmek için vazgeçilmez bileşenler haline gelmiştir. **Firebase**, Google Cloud'un güçlü altyapısını geliştirici dostu bir arayüzle sunarak, karmaşık ML modellerini mobil ve web uygulamalarına entegre etmeyi kolaylaştırır. Bu rehberde, Firebase'in sunduğu AI yeteneklerini, **Vertex AI** entegrasyonundan **Cloud Firestore Vector Search** özelliklerine kadar adım adım inceleyeceğiz.
Firebase ML, geliştiricilere iki temel yol sunar: Cihaz üzerinde (on-device) çalışan hafif modeller ve bulut tabanlı (cloud-based) yüksek performanslı modeller. Bu esneklik, düşük gecikme süresi gerektiren işlemler ile yüksek işlem gücü gerektiren karmaşık analizler arasında denge kurmanıza olanak tanır.
## Firebase Projesi Oluşturma ve Yapılandırma
AI özelliklerini kullanmaya başlamadan önce, projenizin Firebase CLI ve gerekli SDK'lar ile yapılandırılması gerekir. İlk adım olarak Firebase konsolu üzerinden bir proje oluşturun ve yerel ortamınızda Firebase'i başlatın.
```bash
# Firebase CLI yükleme
npm install -g firebase-tools
# Firebase girişi ve proje başlatma
firebase login
firebase init
```
Projenizi başlattıktan sonra, web veya mobil platformunuza uygun SDK'yı ekleyin. Aşağıdaki örnek, bir web projesi için temel konfigürasyonu göstermektedir:
```javascript
import { initializeApp } from "firebase/app";
import { getVertexAI, getGenerativeModel } from "firebase/vertexai-preview";
const firebaseConfig = {
apiKey: "YOUR_API_KEY",
authDomain: "your-app.firebaseapp.com",
projectId: "your-app-id",
storageBucket: "your-app.appspot.com",
messagingSenderId: "sender-id",
appId: "app-id"
};
const app = initializeApp(firebaseConfig);
```
## Firebase ML Kit: Cihaz Üzerinde İşleme
**ML Kit**, ağ bağlantısına ihtiyaç duymadan cihaz üzerinde çalışan hazır modeller sunar. Bu, özellikle gizlilik odaklı uygulamalar ve anlık geri bildirim gerektiren (örneğin barkod tarama veya yüz algılama) senaryolar için idealdir.
### Görüntü Etiketleme (Image Labeling)
Bir görseldeki nesneleri tanımlamak için ML Kit'in görüntü etiketleme özelliğini kullanabiliriz. İşte temel bir implementasyon:
```javascript
// Not: ML Kit genellikle mobil SDK'larda (Android/iOS) daha yaygındır.
// Web tarafında benzer işlevler için Cloud Vision API kullanılır.
import { getFunctions, httpsCallable } from "firebase/functions";
const functions = getFunctions(app);
const labelImage = httpsCallable(functions, 'labelImage');
labelImage({ imageUri: 'gs://bucket/image.jpg' })
.then((result) => {
const labels = result.data.labels;
labels.forEach(label => console.log(label.description, label.score));
});
```
## Vertex AI for Firebase: Üretken Yapay Zeka
Google'ın en gelişmiş modelleri olan **Gemini**, artık Firebase üzerinden doğrudan erişilebilirdir. **Vertex AI for Firebase**, istemci tarafında (client-side) güvenli bir şekilde üretken AI modellerini çağırmanıza imkan tanır.
### Gemini Pro ile Metin Oluşturma
Uygulamanıza bir sohbet botu veya içerik oluşturucu eklemek için aşağıdaki yapıyı kullanabilirsiniz:
```javascript
const vertexAI = getVertexAI(app);
const model = getGenerativeModel(vertexAI, { model: "gemini-1.5-flash" });
async function generateContent(prompt) {
const result = await model.generateContent(prompt);
const response = await result.response;
const text = response.text();
console.log(text);
}
generateContent("Firebase ve AI entegrasyonunun avantajlarını 3 maddede açıkla.");
```
## Firestore Vector Search: AI Destekli Arama
Klasik anahtar kelime araması yerine, anlam bazlı arama yapmak için **Vector Search** kullanılır. Firestore, metinleri (embeddings) vektör formatında saklayarak benzerlik araması yapmanıza olanak tanır.
### Vektör Verisi Ekleme ve Sorgulama
Öncelikle verilerinizi vektör haline getirmeli ve Firestore'a kaydetmelisiniz:
```javascript
import { getFirestore, doc, setDoc, vectorValue } from "firebase/firestore";
const db = getFirestore(app);
async function saveDocumentWithVector(id, content, vectorArray) {
await setDoc(doc(db, "documents", id), {
text: content,
embedding: vectorValue(vectorArray) // Vektör dizisi
});
}
```
Sorgulama aşamasında `findNearest` metodunu kullanarak en yakın sonuçları getirebiliriz:
```javascript
import { query, collection, orderBy, limit } from "firebase/firestore";
const documentsRef = collection(db, "documents");
const q = query(
documentsRef,
orderBy("embedding", "vector_distance", {
referenceValue: vectorValue(queryVector),
distanceMeasure: "COSINE"
}),
limit(5)
);
```
## Firebase Cloud Functions ile AI İş Akışları
AI işlemleri genellikle yoğun kaynak tüketir. Bu işlemleri istemci tarafında yapmak yerine **Cloud Functions** üzerinde asenkron olarak çalıştırmak performansı artırır.
### Otomatik Metin Çevirisi Örneği
Firestore'a yeni bir belge eklendiğinde tetiklenen ve metni otomatik çeviren bir fonksiyon:
```typescript
import { onDocumentCreated } from "firebase-functions/v2/firestore";
import { TranslationServiceClient } from "@google-cloud/translate";
const translateClient = new TranslationServiceClient();
export const translateComment = onDocumentCreated("comments/{commentId}", async (event) => {
const data = event.data?.data();
const text = data?.text;
const [response] = await translateClient.translateText({
parent: `projects/your-project-id/locations/global`,
contents: [text],
mimeType: 'text/plain',
targetLanguageCode: 'en',
});
return event.data?.ref.update({ translatedText: response.translations?.[0].translatedText });
});
```
## Firebase Extensions ile AI Otomasyonu
Kod yazmadan AI özelliklerini entegre etmenin en hızlı yolu **Firebase Extensions** kullanmaktır. Popüler AI eklentileri şunlardır:
| Eklenti Adı | İşlevi | Sağlayıcı |
| :--- | :--- | :--- |
| Multimodal Embeddings | Görsel ve metinleri vektöre dönüştürür | Google Cloud |
| Language Tasks | Metin özetleme, çeviri ve duygu analizi | Vertex AI |
| Image Captioning | Görsellere otomatik açıklama yazar | Vertex AI |
| Semantic Search | Firestore'da anlam tabanlı arama sağlar | Google Cloud |
## Özel Machine Learning Modellerini Dağıtma
Eğer kendi **TensorFlow Lite** modelinizi eğittiyseniz, bu modeli Firebase üzerinden dinamik olarak dağıtabilirsiniz. Bu, uygulama boyutunu küçültür ve modeli uygulama güncellemesi yapmadan güncellemenize olanak tanır.
```javascript
// Model indirme ve başlatma örneği (Swift/Kotlin benzeri mantık)
import FirebaseMLModelDownloader
const conditions = ModelDownloadConditions(wifiRequired: true)
ModelDownloader.modelDownloader().getModel(name: "my_custom_model",
downloadType: .localModelUpdateInBackground,
conditions: conditions) { result in
// Model hazır
}
```
## Güvenlik ve Veri Gizliliği
AI modellerine gönderilen verilerin güvenliği için **Firebase Security Rules** ve **App Check** kullanılmalıdır. Özellikle API anahtarlarının istemci tarafında kötüye kullanımını engellemek için App Check kritik öneme sahiptir.
```firestore
service cloud.firestore {
match /databases/{database}/documents {
match /embeddings/{docId} {
allow read: if request.auth != null;
allow write: if false; // Sadece Admin SDK (Cloud Functions) yazabilir
}
}
}
```
## Performans Optimizasyonu ve Maliyet Yönetimi
1. **Önbelleğe Alma (Caching):** AI yanıtlarını Firestore veya Realtime Database üzerinde önbelleğe alarak tekrarlanan maliyetleri önleyin.
2. **Model Boyutu:** On-device modellerde `TFLite` kullanarak model boyutunu 5MB'ın altında tutmaya çalışın.
3. **Batch Processing:** Çoklu veri işlemlerini tek bir Cloud Function çağrısında birleştirin.
4. **Monitoring:** Google Cloud Console üzerinden API kotalarını ve harcamaları takip edin.
## Sık Yapılan Hatalar ve Çözüm Yolları
* **Hata:** API anahtarının yetkisiz kullanımı.
* **Çözüm:** Google Cloud Console üzerinden API anahtarını sadece Firebase servislerine kısıtlayın.
* **Hata:** Cloud Functions zaman aşımı (Timeout).
* **Çözüm:** AI işlemleri uzun sürdüğü için fonksiyon süresini `runWith({timeoutSeconds: 300})` ile artırın.
* **Hata:** Yüksek faturalandırma.
* **Çözüm:** Ücretsiz kota sınırlarını takip edin ve Vertex AI için `Flash` modellerini (daha ucuz) tercih edin.
## Sık Sorulan Sorular
**1. Firebase ML tamamen ücretsiz mi?**
Cihaz içi (on-device) özellikler ücretsizdir ancak Cloud tabanlı API'lar (Vertex AI, Vision API) belirli bir kotadan sonra ücrete tabidir.
**2. Kendi modelimi Firebase'e yükleyebilir miyim?**
Evet, TensorFlow Lite formatındaki özel modellerinizi Firebase Console üzerinden yükleyip uygulamalarınıza dağıtabilirsiniz.
**3. Vertex AI ve ML Kit arasındaki fark nedir?**
ML Kit hazır, cihaz içi çözümler sunar. Vertex AI ise Google'ın en güçlü bulut tabanlı üretken AI modellerine erişim sağlar.
**4. İnternet olmadan AI özelliklerini kullanabilir miyim?**
Sadece ML Kit'in on-device modelleri ve önceden indirilmiş özel TFLite modelleri çevrimdışı çalışabilir.
**5. Verilerim AI modellerini eğitmek için kullanılıyor mu?**
Vertex AI for Firebase kullanımında, verileriniz varsayılan olarak Google'ın temel modellerini eğitmek için kullanılmaz.
## Özet ve Sonuç
Firebase, AI ve Machine Learning dünyasına girmek isteyen geliştiriciler için uçtan uca bir platform sunmaktadır. **Vertex AI** ile üretken yapay zeka entegrasyonu, **Firestore Vector Search** ile akıllı aramalar ve **ML Kit** ile cihaz içi hızlı çözümler oluşturmak artık her zamankinden daha kolay. Bu rehberdeki adımları takip ederek, uygulamanızı statik bir yapıdan dinamik ve akıllı bir deneyime dönüştürebilirsiniz.