Skip to content

cena1382/Local_RAG

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

سیستم RAG فارسی 🤖

یک سیستم RAG (Retrieval Augmented Generation) کامل با رابط کاربری راست‌چین فارسی، مشابه ChatGPT.

ویژگی‌ها ✨

  • 🇮🇷 رابط کاربری کاملاً فارسی و راست‌چین
  • 📄 پشتیبانی از فرمت‌های PDF، TXT، DOCX و MD
  • 🤖 استفاده از مدل‌های Ollama (deepseek-r1:8b)
  • 🔤 امبدینگ با qwen3-embedding:0.6b
  • 💬 چت با حافظه جلسه
  • 🌙 تم تاریک و روشن
  • 📱 طراحی واکنش‌گرا
  • 🏗️ معماری شی‌گرا و ماژولار

ساختار پروژه 📁

rag-system/
├── backend/
│   ├── app/
│   │   ├── __init__.py
│   │   ├── main.py                 # نقطه ورود FastAPI
│   │   ├── config.py               # تنظیمات
│   │   ├── models/
│   │   │   ├── __init__.py
│   │   │   └── schemas.py          # مدل‌های Pydantic
│   │   ├── services/
│   │   │   ├── __init__.py
│   │   │   ├── document_loader.py  # بارگذاری اسناد
│   │   │   ├── embedding_service.py # سرویس امبدینگ
│   │   │   ├── vector_store.py     # پایگاه داده برداری
│   │   │   └── rag_service.py      # سرویس اصلی RAG
│   │   └── routers/
│   │       ├── __init__.py
│   │       └── api.py              # مسیرهای API
│   ├── uploads/                    # فایل‌های آپلود شده
│   ├── vector_db/                  # پایگاه داده برداری
│   ├── requirements.txt
│   └── .env.example
├── frontend/
│   ├── index.html
│   ├── css/
│   │   └── style.css
│   └── js/
│       └── app.js
└── README.md

پیش‌نیازها 📋

  1. Python 3.10+
  2. Ollama - نصب Ollama
  3. مدل‌های Ollama:
    ollama pull deepseek-r1:8b
    ollama pull qwen3-embedding:0.6b

نصب و راه‌اندازی 🚀

1. کلون کردن پروژه

unzip rag-system.zip
cd rag-system

2. ایجاد محیط مجازی

cd backend
python -m venv venv

# Linux/macOS
source venv/bin/activate

# Windows
venv\Scripts\activate

3. نصب وابستگی‌ها

pip install -r requirements.txt

4. تنظیم متغیرهای محیطی

cp .env.example .env
# فایل .env را با تنظیمات خود ویرایش کنید

5. اجرای سرور

cd backend
python -m app.main

سرور روی http://localhost:8000 قابل دسترسی خواهد بود.

API Endpoints 🔌

متد مسیر توضیحات
GET /api/health بررسی سلامت سیستم
POST /api/chat ارسال پیام و دریافت پاسخ
POST /api/upload آپلود سند جدید
GET /api/documents لیست اسناد
DELETE /api/documents/{filename} حذف سند
DELETE /api/documents حذف تمام اسناد

مثال ارسال پیام

curl -X POST http://localhost:8000/api/chat \
  -H "Content-Type: application/json" \
  -d '{"message": "درباره اسناد آپلود شده توضیح بده"}'

مثال آپلود فایل

curl -X POST http://localhost:8000/api/upload \
  -F "file=@document.pdf"

تنظیمات ⚙️

فایل .env برای تنظیمات:

# تنظیمات Ollama
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=deepseek-r1:8b
OLLAMA_EMBEDDING_MODEL=qwen3-embedding:0.6b

# تنظیمات RAG
CHUNK_SIZE=1000
CHUNK_OVERLAP=200
RETRIEVAL_K=4

# تنظیمات Chat
MAX_TOKENS=2048
TEMPERATURE=0.7

معماری شی‌گرا 🏗️

کلاس‌های اصلی:

  • DocumentLoaderService: بارگذاری و تقسیم اسناد
  • EmbeddingService: تولید بردارهای امبدینگ
  • VectorStoreService: مدیریت پایگاه داده برداری
  • RAGService: هماهنگی کلی سیستم RAG

الگوهای طراحی:

  • Abstract Factory: برای بارگذارهای مختلف اسناد
  • Singleton: برای تنظیمات و سرویس‌ها
  • Strategy: برای استراتژی‌های مختلف تقسیم متن

توسعه 🔧

اجرا در حالت توسعه

uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

مستندات API

  • Swagger UI: http://localhost:8000/docs
  • ReDoc: http://localhost:8000/redoc

تکنولوژی‌ها 🛠️

بک‌اند:

  • Python 3.10+
  • FastAPI
  • LangChain
  • ChromaDB
  • Ollama

فرانت‌اند:

  • HTML5
  • CSS3 (متغیرهای CSS، Grid، Flexbox)
  • JavaScript ES6+ (Vanilla)
  • فونت وزیرمتن

مشکلات رایج 🔍

Ollama در دسترس نیست

# بررسی سرویس Ollama
ollama list

# اجرای سرویس
ollama serve

مدل یافت نشد

# دانلود مدل‌ها
ollama pull deepseek-r1:8b
ollama pull qwen3-embedding:0.6b

خطای حافظه

# کاهش CHUNK_SIZE در .env
CHUNK_SIZE=500

مجوز 📜

MIT License

مشارکت 🤝

پول ریکوئست‌ها خوش آمدید! برای تغییرات بزرگ، لطفاً ابتدا یک issue باز کنید.

About

A local RAG with ollama

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors