first commit
This commit is contained in:
65
README.md
Normal file
65
README.md
Normal 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.
|
||||
Reference in New Issue
Block a user