İçeriğe geç

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 —
  1. 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 compose o Compose aracını çağırır). Makine terminalden de açılır:

    Terminal window
    podman machine init
    podman machine start
  2. İki model ve Chroma imajı — üçü de bir kez iner:

    Terminal window
    ollama pull gemma3:4b
    ollama pull bge-m3
    podman pull docker.io/chromadb/chroma:1.5.9
  3. 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 dev klasörü açın:

    Terminal window
    mkdir -p ~/dev && cd ~/dev
    git clone https://github.com/kuthaygumus/ama-rag-workshop.git
    cd ama-rag-workshop
    npm ci
  4. Chroma’yı başlatın — repo klasöründe:

    Terminal window
    podman compose up -d

    Chroma artık http://localhost:8000 adresinde. Durdurmak için podman compose down; kaydedilen vektörler volume’da kalır.

  5. Kontrol — her parçayı bir kez dener ve bir cevabın süresini ölçer:

    Terminal window
    npm run doctor

    Son satır Ready. olmalı.

npm run doctor
$ 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ı.

İ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ı:

Terminal window
podman run -d --name chroma -p 8000:8000 -v chroma-data:/data docker.io/chromadb/chroma:1.5.9

Hiç 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:

Terminal window
echo "STORE=json" >> .env
npm run doctor

npm 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:

compose.yaml
# 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:
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.