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ı.
Ö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.
- 01Homebrewpaket yöneticisi
- 02Python 3.11+runtime
- 03Docker Desktopcontainerization
- 04Redis Stackcache + vektör DB
- 05Python venvizolasyon
- 06Kütüphanelerpip install
- 07Bağlantı Testidoğrulama
Terminal'i aç (Cmd + Space → "Terminal") ve önce kurulu olup olmadığını kontrol et:
$ brew --versionKurulu değilse:
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Önce mevcut versiyonu kontrol et:
$ python3 --versionPython 3.10 veya üzeri varsa devam et. Yoksa:
$ brew install python@3.11Redis Stack'i bir container içinde çalıştıracağız. Docker kurulu mu kontrol et:
$ docker --versionKurulu 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:
$ docker run hello-worldRedis 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.
$ docker run -d \
--name redis-stack \
-p 6379:6379 -p 8001:8001 \
-v redis-data:/data \
redis/redis-stack:latestPort 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:
$ docker exec -it redis-stack redis-cli ping"PONG" çıktısı geliyorsa Redis hazır. Container yönetimi için kısa komutlar:
$ docker stop redis-stack
$ docker start redis-stack
$ docker logs redis-stack -fProje klasörünü oluştur ve venv'i aktive et:
$ mkdir ~/semantic-cache-lab && cd ~/semantic-cache-lab
$ python3 -m venv venv
$ source venv/bin/activateVenv aktifken requirements.txt dosyasını oluştur:
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.0Ardından kur:
$ pip install -r requirements.txtsentence-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:
$ python3 -c "import torch; print('MPS:', torch.backends.mps.is_available())"Önce .env dosyasını oluştur (OpenRouter API key'ini openrouter.ai/keys adresinden alabilirsin):
OPENROUTER_API_KEY=sk-or-v1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
LLM_MODEL=google/gemini-2.0-flash-lite-001
REDIS_HOST=localhost
REDIS_PORT=6379.env
venv/
__pycache__/
data/
results/Ardından test scriptini çalıştır.
================================================== 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 ==================================================
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.