Qwen3 Embedding ve Reranker Modellerini Ollama ile Yerel Olarak Çalıştırma

Mark Ponomarev

Mark Ponomarev

25 June 2025

Qwen3 Embedding ve Reranker Modellerini Ollama ile Yerel Olarak Çalıştırma

Büyük dil modelleri (LLM'ler) dünyası patlayıcı bir hızla genişliyor, ancak uzun bir süre boyunca, en son teknoloji yeteneklerine erişmek bulut tabanlı API'lere güvenmek anlamına geliyordu. Bu bağımlılık genellikle gizlilik, maliyet ve özelleştirme endişelerini beraberinde getirir. Ancak, güçlü açık kaynak modelleri ve Ollama gibi araçlar sayesinde, bu modelleri yerel makinenizde çalıştırmak her zamankinden daha kolay hale geldi ve bu durum değişiyor.

Son zamanlardaki en heyecan verici gelişmelerden biri, Alibaba Cloud tarafından Qwen3 model ailesinin piyasaya sürülmesidir. Bu modeller, özellikle özel gömme (embedding) ve yeniden sıralayıcı (reranker) versiyonları, performansta yeni ölçütler belirliyor. Ollama ile eşleştirildiğinde, geliştiricilere ve araştırmacılara gelişmiş arama motorları ve Geri Alma Destekli Üretim (RAG) sistemleri gibi sofistike yapay zeka uygulamalarını kendi donanımlarının rahatlığında oluşturmaları için güçlü bir araç seti sağlıyorlar.

Bu makale, bu gücü kullanmanız için kapsamlı, adım adım bir rehberdir. Gömme ve yeniden sıralayıcı modellerinin ne olduğunu açıklayacak, Ollama kurulumunu adım adım gösterecek ve eksiksiz, uçtan uca bir RAG iş akışı için Qwen3 gömme ve yeniden sıralayıcı modellerini çalıştırmak için pratik Python kodu sağlayacağız.

💡
Güzel API Dokümantasyonu oluşturan harika bir API Test aracı mı istiyorsunuz?

Geliştirici Ekibinizin maksimum verimlilikle birlikte çalışması için entegre, Hepsi Bir Arada bir platform mu istiyorsunuz?

Apidog tüm taleplerinizi karşılar ve Postman'ı çok daha uygun bir fiyata değiştirir!
Düğme

Güçlü İkili: Gömme ve Yeniden Sıralayıcı Modellerini Anlamak

"Nasıl" kısmına dalmadan önce, "ne" olduğunu anlayalım. Bir RAG sistemi bağlamında, gömme ve yeniden sıralayıcı modelleri farklı ancak tamamlayıcı roller oynar.

1. Kütüphaneci: Gömme Modeli

Milyonlarca kitabı olan ama katalog sistemi olmayan devasa bir kütüphane düşünün. Bilgi bulmak bir kabus olurdu. Bir gömme modeli, her belgeyi okuyan ve ona geniş, çok boyutlu bir "kavram uzayında" belirli bir konum atayan hiper-akıllı bir kütüphaneci gibidir.

Teknik olarak, bir metin gömmesi, bir metin parçasını (bir kelime, cümle veya tüm belge) yoğun bir sayı vektörüne dönüştüren bir süreçtir. Bu vektör, metnin anlamsal anlamını yakalar. Benzer anlamlara sahip belgeler, bu uzayda birbirine "yakın" vektörlere sahip olacaktır.

Bir sorgunuz olduğunda, gömme modeli sorunuzu bir vektöre dönüştürür ve ardından kütüphanede buna en yakın belge vektörlerini arar. Bu ilk arama inanılmaz derecede verimlidir ve potansiyel olarak ilgili belgelerin geniş bir kümesini getirir.

2. Uzman Danışman: Yeniden Sıralayıcı Modeli

Gömme modelinden ilk alma hızlıdır, ancak her zaman mükemmel değildir. Tematik olarak ilgili ancak kullanıcının sorgusunu tam olarak yanıtlamayan belgeleri çekebilir. İşte burada yeniden sıralayıcı devreye girer.

Eğer gömme modeli genel bir kütüphaneciyse, yeniden sıralayıcı bir konu uzmanıdır. İlk aramadan elde edilen en iyi sonuçları alır ve daha incelikli, hesaplama açısından yoğun bir analiz yapar. Bir sorgu vektörünü belge vektörleriyle bağımsız olarak karşılaştırmak yerine, bir yeniden sıralayıcı modeli (tipik olarak bir çapraz kodlayıcı) sorguyu ve her belgeyi bir çift olarak inceler.

Bu doğrudan karşılaştırma, yeniden sıralayıcının çok daha doğru bir alaka düzeyi puanı hesaplamasına olanak tanır. Daha sonra belgeleri bu puana göre yeniden sıralar ve en alakalı sonuçları en üste taşır. Hızlı bir ilk alma ve ardından hassas bir yeniden sıralamadan oluşan bu iki aşamalı süreç, en son teknoloji RAG performansının sırrıdır.

Qwen3 Modelleriyle Tanışın: Açık Kaynak Yapay Zekada Yeni Bir Standart

Alibaba Cloud'dan Qwen3 serisi sadece başka bir model seti değildir; açık kaynaklı NLP'de önemli bir ilerlemeyi temsil eder. Gömme ve yeniden sıralayıcı modellerini öne çıkaranlar şunlardır:

Yerel Yapay Zeka Ortamınızı Kurma

Şimdi, işe koyulalım. İlk adım Ollama'yı kurmak ve Qwen3 modellerini indirmektir.

Adım 1: Ollama'yı Kurun

Ollama, macOS ve Linux için basit, tek satırlık bir kurulum komutu sağlar. Terminalinizi açın ve çalıştırın:

curl -fsSL https://ollama.com/install.sh | sh

Windows için, resmi yükleyiciyi Ollama web sitesinden indirin.

Kurulduktan sonra, çalışıp çalışmadığını şunları çalıştırarak doğrulayabilirsiniz:

ollama --version

Adım 2: Qwen3 Modellerini İndirin

Ollama çalışırken, Ollama kütüphanesinden modeller çekebilirsiniz. Qwen3 modelleri dengcao ad alanı altında barındırılmaktadır. Gömme ve yeniden sıralayıcı modellerinin önerilen bir sürümünü çekeceğiz. :Q5_K_M etiketi, performans ve kaynak kullanımı arasında harika bir denge sunan belirli bir niceleme seviyesini belirtir.

Terminalinizde aşağıdaki komutları çalıştırın:

# 8B parametreli gömme modelini indirin
ollama pull dengcao/Qwen3-Embedding-8B:Q5_K_M

# 4B parametreli yeniden sıralayıcı modelini indirin
ollama pull dengcao/Qwen3-Reranker-4B:Q5_K_M

Bu indirmeler, internet bağlantınıza bağlı olarak biraz zaman alabilir. Tamamlandıktan sonra, ollama list komutunu çalıştırarak yerel olarak kullanılabilir modellerinizi görebilirsiniz.

Bölüm 1: Qwen3 ile Gömme Oluşturma

Gömme modeli indirildiğine göre, şimdi bazı vektörler oluşturalım. Resmi ollama Python kütüphanesini kullanacağız. Kurulu değilse, pip install ollama komutunu çalıştırın.

İşte bir metin parçası için gömme oluşturmak üzere basit bir Python betiği:

import ollama

# Define the model name as downloaded
EMBEDDING_MODEL = 'dengcao/Qwen3-Embedding-8B:Q5_K_M'

def get_embedding(text: str):
    """Generates an embedding for a given text."""
    try:
        response = ollama.embeddings(
            model=EMBEDDING_MODEL,
            prompt=text
        )
        return response['embedding']
    except Exception as e:
        print(f"An error occurred: {e}")
        return None

# --- Example Usage ---
sentence = "Ollama makes it easy to run LLMs locally."
embedding = get_embedding(sentence)

if embedding:
    print(f"Embedding for: '{sentence}'")
    # Print the first few dimensions for brevity
    print(f"First 5 dimensions: {embedding[:5]}")
    print(f"Total dimensions: {len(embedding)}")

Bu betik, oluşturulan vektörün ilk beş değerini ve toplam boyutunu (8B modeli için 4096) çıktı olarak verecektir. Bu vektör, cümlemizin sayısal temsilidir, depolanmaya ve karşılaştırılmaya hazırdır.

Bölüm 2: Qwen3 Yeniden Sıralayıcı ile Sonuçları İyileştirme

Yeniden sıralayıcıyı kullanmak biraz farklıdır. Özel bir rerank uç noktası yerine, standart chat uç noktasını kullanırız. Modele bir yeniden sıralayıcı olarak hareket etmesini, bir sorgu ve bir belgeyi girdi olarak almasını ve bir alaka düzeyi puanı çıkarmasını isteyen belirli bir istem oluştururuz.

Bunu ele almak için bir Python fonksiyonu oluşturalım. Modele, alaka düzeyini belirtmek için basit bir "Evet" veya "Hayır" döndürmesini isteyeceğiz, bunu kolayca bir puana dönüştürebiliriz.

import ollama

# Define the model name as downloaded
RERANKER_MODEL = 'dengcao/Qwen3-Reranker-4B:Q5_K_M'

def rerank_document(query: str, document: str) -> float:
    """
    Uses the Qwen3 Reranker to score the relevance of a document to a query.
    Returns a score of 1.0 for 'Yes' and 0.0 for 'No'.
    """
    prompt = f"""
    You are an expert relevance grader. Your task is to evaluate if the
    following document is relevant to the user's query.
    Please answer with a simple 'Yes' or 'No'.

    Query: {query}
    Document: {document}
    """
    try:
        response = ollama.chat(
            model=RERANKER_MODEL,
            messages=[{'role': 'user', 'content': prompt}],
            options={'temperature': 0.0} # For deterministic output
        )
        answer = response['message']['content'].strip().lower()
        if 'yes' in answer:
            return 1.0
        return 0.0
    except Exception as e:
        print(f"An error occurred during reranking: {e}")
        return 0.0

# --- Example Usage ---
user_query = "How do I run models locally?"
doc1 = "Ollama is a tool for running large language models on your own computer."
doc2 = "The capital of France is Paris."

score1 = rerank_document(user_query, doc1)
score2 = rerank_document(user_query, doc2)

print(f"Relevance of Doc 1: {'Relevant' if score1 > 0.5 else 'Not Relevant'} (Score: {score1})")
print(f"Relevance of Doc 2: {'Relevant' if score2 > 0.5 else 'Not Relevant'} (Score: {score2})")

Bu fonksiyon, yeniden sıralayıcı ile nasıl etkileşim kurulacağını gösterir. doc1'in sorguyla oldukça alakalı olduğunu, doc2'nin ise alakalı olmadığını doğru bir şekilde belirler.

Hepsini Bir Araya Getirme: Basit Bir RAG Uygulaması

Şimdi ana etkinliğe geçelim. Küçük bir bilgi tabanından gelen bir sorguyu yanıtlamak için her iki modelimizi de kullanan mini bir RAG boru hattı oluşturalım. Benzerlik araması için numpy kullanacağız. pip install numpy ile kurun.

import ollama
import numpy as np

# --- Model Definitions ---
EMBEDDING_MODEL = 'dengcao/Qwen3-Embedding-8B:Q5_K_M'
RERANKER_MODEL = 'dengcao/Qwen3-Reranker-4B:Q5_K_M'

# --- 1. Corpus and Offline Embedding Generation ---
documents = [
    "The Qwen3 series of models was developed by Alibaba Cloud.",
    "Ollama provides a simple command-line interface for running LLMs.",
    "A reranker model refines search results by calculating a precise relevance score.",
    "To install Ollama on Linux, you can use a curl command.",
    "Embedding models convert text into numerical vectors for semantic search.",
]

# In a real application, you would store these embeddings in a vector database
corpus_embeddings = []
print("Generating embeddings for the document corpus...")
for doc in documents:
    response = ollama.embeddings(model=EMBEDDING_MODEL, prompt=doc)
    corpus_embeddings.append(response['embedding'])
print("Embeddings generated.")

def cosine_similarity(v1, v2):
    """Calculates cosine similarity between two vectors."""
    return np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2))

# --- 2. Online Retrieval and Reranking ---
user_query = "How do I install Ollama?"

# Embed the user's query
query_embedding = ollama.embeddings(model=EMBEDDING_MODEL, prompt=user_query)['embedding']

# Perform initial retrieval (semantic search)
retrieval_scores = [cosine_similarity(query_embedding, emb) for emb in corpus_embeddings]
top_k_indices = np.argsort(retrieval_scores)[::-1][:3] # Get top 3 results

print("\n--- Initial Retrieval Results (before reranking) ---")
for i in top_k_indices:
    print(f"Score: {retrieval_scores[i]:.4f} - Document: {documents[i]}")

# --- 3. Rerank the top results ---
retrieved_docs = [documents[i] for i in top_k_indices]

print("\n--- Reranking the top results ---")
reranked_scores = [rerank_document(user_query, doc) for doc in retrieved_docs]

# Combine documents with their new scores and sort
reranked_results = sorted(zip(retrieved_docs, reranked_scores), key=lambda x: x[1], reverse=True)

print("\n--- Final Results (after reranking) ---")
for doc, score in reranked_results:
    print(f"Relevance Score: {score:.2f} - Document: {doc}")

Bu betiği çalıştırdığınızda, iki aşamalı sürecin gücünü göreceksiniz. İlk alma, "Ollama" ve "kurulum" ile ilgili belgeleri doğru bir şekilde bulur. Ancak, yeniden sıralayıcı daha sonra curl kullanma hakkındaki belgeyi en alakalı olarak doğru bir şekilde tanımlar ve mükemmel bir puanla en üste iter.

Sonuç

Artık günümüzde mevcut olan en güçlü açık kaynaklı yapay zeka ikililerinden birini yerel makinenizde başarıyla kurdunuz ve kullandınız. Qwen3 gömme modelinin geniş erişimini Qwen3 yeniden sıralayıcısının keskin hassasiyetiyle birleştirerek, daha önce büyük, tescilli sistemlerin özel alanı olan bir incelik düzeyinde dili anlayan ve işleyen uygulamalar oluşturabilirsiniz.

Yolculuk burada bitmiyor. Farklı model boyutlarını deneyebilir, çeşitli niceleme seviyelerini deneyebilir ve bu boru hattını daha karmaşık uygulamalara entegre edebilirsiniz. Bu araçları yerel olarak çalıştırma yeteneği, gizlilikten veya performanstan ödün vermeden yaratmanıza, yenilik yapmanıza ve keşfetmenize olanak tanıyan bir olasılıklar dünyasının kapılarını açar. Yerel, açık kaynaklı yapay zekanın yeni çağına hoş geldiniz.

💡
Güzel API Dokümantasyonu oluşturan harika bir API Test aracı mı istiyorsunuz?

Geliştirici Ekibinizin maksimum verimlilikle birlikte çalışması için entegre, Hepsi Bir Arada bir platform mu istiyorsunuz?

Apidog tüm taleplerinizi karşılar ve Postman'ı çok daha uygun bir fiyata değiştirir!
Düğme

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin