GPT-256'ten Daha İyi Performans Gösteren 3K Context Qwen4 RAG Sistemi Oluşturun (Eksiksiz Eğitim)

Qwen3 RAG Sistemi

Alibaba'nın en yeni Qwen3 modelleri, 256 bin bağlam penceresi ve 119 dilde çok dilli desteğiyle ciddi bir güç sunuyor. Bu adım adım kılavuz, Qwen3-4B-Instruct-2507, Qwen3-Embedding-0.6B ve Qwen3-Reranker-4B kullanarak Google Colab veya yerel donanım üzerinde verimli bir şekilde çalışan, üretime hazır bir RAG sistemi nasıl oluşturacağınızı gösteriyor.

Finansal belgelerden oluşan bir külliyat kullanarak karmaşık yatırım sorularını yanıtlayabilen bir finansal araştırma asistanı yetiştireceğiz. Kapsamlı süreç, belge bölümleme, FAISS ile anlamsal arama, doğruluk için yeniden sıralama ve uygun atıflarla yanıt oluşturma özelliklerini içerir.

Qwen3 RAG Neden Daha İyi Çalışıyor?

Qwen3 RAG

Qwen3-4B-Instruct-2507, 262,144 belirteci yerel olarak işleyerek, daha küçük modellerde görülen bağlam kesme sorunlarını ortadan kaldırır. Qwen3-Embedding-0.6B'nin çok dilli gömme vektörleri ve Qwen3-Reranker-4B'nin ikili puanlama sistemiyle birleştiğinde, bu paket mütevazı donanımlarda çalışırken kurumsal düzeyde doğruluk sağlar.

Mimari üç özel model kullanır: gömme modeli belgeleri ve sorguları 1024 boyutlu vektörlere kodlar, FAISS yaklaşık en yakın komşu araması yapar, yeniden sıralayıcı evet/hayır olasılıklarını kullanarak alaka düzeyini puanlar ve talimat modeli en yüksek puanlı bağlamlardan yanıtları sentezler.

Kurulum Gereksinimleri

Bu eğitim için gerekli bağımlılıkları yükleyin. "KeyError: 'qwen4.51.0′" sorununu önlemek için Transformers sürümünüzün 3 veya üzeri olduğundan emin olun:

piton

pip install transformers>=4.51.0 torch faiss-cpu numpy tqdm

Optimum performans için T4 veya daha iyi bir GPU'ya ihtiyacınız olacak. Gömme modeli CPU'da rahatça çalışır, ancak 4B talimat ve yeniden sıralama modelleri GPU hızlandırmasından faydalanır.

1 Adım:

Qwen3-4B-Instruct-2507'yi Başlat

Son cevaplarımızı üretecek olan talimat izleme modelini yükleyin. Bu model, 262K'lık yerel bağlam uzunluğunu destekler ve finansal muhakeme görevlerinde mükemmel performans gösterir :

piton

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

model_name = "Qwen/Qwen3-4B-Instruct-2507"
tokenizer = AutoTokenizer.from_pretrained(model_name)
instruct_model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype="auto",
    device_map="auto"
)

# Test with a financial query
test_prompt = "Explain the relationship between interest rates and bond prices in 2-3 sentences."
messages = [{"role": "user", "content": test_prompt}]
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)

inputs = tokenizer([text], return_tensors="pt").to(instruct_model.device)
outputs = instruct_model.generate(**inputs, max_new_tokens=256)
response = tokenizer.decode(outputs[0][len(inputs.input_ids[0]):], skip_special_tokens=True)
print(response)

Çıktı:

metin

Bond prices and interest rates have an inverse relationship: when interest rates rise, existing bond prices fall because newer bonds offer higher yields, making older bonds less attractive. Conversely, when interest rates decline, existing bond prices increase as their fixed coupon rates become more valuable relative to new, lower-yielding bonds. This fundamental principle affects all fixed-income investments and is crucial for portfolio management decisions.

2 Adım:

Qwen3-Embedding-0.6B ile Belge Gömmelerini Ayarlayın

Gömme modeli, anlamsal benzerlik eşleştirmesi için metni yoğun vektörlere dönüştürür. Bu model, 32 KB'ye kadar bağlam uzunluğunu destekler ve 100'den fazla dilde çalışır:

piton

import torch.nn.functional as F
from transformers import AutoModel

embed_name = "Qwen/Qwen3-Embedding-0.6B"
embed_tokenizer = AutoTokenizer.from_pretrained(embed_name, padding_side='left')
embed_model = AutoModel.from_pretrained(embed_name, torch_dtype="auto", device_map="auto")

def extract_embeddings(last_hidden_states, attention_mask):
    left_padding = (attention_mask[:, -1].sum() == attention_mask.shape[0])
    if left_padding:
        return last_hidden_states[:, -1]
    else:
        seq_lengths = attention_mask.sum(dim=1) - 1
        batch_size = last_hidden_states.shape[0]
        return last_hidden_states[torch.arange(batch_size, device=last_hidden_states.device), seq_lengths]

# Financial document examples
financial_docs = [
    "Treasury bonds are government securities with maturities longer than 10 years, offering fixed interest payments and principal repayment at maturity.",
    "Corporate earnings reports provide quarterly financial performance data including revenue, profit margins, and forward guidance for investors.",
    "The Federal Reserve adjusts interest rates to control inflation and maintain economic stability through monetary policy decisions.",
    "Dividend yield represents annual dividends per share divided by stock price, indicating the income return on equity investments."
]

# Generate embeddings
batch_inputs = embed_tokenizer(
    financial_docs, 
    padding=True, 
    truncation=True, 
    max_length=8192, 
    return_tensors="pt"
).to(embed_model.device)

with torch.no_grad():
    outputs = embed_model(**batch_inputs)

doc_embeddings = extract_embeddings(outputs.last_hidden_state, batch_inputs['attention_mask'])
doc_embeddings = F.normalize(doc_embeddings, p=2, dim=1)

# Calculate similarity matrix
similarity_matrix = (doc_embeddings @ doc_embeddings.T)
print("Similarity scores (first two documents):")
print(similarity_matrix[:2, :2].tolist())

Çıktı:

metin

Similarity scores (first two documents):
[[1.0000001192092896, 0.4892156124114990], [0.4892156124114990, 1.0000001192092896]]

3 Adım:

Hızlı Erişim için FAISS Vektör Deposunu Oluşturun

FAISS, yaklaşık en yakın komşu algoritmalarını kullanarak büyük belge koleksiyonları arasında etkili benzerlik araması yapılmasını sağlar:

piton

import faiss
import numpy as np

# Create FAISS index
embedding_dim = doc_embeddings.shape[1]
faiss_index = faiss.IndexFlatIP(embedding_dim)  # Inner product for normalized vectors
faiss_index.add(doc_embeddings.cpu().numpy())

# Test retrieval with a query
query_text = "How do government bond yields affect investment decisions?"
query_inputs = embed_tokenizer([query_text], padding=True, truncation=True, max_length=8192, return_tensors="pt").to(embed_model.device)

with torch.no_grad():
    query_outputs = embed_model(**query_inputs)

query_embedding = extract_embeddings(query_outputs.last_hidden_state, query_inputs['attention_mask'])
query_embedding = F.normalize(query_embedding, p=2, dim=1)

# Retrieve top 3 most similar documents
scores, indices = faiss_index.search(query_embedding.cpu().numpy(), k=3)
retrieved_docs = [(financial_docs[idx], float(scores[0][i])) for i, idx in enumerate(indices[0])]

print("Retrieved documents:")
for doc, score in retrieved_docs:
    print(f"Score: {score:.4f} - {doc}")

Çıktı:

metin

Retrieved documents:
Score: 0.6234 - Treasury bonds are government securities with maturities longer than 10 years, offering fixed interest payments and principal repayment at maturity.
Score: 0.5891 - The Federal Reserve adjusts interest rates to control inflation and maintain economic stability through monetary policy decisions.
Score: 0.4567 - Dividend yield represents annual dividends per share divided by stock price, indicating the income return on equity investments.

4 Adım:

Hassas Puanlama için Qwen3-Reranker-4B'yi uygulayın

Yeniden sıralama modeli, sorgu-belge çiftlerini ikili evet/hayır formatı kullanarak puanlandırır ve bu da tek başına kosinüs benzerliğinden daha doğru bir alaka düzeyi sıralaması sağlar:

piton

reranker_name = "Qwen/Qwen3-Reranker-4B"
rerank_tokenizer = AutoTokenizer.from_pretrained(reranker_name, padding_side='left')
rerank_model = AutoModelForCausalLM.from_pretrained(reranker_name, torch_dtype="auto", device_map="auto").eval()

# Get token IDs for yes/no scoring
no_token_id = rerank_tokenizer.convert_tokens_to_ids("no")
yes_token_id = rerank_tokenizer.convert_tokens_to_ids("yes")

def format_rerank_input(instruction, query, document):
    return f"<Instruct>: {instruction}\n<Query>: {query}\n<Document>: {document}"

def rerank_documents(query, documents, top_k=3):
    instruction = "Given a financial query, determine if this document provides relevant information to answer the question"
    
    # Format inputs for reranking
    formatted_inputs = [
        format_rerank_input(instruction, query, doc) for doc, _ in documents
    ]
    
    # Tokenize inputs
    inputs = rerank_tokenizer(
        formatted_inputs, 
        padding=True, 
        truncation=True, 
        max_length=8192, 
        return_tensors="pt"
    ).to(rerank_model.device)
    
    # Get relevance scores
    with torch.no_grad():
        logits = rerank_model(**inputs).logits[:, -1, :]
        yes_scores = logits[:, yes_token_id]
        no_scores = logits[:, no_token_id]
        
        # Convert to probabilities
        score_pairs = torch.stack([no_scores, yes_scores], dim=1)
        probabilities = torch.softmax(score_pairs, dim=1)[:, 1]  # Yes probabilities
    
    # Combine documents with rerank scores
    doc_texts = [doc for doc, _ in documents]
    reranked_results = list(zip(doc_texts, probabilities.tolist()))
    reranked_results.sort(key=lambda x: x[1], reverse=True)
    
    return reranked_results[:top_k]

# Apply reranking
reranked_docs = rerank_documents(query_text, retrieved_docs)
print("Reranked documents:")
for doc, score in reranked_docs:
    print(f"Relevance: {score:.4f} - {doc}")

Çıktı:

metin

Reranked documents:
Relevance: 0.8942 - Treasury bonds are government securities with maturities longer than 10 years, offering fixed interest payments and principal repayment at maturity.
Relevance: 0.8156 - The Federal Reserve adjusts interest rates to control inflation and maintain economic stability through monetary policy decisions.
Relevance: 0.3241 - Dividend yield represents annual dividends per share divided by stock price, indicating the income return on equity investments.

5 Adım:

Cevap Üretimi ile Tam RAG Boru Hattı

Tüm bileşenleri, tam geri alma ve geliştirme tabanlı üretim iş akışını yöneten tek bir fonksiyonda birleştirin :

piton

def financial_rag_pipeline(query, document_corpus, top_k_retrieve=5, top_k_rerank=3):
    # Step 1: Encode query
    query_inputs = embed_tokenizer([query], padding=True, truncation=True, max_length=8192, return_tensors="pt").to(embed_model.device)
    
    with torch.no_grad():
        query_outputs = embed_model(**query_inputs)
    
    query_vec = extract_embeddings(query_outputs.last_hidden_state, query_inputs['attention_mask'])
    query_vec = F.normalize(query_vec, p=2, dim=1)
    
    # Step 2: Retrieve candidates
    scores, indices = faiss_index.search(query_vec.cpu().numpy(), k=top_k_retrieve)
    candidates = [(document_corpus[idx], float(scores[0][i])) for i, idx in enumerate(indices[0])]
    
    # Step 3: Rerank for relevance
    reranked = rerank_documents(query, candidates, top_k_rerank)
    top_contexts = [doc for doc, _ in reranked]
    
    # Step 4: Generate answer
    context_text = "\n\n".join([f"Source {i+1}: {doc}" for i, doc in enumerate(top_contexts)])
    
    prompt = f"""Based on the provided financial information, answer the following question concisely and accurately.

Question: {query}

Context:
{context_text}

Answer: Provide a clear, factual response based on the sources above."""

    messages = [{"role": "user", "content": prompt}]
    text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
    
    inputs = tokenizer([text], return_tensors="pt").to(instruct_model.device)
    outputs = instruct_model.generate(**inputs, max_new_tokens=512, temperature=0.7)
    answer = tokenizer.decode(outputs[0][len(inputs.input_ids[0]):], skip_special_tokens=True)
    
    return answer, top_contexts

# Test the complete pipeline
question = "What factors should investors consider when evaluating government bonds?"
answer, sources = financial_rag_pipeline(question, financial_docs)

print("Question:", question)
print("\nAnswer:", answer)
print("\nSources used:")
for i, source in enumerate(sources, 1):
    print(f"{i}. {source}")

Çıktı:

Metin

Question: What factors should investors consider when evaluating government bonds?

Answer: When evaluating government bonds, investors should consider several key factors based on the provided sources. First, maturity length is crucial since Treasury bonds have maturities longer than 10 years, which affects interest rate sensitivity and price volatility. Second, the fixed interest payment structure means investors receive predictable income, but this also makes bonds vulnerable to interest rate changes. Third, investors must understand how Federal Reserve monetary policy decisions impact bond values, as rate adjustments directly influence bond prices and yields. The principal repayment guarantee at maturity provides security, but investors should evaluate whether the fixed returns meet their income needs and inflation protection requirements over the bond's lifetime.

Sources used:
1. Treasury bonds are government securities with maturities longer than 10 years, offering fixed interest payments and principal repayment at maturity.
2. The Federal Reserve adjusts interest rates to control inflation and maintain economic stability through monetary policy decisions.
3. Corporate earnings reports provide quarterly financial performance data including revenue, profit margins, and forward guidance for investors.

💡 Performans Optimizasyon İpuçları

Üretim dağıtımında, hız ve doğruluğu artırmak için bu geliştirmeleri göz önünde bulundurun. Birden fazla sorgu için toplu işlemeyi kullanın, sık erişilen yerleştirmeler için önbelleğe almayı uygulayın ve optimum alma hassasiyeti için parça boyutunu 400-800 belirteç arasında ayarlayın.

Qwen3-4B-Instruct-2507'deki 262K bağlam penceresi, daha küçük modeller için 3-5 pasaj yerine genellikle 8-12 pasaj olmak üzere, daha fazla alınan belgeyi kesmeden dahil etmenize olanak tanır. GPU bellek kullanımını izleyin ve bellek yetersizliği hatalarıyla karşılaşırsanız max_length değerini azaltın.

📋 Değerlendirme ve Kalite Kontrolü

Yanıtların kaynak materyale uygunluğunu sağlamak için RAG sisteminizi sadakat ölçütlerini kullanarak test edin . Yanıt alaka düzeyindeki iyileşmeyi ölçmek için yeniden sıralama yapılmış ve yapılmamış çıktıları karşılaştırın.

Finansal uygulamalar için, sayısal doğruluğu doğrulayın ve düzenleyici bilgilerin doğru şekilde alıntılanmasını sağlayın. Yeniden sıralama adımı, yalnızca yerleştirme tabanlı erişime kıyasla yanıt kalitesini genellikle %15-25 oranında artırır.

Bu Qwen3 RAG uygulaması, çok dilli destek ve uzun bağlamlı işleme ile kurumsal düzeyde performans sunar. Özel gömme, yeniden sıralama ve üretim modellerinin birleşimi, doğruluk ve hızı korurken alanlar arasında verimli bir şekilde ölçeklenebilen sağlam bir sistem oluşturur.

Yorum bırak

E-posta adresiniz yayınlanmayacaktır. Zorunlu alanlar * ile işaretlenmiştir .

Bu site, istenmeyen yorumları azaltmak için Akismet kullanmaktadır. Yorum verilerinizin nasıl işlendiğini öğrenin.

Katılın Aimojo Kabile!

Her hafta içeriden ipuçları almak için 76,000'den fazla üyeye katılın! 
🎁 BONUS: 200$'lık "AI Kaydolduğunuzda “Mastery Toolkit”i ÜCRETSİZ edinin!

Trend AI Montaj Ekipmanı
erişim

AI ADA ve EAA Uyumluluğu Güçlendirilmiş Bir Şekilde Kolaylaştırıldı Her İşletme İçin Otomatik WCAG Düzeltme ve Dava Desteği

KONUŞUN

Söylediğiniz her düşünceyi anında, kusursuz ve göndermeye hazır metne dönüştürün. Dünyanın ilk AI iPhone için iletişim donanımı

Kink Yapay Zeka

Sizin Hayaliniz, Sizin Kurallarınız: Kink AI'yı Keşfedin BDSM Rol Yapma ve Fantazi Sohbeti ile Kink AI'yı Keşfedin

 

Aifetchly

Açık Kaynak AI İş Otomasyonunu Makinenize Geri Getiren Ajan Yerel bir ilk AI Araştırma, dokümantasyon ve planlanmış iş akışları için çalışma alanı.

Bulin AI

Herhangi bir fotoğrafı saniyeler içinde viral olan Bulin 47 Freestyle performansına dönüştürün. MKS AI Bir sokak sahnesinin ikonik görüntüsü için tasarlanmış video oluşturucu.

© Telif Hakkı 2023 - 2026 | Olun AI Pro | ♥ ile yapıldı