Neler yeni

Seni de aramızda görmek istiyoruz! 🚀

Bilgi paylaştıkça çoğalır. Şu an misafir olarak buradasın ama sadece birkaç saniyeni ayırarak ücretsiz üye olabilir; binlerce içeriğe erişebilir, sorularını sorabilir ve topluluğumuzun bir parçası olabilirsin. Geliştirmek, öğrenmek ve paylaşmak için hemen aramıza katıl!

🐍 Python ile Kendi Belgelerinle Konuşan AI Asistanı (RAG Sistemi Adım Adım)

Gökhan

Sahip
Yönetici
Python RAG sistemi kurma yapay zeka asistan embedding - Kodeyun

🐍 "Kendi belgelerimle konuşan bir yapay zekâ yapmak istiyorum ama nereden başlayacağımı bilmiyorum." En sık gelen sorulardan biri. İyi haber: temel bir RAG sistemi 100 satırın altında yazılabilir. Adım adım yapalım! 🚀

🎯 Ne Yapacağız?​

PDF veya metin dosyalarınızı okuyup, sorularınıza sadece o belgelere dayanarak cevap veren bir asistan. Buna RAG (Retrieval-Augmented Generation) deniyor.
Kod:
Akış
------------------------------------------
1. Belgeleri parçalara böl (chunk)
2. Her parçayı sayısal vektöre çevir (embedding)
3. Soruyu da vektöre çevir
4. En benzer parçaları bul
5. Parçaları modele bağlam olarak ver
6. Cevabı üret

📦 Kurulum​

Bash:
pip install sentence-transformers faiss-cpu pypdf
sentence-transformers: metni vektöre çevirir, ücretsiz ve yerelde çalışır.
faiss: milyonlarca vektör arasında saniyeler içinde benzerlik araması yapar.
pypdf: PDF'ten metin çıkarır.

1️⃣ Belgeleri Okuma ve Parçalama​

Python:
from pypdf import PdfReader

def metni_al(dosya):
    okuyucu = PdfReader(dosya)
    return "\n".join(sayfa.extract_text() or "" for sayfa in okuyucu.pages)

def parcala(metin, boyut=500, ortusme=50):
    parcalar = []
    i = 0
    while i < len(metin):
        parcalar.append(metin[i:i + boyut])
        i += boyut - ortusme
    return parcalar
Not: Örtüşme (overlap) önemlidir — cümle ortasından bölünen bilgiyi kurtarır. ✂️

2️⃣ Vektörleştirme ve İndeks​

Python:
from sentence_transformers import SentenceTransformer
import faiss
import numpy as np

model = SentenceTransformer("paraphrase-multilingual-MiniLM-L12-v2")

parcalar = parcala(metni_al("belge.pdf"))
vektorler = model.encode(parcalar, normalize_embeddings=True)

indeks = faiss.IndexFlatIP(vektorler.shape[1])
indeks.add(np.array(vektorler))
İpucu: Türkçe için çok dilli (multilingual) model seçmek doğruluğu ciddi artırır. 🇹🇷

3️⃣ Arama Fonksiyonu​

Python:
def ara(soru, k=3):
    soru_vec = model.encode([soru], normalize_embeddings=True)
    skorlar, indisler = indeks.search(np.array(soru_vec), k)
    return [parcalar[i] for i in indisler[0]]

4️⃣ Cevap Üretme​

Python:
def cevapla(soru):
    baglam = "\n---\n".join(ara(soru))
    istem = f"""Aşağıdaki belge parçalarına dayanarak soruyu cevapla.
Bilgi belgede yoksa "Belgede bulamadım" de.

BELGE:
{baglam}

SORU: {soru}
CEVAP:"""
    return istem  # Bu istemi tercih ettiğiniz dil modeline gönderin
Bulut API'leri (kolay, ücretli) veya yerel modeller (Ollama ile ücretsiz ama donanım ister). Başlangıçta bulut API ile prototipleyip sonra yerele geçmek en pratik yol.

⚙️ Kalite Artıran 5 İyileştirme​

  • Parça boyutunu ayarlayın: 300-800 karakter arası deneyin, içeriğe göre değişir.
  • Metadata ekleyin: Hangi dosya, hangi sayfa — kaynak gösterebilirsiniz.
  • Yeniden sıralama (reranking): İlk 20 sonucu alıp daha güçlü bir modelle sıralayın.
  • Soruyu genişletin: Eş anlamlılarla arama isabetini artırın.
  • Kaynak gösterin: Cevabın hangi parçadan geldiğini kullanıcıya söyleyin — güven artar.

📊 Ne Zaman RAG, Ne Zaman İnce Ayar?​

Kod:
Durum                        Yöntem
---------------------------  ---------------
Sık değişen belgeler         RAG
Güncel bilgi gerekiyor       RAG
Kaynak göstermek gerekiyor   RAG
Belirli bir üslup/format     İnce ayar
Çok özel alan terminolojisi  İkisi birlikte

💬 Siz ne üzerine RAG kurmak isterdiniz? Şirket dokümanları, ders notları, forum arşivi? Fikrinizi yazın, birlikte tasarlayalım! 🐍
 

Konuyu görüntüleyenler

Üst