Bölüm 03Yapay Zekâ & Altyapı

Test Ortamını Kuruyoruz

GPU hızlandırmalı embedding motoru, vektör araması yapan Redis ve canlı LLM bağlantısı — sıfırdan üretim hazır altyapı.

4 Mayıs 2026·12 dk okuma·Güncellendi

Önceki bölümde test ortamımı ve hipotezlerimi paylaşmıştım. Bu bölümde söylediklerimi yapıyoruz: her bileşeni sıfırdan kurup, tüm bağlantıların çalıştığını doğrulayacağız.

Bölümün sonunda elimizde GPU hızlandırmalı bir embedding motoru, vektör araması yapabilen bir Redis instance'ı ve gerçek bir LLM bağlantısı olacak.

Kurulum Sırası

Sıra önemli. Önce temel araçlar, sonra veritabanı, son olarak Python ortamı. Bu şekilde bağımlılık çakışmalarının önüne geçiyoruz.

  1. 01
    Homebrew
    paket yöneticisi
  2. 02
    Python 3.11+
    runtime
  3. 03
    Docker Desktop
    containerization
  4. 04
    Redis Stack
    cache + vektör DB
  5. 05
    Python venv
    izolasyon
  6. 06
    Kütüphaneler
    pip install
  7. 07
    Bağlantı Testi
    doğrulama
01paket yöneticisi

Homebrew

Terminal'i aç (Cmd + Space → "Terminal") ve önce kurulu olup olmadığını kontrol et:

terminalbash
$ brew --version

Kurulu değilse:

terminalbash
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Kurulum sırasında şifren istenecek, admin yetkisi gerekiyor. 2-5 dakika sürebilir.
02runtime

Python 3.11+

Önce mevcut versiyonu kontrol et:

terminalbash
$ python3 --version

Python 3.10 veya üzeri varsa devam et. Yoksa:

terminalbash
$ brew install python@3.11
03containerization

Docker Desktop

Redis Stack'i bir container içinde çalıştıracağız. Docker kurulu mu kontrol et:

terminalbash
$ docker --version

Kurulu değilse Docker'ın resmi sitesinden Apple Silicon sürümünü indir, .dmg dosyasını aç ve Applications klasörüne sürükle. İlk açılışta macOS izin isteyecek — izin ver. Kurulumu doğrulamak için:

terminalbash
$ docker run hello-world
"Hello from Docker!" çıktısını görüyorsan hazır.
04cache + vektör DB

Redis Stack

Redis Stack, klasik Redis'in üzerine RediSearch ve RedisJSON modüllerini ekler. Böylece hem key-value cache hem de vektör benzerlik araması aynı container'dan çalışır — iki ayrı servis kurmak yerine tek komutla hallediyoruz.

terminalbash
$ docker run -d \
  --name redis-stack \
  -p 6379:6379 -p 8001:8001 \
  -v redis-data:/data \
  redis/redis-stack:latest

Port 6379 Python scriptimizin bağlanacağı nokta. Port 8001 ise RedisInsight arayüzü — tarayıcıdan http://localhost:8001 adresine girerek cache entry'lerinin dolduğunu canlı olarak izleyebilirsin.

Container'ın çalıştığını doğrulamak için:

terminalbash
$ docker exec -it redis-stack redis-cli ping

"PONG" çıktısı geliyorsa Redis hazır. Container yönetimi için kısa komutlar:

yararlı komutlarbash
$ docker stop redis-stack
$ docker start redis-stack
$ docker logs redis-stack -f
05izolasyon

Python venv

Proje klasörünü oluştur ve venv'i aktive et:

terminalbash
$ mkdir ~/semantic-cache-lab && cd ~/semantic-cache-lab
$ python3 -m venv venv
$ source venv/bin/activate
Terminal satırının başında (venv) görüyorsan izole ortamdasın.
06pip install

Kütüphaneler

Venv aktifken requirements.txt dosyasını oluştur:

requirements.txt
openai>=1.0.0
sentence-transformers>=2.7.0
torch>=2.0.0
redis>=5.0.0
tiktoken>=0.7.0
pypdf>=4.0.0
langchain>=0.2.0
langchain-community>=0.2.0
pandas>=2.0.0
matplotlib>=3.8.0
python-dotenv>=1.0.0
tqdm>=4.0.0

Ardından kur:

terminalbash
$ pip install -r requirements.txt

sentence-transformers ve torch büyük paketler — internet hızına göre 5-15 dakika sürebilir. M-serisi Mac'te MPS desteği otomatik algılanır.

MPS'in aktif olduğunu doğrulamak için:

terminalpython
$ python3 -c "import torch; print('MPS:', torch.backends.mps.is_available())"
True görüyorsan embedding hesaplamaları Apple GPU'sunda çalışacak — CPU'ya göre 3-5x daha hızlı.
07doğrulama

Bağlantı Testi

Önce .env dosyasını oluştur (OpenRouter API key'ini openrouter.ai/keys adresinden alabilirsin):

.envenv
OPENROUTER_API_KEY=sk-or-v1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
LLM_MODEL=google/gemini-2.0-flash-lite-001
REDIS_HOST=localhost
REDIS_PORT=6379
.env dosyasını asla git'e commit etme. .gitignore'a ekle:
.gitignore
.env
venv/
__pycache__/
data/
results/

Ardından test scriptini çalıştır.

OpenRouter yanıtlarını işlerken choices bir liste döner, response.choices[0].message.content şeklinde indeksle erişilmesi gerekir.
Beklenen çıktı
==================================================
BAĞLANTI TESTİ
==================================================

[1/4] Redis bağlantısı...
✓ Redis: OK

[2/4] Embedding modeli yükleniyor...
✓ Embedding: OK (dim=384, device=mps)

[3/4] OpenRouter LLM bağlantısı...
✓ OpenRouter: OK
Cevap: Evet!
Token kullanımı: 27

[4/4] Token sayımı...
✓ tiktoken: OK
"Bu bir test cümlesidir." = 7 token

==================================================
TÜM BAĞLANTILAR BAŞARILI
==================================================
Sıradaki

Bölüm 4: RAG Pipeline'ını Kuruyoruz

Altyapı hazır. Bölüm 4'te WEF raporunu parçalara ayıracak (chunking), Redis'e vektör olarak yükleyecek ve ilk anlamsal aramaları gerçekleştireceğiz.

Bu sayfayı düzenleSon güncelleme: 4 Mayıs 2026