Büyük dil modelleri eğitim verilerinin kesildiği tarihten sonraki gelişmeleri veya şirket içi özel PDF belgelerinizi bilemez. RAG (Geri Getirme Destekli Üretim) mimarisi, kendi dokümanlarınızı ve web kaynaklarınızı yapay zekaya güvenli bir hafıza olarak bağlamanızı sağlar. Bu rehberde, Crawl4AI, Qdrant ve Ollama kullanarak tek kuruş API ücreti ödemeden uçtan uca yerel RAG sistemi kuruyoruz.
Yerel RAG Mimarisi Bileşen Tablosu
| Katman | Kullanılan Açık Kaynak Araç | Görevi |
|---|---|---|
| Veri Toplama & Temizleme | Crawl4AI | Web sayfalarını ve dökümanları gürültüsüz Markdown'a çevirir |
| Gömme (Embedding) Modeli | Ollama (nomic-embed-text) | Metin parçalarını 768 boyutlu matematiksel vektörlere dönüştürür |
| Vektör Veritabanı | Qdrant (Docker) | Milyonlarca vektör arasında milisaniyelik anlamsal arama yapar |
| Üretici Beyin (LLM) | DeepSeek-R1 veya Llama 3 | Bulunan belge parçalarını okuyup kaynakçalı Türkçe yanıt üretir |
Adım 1: Gömme Modelini ve Qdrant Veritabanını Başlatma
Terminalinizi açarak Ollama üzerinden en yüksek performanslı açık kaynak embedding modelini indirin ve Qdrant konteynerini ayağa kaldırın:
# 1. Embedding modelini indir
ollama pull nomic-embed-text
# 2. Qdrant Vektör Veritabanını başlat
docker run -d -p 6333:6333 --name qdrant qdrant/qdrantAdım 2: Python ile Dokümanları Vektörleştirme ve Sorgulama
Gerekli Python paketlerini (pip install qdrant-client ollama) kurduktan sonra aşağıdaki betikle kendi bilgi bankanızı sorgulayabilirsiniz:
import ollama
from qdrant_client import QdrantClient
from qdrant_client.models import Distance, VectorParams, PointStruct
client = QdrantClient(url="http://localhost:6333")
client.recreate_collection(
collection_name="bilgi_bankasi",
vectors_config=VectorParams(size=768, distance=Distance.COSINE),
)
belgeler = [
"EVREN platformu 64 adet NVIDIA H200 GPU ve InfiniBand 400G ağı kullanır.",
"Kokoro-82M yalnızca 82 milyon parametre ile CPU üzerinde gerçek zamanlı ses üretir."
]
# Belgeleri vektörleştir ve kaydet
for idx, metin in enumerate(belgeler):
emb = ollama.embeddings(model="nomic-embed-text", prompt=metin)["embedding"]
client.upsert(
collection_name="bilgi_bankasi",
points=[PointStruct(id=idx, vector=emb, payload={"text": metin})]
)
# Soru sor ve en yakın belgeyi getir
soru = "EVREN platformunda kaç adet hangi GPU kullanılıyor?"
soru_emb = ollama.embeddings(model="nomic-embed-text", prompt=soru)["embedding"]
sonuclar = client.search(collection_name="bilgi_bankasi", query_vector=soru_emb, limit=1)
baglam = sonuclar[0].payload["text"]
yanit = ollama.chat(model="llama3", messages=[
{"role": "user", "content": f"Bağlam: {baglam}\n\nSoru: {soru}"}
])
print(yanit["message"]["content"])Sıkça Sorulan Sorular (SSS)
Kaç sayfalık PDF veya web sayfası yükleyebilirim?
Qdrant yerel diskinizde çalıştığı için yüz binlerce sayfalık teknik dökümanı dahi darboğaz yaşamadan indeksleyip milisaniyeler içinde tarayabilir.