Python ile Rag Sistemi Nasıl Yapılır? Dokümanlardan Yapay Zekâ ile Soru-Cevap

Python ile Rag Sistemi Nasıl Yapılır? Dokümanlardan Yapay Zekâ ile Soru-Cevap

Gokce Hatun

Gümüş
Kayıtlı Kullanıcı
Puan 18
Çözümler 0
Katılım
9 Ağu 2026
Mesajlar
219
Tepkime puanı
18
Gokce Hatun
Başlık: Python ile RAG Sistemi Nasıl Yapılır? Dokümanlardan Yapay Zekâ ile Soru-Cevap

🎯 Bu Yazıda Neler Öğreneceksiniz?
- Python ile RAG (Retrieval-Augmented Generation) sisteminin temelleri
- Dokümanlardan veri çekme ve soru-cevap uygulaması geliştirme adımları
- Yapay zeka ile etkileşimli sistemler oluşturma yöntemleri

Python ile RAG sistemleri, doğal dil işleme ve yapay zeka alanında önemli bir yere sahiptir. Bu sistemler, kullanıcılara sorguladıkları konularda daha doğru ve kapsamlı yanıtlar sunmak için dış veri kaynaklarını kullanarak metin oluşturma yeteneğine sahiptir. Aşağıda, Python ile bir RAG sistemi kurmak ve dokümanlardan yapay zeka ile soru-cevap uygulaması geliştirmek için gereken adımları detaylı olarak inceleyeceğiz.

### RAG Sistemi Nedir?

RAG sistemi, iki ana bileşeni birleştirir: bilgi alma (retrieval) ve metin oluşturma (generation). Bilgi alma aşamasında, sistem belirli bir sorguya uygun verileri dış kaynaklardan toplar. Ardından, bu verileri kullanarak anlamlı ve bağlam içinde cevaplar üretir. Bu yapı, kullanıcıların ihtiyaç duyduğu bilgiyi daha etkili bir şekilde elde etmesine olanak tanır.

### Gereksinimler

Başlamadan önce, aşağıdaki bileşenlere ihtiyacınız olacak:
- Python 3.x
- `transformers`, `torch`, ve `faiss` kütüphaneleri (kurulum için `pip install transformers torch faiss-cpu` komutlarını kullanabilirsiniz)
- Bir veri kümesi (metin dosyaları, PDF'ler veya diğer belgeler)

### Adım 1: Veri Kümesini Hazırlama

İlk adım, sistemin sorgulayacağı verileri toplamaktır. Dokümanlarınızı bir klasörde topladıktan sonra, bu belgeleri okuyup metin haline getirmeniz gerekecek. Örneğin, aşağıdaki kod parçacığıyla bir metin dosyasını okuyabilirsiniz:

```python
def readdocuments(folderpath):
import os

documents = []
for filename in os.listdir(folderpath):
if filename.endswith('.txt'):
with open(os.path.join(folderpath, filename), 'r', encoding='utf-8') as file:
documents.append(file.read())
return documents
```

### Adım 2: Bilgi Alma Modülünü Oluşturma

Bilgiyi almak için, belgelerinizden anlamlı parçaları çekebilecek bir sistem kurmalısınız. Genellikle, `FAISS` kütüphanesini kullanarak hızlı bir arama mekanizması geliştirmek en iyisidir. Aşağıdaki kod, belgelerinizi vektörlere dönüştürmenize ve FAISS’e eklemenize yardımcı olacaktır:

```python
from transformers import BertTokenizer, BertModel
import faiss
import numpy as np

def encodedocuments(documents):
tokenizer = BertTokenizer.frompretrained('bert-base-uncased')
model = BertModel.frompretrained('bert-base-uncased')

embeddings = []
for doc in documents:
inputs = tokenizer(doc, returntensors='pt', truncation=True, padding=True)
outputs = model(**inputs)
embeddings.append(outputs.lasthiddenstate.mean(dim=1).detach().numpy())

return np.vstack(embeddings)

def createindex(embeddings):
d = embeddings.shape[1]
index = faiss.IndexFlatL2(d) # L2 distance
index.add(embeddings)
return index
```

### Adım 3: Soru-Cevap Modülünü Geliştirme

Artık bilgi alma modülünüzü kurduğunuza göre, kullanıcıdan gelen sorgulara yanıt verecek bir metin oluşturma sistemine geçebilirsiniz. `transformers` kütüphanesinden bir model kullanarak sorguya uygun yanıtlar üretebilirsiniz:

```python
from transformers import pipeline

def generateanswer(question, index, documents):
# Sorguya en uygun belgeleri al
questionembedding = encodedocuments([question])
, indices = index.search(questionembedding, k=5) # En yakın 5 belge
retrieveddocs = [documents for i in indices[0]]

# Yanıt oluştur
generator = pipeline('text-generation', model='gpt2')
context = " ".join(retrieveddocs)
answer = generator(f"Context: {context}\nQuestion: {question}\nAnswer:", maxlength=100)

return answer[0]['generatedtext']
```

### Adım 4: Uygulamanızı Test Etme

Son olarak, sisteminizi test etmek için bir kullanıcı arayüzü veya basit bir komut satırı arayüzü oluşturabilirsiniz. Örneğin, kullanıcıdan bir soru alıp yanıtı döndüren basit bir döngü:

```python
def main(folderpath):
documents = readdocuments(folderpath)
embeddings = encodedocuments(documents)
index = createindex(embeddings)

while True:
question = input("Sormak istediğiniz soru nedir? (Çıkmak için 'exit' yazın): ")
if question.lower() == 'exit':
break
answer = generateanswer(question, index, documents)
print("Cevap:", answer)

# Ana fonksiyonu çağırın
main('belgelerinizin_pathi')
```

### Sonuç

Python ile RAG sistemi kurmak, kullanıcıların belgelerden bilgi almasını ve bu bilgileri kullanarak anlamlı yanıtlar oluşturmasını sağlayan etkili bir yöntemdir. Bu sistem, özellikle veri yoğun ve bilgiye erişimin kritik olduğu durumlarda son derece faydalıdır. İyi bir yapı ve doğru araçlarla, kendi RAG uygulamanızı kolayca geliştirebilirsiniz.
 

SanalOrdu'ya Hoş Geldiniz!

💻 Teknoloji dünyasına hoş geldiniz! 🤖 Yapay zekâ, yazılım, donanım, siber güvenlik, oyun ve daha fazlasını keşfedin. 🚀 Ücretsiz üye olun, konulara katılın, soru sorun ve bilgilerinizi paylaşın!

Ücretsiz Üye Ol

GÜNÜN SÖZÜ

🛡️ GÜNÜN SİBER GÜVENLİK & TEKNOLOJİ İPUCU

Veriler yükleniyor...

Geri