Ana içeriğe atla

DeepSeek R1’ı Ollama ile Yerelde Nasıl Kurar ve Çalıştırırsınız

DeepSeek-R1’ı Ollama ile yerelde nasıl kurup çalıştıracağınızı ve basit bir RAG uygulaması nasıl geliştireceğinizi öğrenin.
Güncel 3 Eki 2026  · 12 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Bu eğitimde, DeepSeek-R1’ı adım adım yerelde nasıl çalıştıracağınızı ve Ollama kullanarak nasıl kuracağınızı anlatacağım. Ayrıca R1 modeli, LangChain ve Gradio kullanarak dizüstü bilgisayarınızda çalışan basit bir RAG uygulaması oluşturmayı da inceleyeceğiz.

Yalnızca R1 modeline genel bir bakış istiyorsanız, bu DeepSeek-R1 makalesini öneririm. R1’ı nasıl ince ayar yapacağınızı öğrenmek için DeepSeek-R1’ı ince ayar yapma konulu bu eğitimi tavsiye ederim. Videoyla öğrenmeyi tercih ediyorsanız, mutlaka bunu izleyin:

Neden DeepSeek-R1’ı Yerelde Çalıştırmalısınız?

DeepSeek-R1’ı yerelde çalıştırmak, harici sunuculara bağımlı olmadan model çalıştırma üzerinde tam denetim sağlar. DeepSeek-R1’ı yerelde çalıştırmanın birkaç avantajı şunlardır:

  • Gizlilik ve güvenlik: Verileriniz sisteminizden dışarı çıkmaz.
  • Kesintisiz erişim: Oran sınırlamalarından, kesinti sürelerinden veya hizmet aksamalarından kaçının.
  • Performans: API gecikmesini ortadan kaldırarak yerel çıkarımla daha hızlı yanıtlar alın.
  • Özelleştirme: Parametreleri değiştirin, istemleri iyileştirin ve modeli yerel uygulamalara entegre edin.
  • Maliyet etkinliği: Modeli yerelde çalıştırarak API ücretlerini ortadan kaldırın.
  • Çevrimdışı kullanılabilirlik: Model indirildikten sonra internet bağlantısı olmadan çalışın.

DeepSeek-R1’ı Ollama ile Yerelde Kurma

Ollama, model indirme, niceleme ve çalıştırmayı sorunsuz biçimde yöneterek LLM’leri yerelde çalıştırmayı kolaylaştırır.

Adım 1: Ollama’yı kurun

Önce, Ollama’yı resmi web sitesinden indirin ve kurun.

Ollama indiriliyor

İndirme tamamlandıktan sonra, Ollama uygulamasını diğer uygulamalar gibi kurun.

Adım 2: DeepSeek-R1’ı indirin ve çalıştırın

Kurulumu test edelim ve modelimizi indirelim. Terminali açın ve aşağıdaki komutu yazın.

ollama run deepseek-r1

Ollama, 1.5B parametreden tam 671B parametreli modele kadar bir dizi DeepSeek R1 modeli sunar. 671B model orijinal DeepSeek-R1’dır; daha küçük modeller ise Qwen ve Llama mimarilerine dayanan damıtılmış sürümlerdir. Donanımınız 671B modeli desteklemiyorsa, aşağıdaki komutu kullanarak ve X ifadesini istediğiniz parametre boyutuyla (1.5b, 7b, 8b, 14b, 32b, 70b, 671b) değiştirerek kolayca daha küçük bir sürümü çalıştırabilirsiniz:

ollama run deepseek-r1:Xb

Bu esneklik sayesinde, bir süper bilgisayarınız olmasa bile DeepSeek-R1’ın yeteneklerinden yararlanabilirsiniz.

Adım 3: DeepSeek-R1’ı arka planda çalıştırma

DeepSeek-R1’ı kesintisiz olarak çalıştırmak ve bir API üzerinden sunmak için, Ollama sunucusunu başlatın:

ollama serve

Bu, modeli diğer uygulamalarla entegrasyona hazır hale getirecektir.

DeepSeek-R1’ı Yerelde Kullanma

Adım 1: CLI üzerinden çıkarım çalıştırma

Model indirildikten sonra, DeepSeek-R1 ile doğrudan terminal üzerinden etkileşime geçebilirsiniz.

Terminalde DeepSeek-R1 çalışıyor

Adım 2: DeepSeek-R1’a API üzerinden erişim

DeepSeek-R1’ı uygulamalara entegre etmek için, curl kullanarak Ollama API’sini kullanın:

curl http://localhost:11434/api/chat -d '{
  "model": "deepseek-r1",
  "messages": [{ "role": "user", "content": "Solve: 25 * 25" }],
  "stream": false
}'

curl, Linux’a özgü bir komut satırı aracıdır ancak macOS’ta da çalışır. Terminalden doğrudan HTTP istekleri yapmanıza olanak tanır; bu da API’lerle etkileşim için mükemmel bir araçtır.

Terminalde API üzerinden DeepSeek-R1’a erişim

Adım 3: DeepSeek-R1’a Python üzerinden erişim

Ollama’yı istediğiniz herhangi bir tümleşik geliştirme ortamında (IDE) çalıştırabiliriz. Aşağıdaki kodla Ollama Python paketini kurabilirsiniz:

!pip install ollama

Ollama kurulduktan sonra, modelle etkileşim kurmak için aşağıdaki betiği kullanın:

import ollama
response = ollama.chat(
    model="deepseek-r1",
    messages=[
        {"role": "user", "content": "Explain Newton's second law of motion"},
    ],
)
print(response["message"]["content"])

ollama.chat() işlevi, model adını ve bir kullanıcı istemini alır ve bunu sohbet alışverişi olarak işler. Betik daha sonra modelin yanıtını çıkarır ve yazdırır.

VSCode’da DeepSeek R1’ı yerelde çalıştırma

DeepSeek-R1 ile Yerel RAG için Bir Gradio Uygulaması Çalıştırma

Gradio kullanarak DeepSeek-R1 ile belgeleri sorgulayıp analiz etmek için basit bir demo uygulaması oluşturalım.

Adım 1: Önkoşullar

Uygulamaya geçmeden önce, aşağıdaki araç ve kitaplıkların kurulu olduğundan emin olalım:

  • Python 3.8+
  • Langchain: Büyük dil modelleri (LLM’ler) ile çalışan uygulamalar geliştirmeye yönelik çerçeve; kolay alma, akıl yürütme ve araç entegrasyonu sağlar.
  • Chromadb: Gömlemeleri depolamak ve benzerlik aramalarını verimli yürütmek için tasarlanmış yüksek performanslı bir vektör veritabanı.
  • Gradio: Kullanıcı dostu bir web arayüzü oluşturmak için.

Gerekli bağımlılıkları kurmak için aşağıdaki komutları çalıştırın:

!pip install langchain chromadb gradio 
!pip install -U langchain-community

Yukarıdaki bağımlılıklar kurulduktan sonra aşağıdaki içe aktarma komutlarını çalıştırın:

import gradio as gr
from langchain_community.document_loaders import PyMuPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores import Chroma
from langchain_community.embeddings import OllamaEmbeddings
import ollama

Adım 2: Yüklenen PDF’nin işlenmesi

Kitaplıklar içe aktarıldıktan sonra, yüklenen PDF’yi işleyeceğiz.

def process_pdf(pdf_bytes):
    if pdf_bytes is None:
        return None, None, None

    loader = PyMuPDFLoader(pdf_bytes)
    data = loader.load()

    text_splitter = RecursiveCharacterTextSplitter(
        chunk_size=500, chunk_overlap=100
    )
    chunks = text_splitter.split_documents(data)

    embeddings = OllamaEmbeddings(model="deepseek-r1")
    vectorstore = Chroma.from_documents(
        documents=chunks, embedding=embeddings, persist_directory="./chroma_db"
    )
    retriever = vectorstore.as_retriever()

    return text_splitter, vectorstore, retriever

process_pdf işlevi:

  • PDF içeriğini alma tabanlı yanıtlama için yükler ve hazırlar.
  • Bir PDF’nin yüklenip yüklenmediğini kontrol eder.
  • PyMuPDFLoader kullanarak metni çıkarır.
  • RecursiveCharacterTextSplitter kullanarak metni parçalara böler.
  • OllamaEmbeddings kullanarak vektör gömlemeleri üretir.
  • Gömlemeleri verimli alma için bir Chroma vektör deposunda saklar.

Adım 3: Alınan belge parçalarının birleştirilmesi

Gömlemeler alındıktan sonra, bunları bir araya getirmemiz gerekir. combine_docs() işlevi, birden çok alınan belge parçasını tek bir dize halinde birleştirir.

def combine_docs(docs):
    return "\n\n".join(doc.page_content for doc in docs)

Alma tabanlı modeller tüm belgeler yerine ilgili alıntıları çektiğinden, bu işlev, çıkarılan içeriğin DeepSeek-R1’a iletilmeden önce okunabilir ve düzgün biçimlendirilmiş kalmasını sağlar.

Adım 4: Ollama kullanarak DeepSeek-R1’a sorgu gönderme

Artık modele girdi olarak vereceğimiz içerik hazır. Ollama kullanarak DeepSeek R1’ı kuralım.

import re

def ollama_llm(question, context):
    formatted_prompt = f"Question: {question}\n\nContext: {context}"

    response = ollama.chat(
        model="deepseek-r1",
        messages=[{"role": "user", "content": formatted_prompt}],
    )

    response_content = response["message"]["content"]

    # Remove content between <think> and </think> tags to remove thinking output
    final_answer = re.sub(r"<think>.*?</think>", "", response_content, flags=re.DOTALL).strip()

    return final_answer

ollama_llm() işlevi, kullanıcının sorusunu ve alınan belge bağlamını yapılandırılmış bir isteme dönüştürür. Bu biçimlendirilmiş girdi, ollama.chat() aracılığıyla DeepSeek-R1’a gönderilir; model soruyu verilen bağlam içinde işler ve ilgili bir yanıt döndürür. Yanıtı modelin düşünme çıktısı olmadan almak isterseniz, son yanıtı döndürmek için strip() işlevini kullanın.

Adım 5: RAG hattı

Gerekli tüm bileşenlere artık sahibiz; demomuz için RAG hattını oluşturalım.

def rag_chain(question, text_splitter, vectorstore, retriever):
    retrieved_docs = retriever.invoke(question)
    formatted_content = combine_docs(retrieved_docs)
    return ollama_llm(question, formatted_content)

Yukarıdaki işlev, önce retriever.invoke(question) kullanarak vektör deposunda arama yapar ve en ilgili belge alıntılarını döndürür. Bu alıntılar, combine_docs işlevi kullanılarak yapılandırılmış bir girdiye dönüştürülür ve ollama_llm’ye gönderilir; böylece DeepSeek-R1, alınan içeriğe dayalı olarak iyi bilgilendirilmiş yanıtlar üretir.

Adım 6: Gradio arayüzünün oluşturulması

RAG hattımız hazır. Şimdi, PDF girdisini işlemek ve onunla ilgili sorular sormak için DeepSeek-R1 modeliyle birlikte yerel olarak Gradio arayüzünü oluşturabiliriz.

def ask_question(pdf_bytes, question):
    text_splitter, vectorstore, retriever = process_pdf(pdf_bytes)

    if text_splitter is None:
        return None  # No PDF uploaded

    result = rag_chain(question, text_splitter, vectorstore, retriever)
    return {result}


interface = gr.Interface(
    fn=ask_question,
    inputs=[
        gr.File(label="Upload PDF (optional)"),
        gr.Textbox(label="Ask a question"),
    ],
    outputs="text",
    title="Ask questions about your PDF",
    description="Use DeepSeek-R1 to answer your questions about the uploaded PDF document.",
)

interface.launch()

Şu adımları gerçekleştiriyoruz:

  • Bir PDF’nin yüklenip yüklenmediğini kontrol edin.
  • process_pdf işlevini kullanarak PDF’yi işleyin, metni çıkarın ve belge gömlemeleri oluşturun.
  • Kullanıcının sorgusunu ve belge gömlemelerini rag_chain() işlevine ileterek ilgili bilgileri alın ve bağlamsal olarak doğru bir yanıt üretin.
  • Kullanıcıların bir PDF yüklemesine ve içeriği hakkında soru sormasına olanak tanıyan Gradio tabanlı bir web arayüzü kurun.
  • gr.Interface() işlevini kullanarak düzeni tanımlayın; girdi olarak bir PDF dosyası ve metin sorgusu kabul edin.
  • interface.launch() ile uygulamayı başlatarak web tarayıcısı üzerinden sorunsuz, etkileşimli belge tabanlı Soru-Cevap işlemini etkinleştirin.

DeepSeek-R1 ile RAG için Yerel Bir Gradio Uygulaması Çalıştırma

Sonuç

DeepSeek-R1’ı Ollama ile yerelde çalıştırmak, daha hızlı, gizli ve maliyet etkin model çıkarımı sağlar. Basit bir kurulum süreci, CLI etkileşimi, API desteği ve Python entegrasyonu ile DeepSeek-R1’ı genel sorgulardan karmaşık alma tabanlı görevlere kadar çok çeşitli yapay zeka uygulamaları için kullanabilirsiniz.

Yapay zekâdaki en son gelişmeleri takip etmek için şu blogları öneririm:


Aashi Dutt's photo
Author
Aashi Dutt
LinkedIn
Twitter

ML (Üretken Yapay Zekâ) alanında Google Developers Uzmanıyım, Kaggle 3x Expert unvanına sahibim ve 3+ yıllık teknoloji deneyimiyle Women Techmakers Elçisiyim. 2020'de bir sağlık teknolojileri girişiminin kurucu ortağı oldum ve Georgia Tech'te makine öğrenmesi alanında uzmanlaşarak bilgisayar bilimleri yüksek lisansı yapıyorum.

Konular
Yapay Zeka
Büyük Dil Modelleri

Bu kurslarla yapay zekâyı öğrenin!

Kurs

LangChain ile LLM Uygulamaları Geliştirme

3 sa
51.9K
LangChain'de LLM'leri, istemleri, zincirleri ve aracıları kullanarak yapay zeka destekli uygulamaları nasıl oluşturacağınızı keşfedin.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Devamını GörDevamını Gör