Yapay Zeka Chatbot’u ve Akıllı Rota Optimizasyonu
Yazar: Beytullah AYDOĞAN
Bu yazıda, ELFATEK AR-GE departmanında gerçekleştirdiğim staj boyunca üzerinde çalıştığım iki heyecan verici projeyi ve bu süreçte edindiğim tecrübeleri sizlerle paylaşacağım. Stajım, yapay zeka destekli bir arıza tespit chatbot’undan, personel servis rotalarını optimize eden akıllı bir web uygulamasına kadar geniş bir yelpazeyi kapsadı.
Proje 1: Arıza Kayıtları İçin Yapay Zeka Destekli Chatbot
Stajımın ilk görevi, şirketin teknik arıza kayıtlarını analiz ederek personelin sorularını hızla yanıtlayabilecek bir yapay zeka chatbot’u geliştirmekti.
Versiyon 1: Hızlı Prototipleme ve İlk Adımlar
İşe, hızlı bir sonuç almak amacıyla n8n otomasyon platformu ve Google Sheets’i veri kaynağı olarak kullanan bir prototip ile başladık. Bu mimari, AI Agent’ın (Yapay Zeka Asistanı) önceden tanımlanmış araçları kullanarak belirli görevleri yerine getirmesine dayanıyordu. Örneğin, “ürün adına göre arama yap” aracı, Google Sheets’teki ilgili sütunda filtreleme yapıyordu.

Bu yaklaşım, “ID’si X olan kaydın detayları nedir?” gibi basit ve net sorulara anında doğru yanıtlar vererek projenin temel veri erişim katmanının çalıştığını kanıtladı.


Versiyon 1’in Sınırları: Anlamsal Arama ve Bağlam Penceresi Sorunları
Ancak yaptığım testler, bu ilk prototipin önemli zayıflıklarını ortaya çıkardı. “6 butonlu kumandaların genel arıza sebepleri nelerdir?” gibi yoruma dayalı ve anlamsal çıkarım gerektiren sorulara cevap veremiyordu. Çünkü Google Sheets, yalnızca tam metin eşleşmesi yapabiliyordu. Bir diğer kritik sorun ise “bağlam penceresi” (context window) limitiydi; AI Agent’a anlamlı bir cevap üretebilmesi için yeterli miktarda veriyi tek seferde sunmak mümkün değildi. Bu durum, V1 mimarisinin ölçeklenebilir olmadığını gösterdi.

Versiyon 2: RAG Mimarisi ile Akıllı Çözüme Geçiş
V1’in eksikliklerini gidermek için projenin “Versiyon 2” mimarisini RAG (Retrieval-Augmented Generation) prensiplerine dayanarak tasarlamaya başladım. RAG, yapay zekânın soruya yanıt vermeden önce dış bir kaynaktan (bizim durumumuzda bir vektör veritabanından) bilgi almasını sağlayan bir yöntemdir. Kısacası RAG = LLM + Vektör Arama + Bağlamlı Yanıt.
Bu yeni mimari iki ana bölümden oluşuyordu:
-
Veri Besleme Hattı (Ingestion Pipeline): Farklı formatlardaki (PDF, Excel, metin vb.) ham verileri işleyip anlamsal arama için hazır hale getirerek bir vektör veritabanına yükleyen bölüm.
-
Sorgu Hattı (Query Pipeline): Kullanıcıdan gelen soruyu analiz edip vektör veritabanında anlamsal arama yapan ve elde edilen sonuçları LLM’e göndererek nihai cevabı üreten bölüm.

Veri Besleme Hattının Oluşturulması
V2 mimarisinin ilk adımı olarak, şirketin arıza kayıtlarını barındıran bir Google Drive klasörünü sürekli izleyen bir otomasyon tasarladım. n8n’deki “Google Drive Trigger” sayesinde, klasöre yeni bir dosya eklendiğinde veya mevcut bir dosya güncellendiğinde tüm veri işleme süreci otomatik olarak başlıyordu. Bu süreçte gelen dosyanın türü (PDF, XLSX, TXT) algılanıyor, içerik çıkarılıyor, metinler “Character Text Splitter” ile anlamlı parçalara bölünüyor ve “Embeddings Google Gemini” ile anlamsal içeriği temsil eden sayısal vektörlere dönüştürülüyordu. Son olarak bu vektörler, Supabase’deki Postgres veritabanına kaydediliyordu.

Sorgu Hattı ve Telegram Entegrasyonu
Sorgu hattının beyni olan “RAG AI Agent” ise çift yetenekli bir yapıyla tasarlandı:
-
Supabase Vector Store Tool: Metin tabanlı, yoruma dayalı sorular için vektör veritabanında anlamsal arama yapıyor.
-
Query Document Rows Tool: “Hangi firmada kaç arıza var?” gibi spesifik sorular için doğrudan SQL sorguları çalıştırıyor.
Stajımın ilk fazının sonunda, V2 mimarisinin tüm bileşenlerini birleştirerek Telegram üzerinden erişilebilen uçtan uca bir chatbot prototipi ortaya çıkardım. Bu yeni versiyon, V1’in cevaplayamadığı anlamsal soruları başarıyla yanıtlayabiliyordu.

Proje 2: ELFASERVIS – Personel Servis Rota Optimizasyon Uygulaması
Stajımın ikinci ve son projesi olan ELFASERVIS, şirketin personel servis rotalarının manuel olarak planlanmasından kaynaklanan operasyonel verimsizlikleri gidermeyi hedefliyordu. Amaç, bu süreci otomatize ederek yakıt ve zaman tasarrufu sağlayacak modern bir web uygulaması geliştirmekti.
Sistem Mimarisi
-
Frontend: React ve TypeScript (Tip güvenliği ve ölçeklenebilirlik için)
-
Backend: Supabase (Entegre PostgreSQL, PostGIS eklentisi ve hazır kullanıcı yönetimi)
-
Harita ve Rota Optimizasyonu: Google Maps API


Geliştirme Süreci ve Özellikler
-
Veri Katmanı ve Yönetim Panelleri: Supabase üzerinde PostgreSQL veritabanını ve PostGIS eklentisini aktif hale getirdim. Ardından React, TypeScript ve Shadcn/ui kütüphanesini kullanarak modern ve kullanışlı “Çalışan Yönetimi” ve “Araç Filosu Yönetimi” panellerini geliştirdim. Performansı artırmak için React Query ile Supabase’den gelen verileri akıllıca önbelleğe alarak (caching) gereksiz API çağrılarını engelledim.
-
Harita Entegrasyonu ve Görselleştirme: Projenin en merkezi bileşeni olan harita entegrasyonuna başladım. Google Maps API’yi kullanarak veritabanındaki tüm çalışanları coğrafi konumlarına göre harita üzerinde birer işaretleyici (marker) olarak görselleştirdim. İşaretçilere tıklandığında çalışanın temel bilgilerini gösteren bir bilgi penceresi ekledim. Ardından, routes tablosundaki verileri kullanarak her bir servis rotasını farklı bir renkte “polyline” olarak haritaya çizdim.

-
Otomatik Rota Atama Algoritması: Projenin en akıllı özelliği olan bu algoritma, sisteme yeni eklenen veya henüz bir servise atanmamış bir çalışanı, evine coğrafi olarak en yakın servis rotasına otomatik olarak atıyordu. Bu karmaşık hesaplamayı, Supabase üzerinde PostGIS’in ST_Distance gibi güçlü coğrafi fonksiyonlarını kullanan bir PostgreSQL fonksiyonu yazarak doğrudan veritabanı katmanında çözdüm.
-
Drag & Drop ile Rota Düzenleme: Otomatik sistemlerin yanı sıra kullanıcıya esneklik sağlamak amacıyla, servis koordinatörlerinin rotaları manuel olarak iyileştirebilmesi için “Drag & Drop ile Rota Düzenleme” özelliğini geliştirdim. Kullanıcılar, harita üzerindeki bir rotanın ara noktalarını (waypoint) fareyle sürükleyip bırakarak rotayı anlık olarak güncelleyebiliyor.

-
Raporlama ve Güvenlik: Projenin sonuna yaklaşırken, İK departmanları ve yöneticiler için “Raporlama ve Analiz” modülünü geliştirdim. Bu modül, hangi çalışanın hangi serviste olduğu, araçların doluluk oranları gibi verileri tek tıkla Excel’e aktarma imkanı sunuyordu. Aynı zamanda, Supabase’in Satır Seviyesi Güvenlik (RLS) politikalarını yapılandırarak farklı kullanıcı rollerinin (Admin, Manager, User) yalnızca kendi yetki seviyeleri dahilindeki verileri görmesini sağladım.
Sonuç ve Sunum
Stajımın son gününde, ELFASERVIS projesinin sunumunu AR-GE ekibine gerçekleştirdim. Sunumda, projenin teknik mimarisini, geliştirme sürecini ve özellikle otomatik rota atama algoritmasının operasyonel verimliliğe ve yakıt tasarrufuna nasıl katkı sağlayacağını canlı bir demo ile gösterdim. Staj süresince iki farklı ve kapsamlı projeyi başarıyla tamamlamanın getirdiği değerli tecrübelerle stajımı sonlandırdım.
Son yorumlar