first commit

This commit is contained in:
Beyhan Oğur
2026-04-26 22:00:50 +03:00
commit 9630a33ec1
22 changed files with 820 additions and 0 deletions

65
README.md Normal file
View File

@@ -0,0 +1,65 @@
# 🕷️ Web Scraping & RAG MCP Server Projesi
Bu proje, çeşitli web sitelerindeki (özellikle yazılım dokümantasyonlarındaki) verileri toplayan, temizleyerek Markdown formatına getiren ve ardından bu verileri lokal bir yapay zeka vektör veritabanına aktararak **Model Context Protocol (MCP)** üzerinden dışarıya bir araç (tool) olarak sunan kapsamlı bir sistemdir.
## 🌟 Sistemin Modülleri
Proje temel olarak 3 ana modülden oluşmaktadır:
### 1. Web Scraping Altyapısı (Kazıyıcılar)
- **`scraper/static_scraper.py`**: `requests` ve `BeautifulSoup` kullanarak statik ve çok hızlı veri çekmek içindir.
- **`scraper/dynamic_scraper.py`**: `Playwright` kullanarak JavaScript ile render olan (dinamik) sitelerden veri çekmek içindir.
- **`main.py`**: Bu temel kazıyıcıların örnek kullanımını ve sonuçların `data/*.csv` formatında kaydedilmesini içerir.
### 2. Docs to Markdown Crawler (Doküman Örümceği)
- **`scraper/docs_crawler.py`**: Belirli bir dokümantasyon adresini (örneğin Next.js veya Nuxt) başlangıç kabul ederek o site içindeki tüm bağlantıları (linkleri) gezen sistemdir.
- **Nasıl Çalışır?**: Girdiği sayfalardaki menü (`<nav>`), altlık (`<footer>`) gibi kısımları temizler. Geriye kalan saf metni ve kod bloklarını `markdownify` kütüphanesi ile tertemiz bir **.md** formatına çevirir.
- **Çalıştırma Betikleri**:
- `next.py` (Next.js docs için)
- `next_auth.py` (NextAuth docs için)
- `nuxt.py` (Nuxt 4 docs için)
- Çıktılar otomatik olarak `data/md_docs/<domain_adi>` klasörüne hiyerarşik bir şekilde yerleştirilir.
### 3. Lokal RAG ve MCP Server (Yapay Zeka Entegrasyonu)
Bu modül, indirilen saf Markdown dosyalarının Claude, ChatGPT gibi yapay zekalar tarafından aranabilmesini sağlar.
- **`rag_local/ingest.py`**:
- `data/md_docs/` dizinindeki tüm markdown dosyalarını okur.
- Metinleri yaklaşık 1000 karakterlik parçalara böler (chunking).
- Lokal yapay zeka modeli olan `all-MiniLM-L6-v2` (`sentence-transformers`) ile bu metinleri vektörleştirir.
- Vektörleri `chroma_db/` isimli, tamamen lokal çalışan ve kurulum gerektirmeyen klasör tabanlı bir veritabanına yazar.
- **`rag_local/mcp_server.py`**:
- FastMCP kullanarak bir Model Context Protocol sunucusu başlatır.
- Dışarıya **`search_documentation`** adında bir yetenek sunar.
- Yapay zeka bu yeteneği kullanarak bir kavram sorduğunda (Örn: "Next.js routing"), veritabanında semantik (anlamsal) arama yapılır ve en iyi eşleşen dokümanlar saniyeler içinde asistana iletilir.
---
## 🚀 Kurulum ve Çalıştırma Rehberi
### Adım 1: Yeni Doküman Kazımak (İsteğe Bağlı)
Eğer sisteme yeni dokümanlar eklemek isterseniz, örneğin `nuxt.py` dosyasını çalıştırın:
```bash
python nuxt.py
```
### Adım 2: Vektör Veritabanını Güncellemek (Ingest)
Markdown dosyalarınız indikçe veya yenilendikçe bu dosyaları yapay zekanın anlayabileceği vektör formatına çevirmeniz gerekir:
```bash
# İlk çalıştırmada biraz sürebilir, çünkü parçaları tek tek vektöre çevirir.
python rag_local/ingest.py
```
**Not:** İşlem bittiğinde proje ana dizininde `chroma_db` isimli bir klasör oluşur. Bu sizin yapay zeka "hafızanızdır".
### Adım 3: MCP Server'ı Ayağa Kaldırmak
Vektörleştirme bittikten sonra bu veriyi Claude Masaüstü (veya uyumlu MCP istemcileri) üzerinden kullanmak için sunucuyu başlatın:
```bash
python rag_local/mcp_server.py
```
**Not:** Claude Desktop içerisindeki `mcp.json` konfigürasyonuna bu sunucunun dosya yolunu ekleyerek, Claude'un direkt olarak bu dokümanlar üzerinde RAG (Arama) yapmasını sağlayabilirsiniz.
---
## 🛠️ Gelecek Geliştirmeler (Roadmap)
- Vektör aramasını lokal ChromaDB yerine `.env` dosyasında yer alan **Postgres (`pgvector`)** sistemine taşıma.
- Sorulan soruların anlık cevaplanması için **Redis** cache (önbellek) mekanizması ekleme.
- Yüksek performans için MCP Server uygulamasını **Go (Golang)** dili ile yeniden yazma.