Kurulum
Eğitimden önce, bir kez. Her şey kendi dizüstünüzde çalışır: dil modelleri Ollama’da, vector DB (Chroma) Podman’da bir container olarak, pipeline’ın kendisi Node.js ile TypeScript olarak. Kurulumdan sonra hiçbir veri dışarı çıkmaz.
İnecekler (M serisi bir Mac’te ollama list ve podman image ls ile ölçüldü): gemma3:4b 3,3 GB · bge-m3 1,2 GB ·
Chroma imajı 649 MB. İyi bir bağlantıda indirin. Şirket ağındaysanız önce
Kurulum sorunları › Şirket ağı.
| Ne | Ne işe yarar | Kontrol |
|---|---|---|
| Node.js 22 veya üstü | pipeline’ı çalıştırır | node -v |
| git | repoyu indirir | git --version |
| Ollama | iki modeli yerelde çalıştırır | ollama list |
gemma3:4b |
chat modeli: cevabı yazar | ollama list içinde |
bge-m3 |
embedding modeli: metni 1024 sayıya çevirir | ollama list içinde |
| Podman Desktop (ya da Docker) | Chroma’yı container’da çalıştırır | podman --version |
| Bruno (isteğe bağlı) | Chroma ve Ollama’nın içine HTTP ile bakar | — |
Adım adım
Bölüm başlığı “Adım adım”-
Node.js, git, Ollama, Podman Desktop, Bruno — yukarıdaki bağlantılardan kurun. Podman Desktop ilk açılışta bir Podman makinesi (küçük bir Linux sanal makinesi) oluşturmayı ve Compose kurmayı önerir; ikisini de kabul edin (
podman composeo Compose aracını çağırır). Makine terminalden de açılır:Terminal window podman machine initpodman machine start -
İki model ve Chroma imajı — üçü de bir kez iner:
Terminal window ollama pull gemma3:4bollama pull bge-m3podman pull docker.io/chromadb/chroma:1.5.9 -
Repo — OneDrive’ın (Mac’te iCloud’un) senkronize ettiği bir klasöre değil. Masaüstü ve Belgeler çoğu zaman senkronize edilir; ev klasörünüzde yeni bir
devklasörü açın:Terminal window mkdir -p ~/dev && cd ~/devgit clone https://github.com/kuthaygumus/ama-rag-workshop.gitcd ama-rag-workshopnpm ciTerminal window New-Item -ItemType Directory -Force $HOME\devcd $HOME\devgit clone https://github.com/kuthaygumus/ama-rag-workshop.gitcd ama-rag-workshopnpm ci -
Chroma’yı başlatın — repo klasöründe:
Terminal window podman compose up -dChroma artık
http://localhost:8000adresinde. Durdurmak içinpodman compose down; kaydedilen vektörler volume’da kalır. -
Kontrol — her parçayı bir kez dener ve bir cevabın süresini ölçer:
Terminal window npm run doctorSon satır
Ready.olmalı.
$ npm run doctor
━━ DOCTOR ✓ Node.js 22.22.2 ✓ Ollama http://localhost:11434 ✓ model gemma3:4b ✓ model bge-m3 ✓ Chroma http://localhost:8000 ✓ corpus/2025 8 documents · 7 en, 1 tr ✓ embed one sentence 1024 numbers · 150 ms ✓ one answer 176 ms · "Ankara"
Ready.Yukarıdaki çıktı M serisi bir Mac’te alındı; iki model de zaten bellekteydi (embedding 150 ms, cevap 176 ms). İlk çalıştırmada iki süreye modellerin belleğe yüklenmesi de eklenir, süreler uzar. Ollama modeli birkaç dakika bellekte tutar; o arada yeni bir çalıştırmada yükleme olmaz. Corpus satırındaki “7 en, 1 tr”: 8 dokümandan biri Türkçe. Onu ileride kullanacağız.
Bir satırda ✗ varsa, yanında ne yapılacağı yazar. Hepsi tek tek:
Kurulum sorunları.
Podman yoksa
Bölüm başlığı “Podman yoksa”İki yol var; pipeline ikisinde de aynı çalışır.
Tek satırlık podman run — podman compose çalışmıyor ama Podman çalışıyorsa. compose.yaml’ın başındaki
yorumda yazan satırın aynısı:
podman run -d --name chroma -p 8000:8000 -v chroma-data:/data docker.io/chromadb/chroma:1.5.9Hiç container yok: JSON store — vektörler Chroma yerine data/store.json dosyasına yazılır. Repo klasöründe bir .env dosyasına tek satır ekleyin:
echo "STORE=json" >> .envnpm run doctorAdd-Content .env "STORE=json"npm run doctornpm run doctor artık Chroma’yı sormaz; store satırında json (no Podman needed) yazar. Ayarı tek bir komut
için değiştirmek isterseniz bayrak da olur: npm run step -- 5 --store json.
Bütün ayarlar repodaki env.example dosyasında yorum satırı olarak durur: OLLAMA_URL, CHROMA_URL,
CHAT_MODEL, EMBED_MODEL, STORE, EDITION. Birini değiştirmek için satırı .env dosyasına kopyalayıp
baştaki # işaretini silin.
Chroma’nın tanımı, satır satır açıklamasıyla birlikte:
# One container: the vector database. Ollama is NOT here — it runs on your machine, where the models# are already pulled and the GPU is.## podman compose up -d # start Chroma in the background (http://localhost:8000)# podman compose ps # is it healthy?# podman compose down # stop it; the data stays in the volume# podman compose down -v # stop it and delete the stored vectors## No compose? The same thing in one line:# podman run -d --name chroma -p 8000:8000 -v chroma-data:/data docker.io/chromadb/chroma:1.5.9
services: chroma: image: docker.io/chromadb/chroma:1.5.9 ports: - "8000:8000" volumes: - chroma-data:/data environment: ANONYMIZED_TELEMETRY: "false" healthcheck: test: ["CMD", "/bin/bash", "-c", "exec 3<>/dev/tcp/127.0.0.1/8000 && echo -e 'GET /api/v2/heartbeat HTTP/1.0\\r\\n\\r\\n' >&3 && grep -q nanosecond <&3"] interval: 5s timeout: 3s retries: 12
volumes: chroma-data:Sık sorulan
Bölüm başlığı “Sık sorulan”Docker kullanıyorum, Podman kurmam gerekir mi?
Gerekmez. Aynı compose.yaml ile docker compose up -d çalışır; tek satırlık komutta da podman yerine
docker yazın.
GPU gerekir mi?
Hayır. Ollama GPU varsa onu kullanır, yoksa işlemcide çalışır; adımlar yine çalışır, yalnızca beklersiniz. “slow laptop” uyarısı için: Kurulum sorunları.
Ollama neden container'da değil?
Modeller ve GPU sizin makinenizde. Ollama’yı container’a koymak GPU erişimini zorlaştırır ve modelleri ikinci kez indirtir. Container’da yalnızca veritabanı var.
Bruno şart mı?
Değil. Pipeline terminalde çalışır. Bruno yalnızca Chroma’nın ve Ollama’nın HTTP API’lerine elle bakmak için:
bruno/ klasörünü bir koleksiyon olarak açın.
Şirket dizüstümde yönetici yetkim yok.
Node, git ve Ollama kurulabildiyse eğitimi takip edebilirsiniz: Podman kurulamazsa JSON store’u kullanın (yukarıda). Ayrıntılar ve Windows’a özgü durumlar: Kurulum sorunları.
npm run doctor “Ready.” diyorsa gün başlayabilir.