# 📘 מדריך: בניית עוזר משפטי בעברית (RAG מקומי)

## חלק 1 — התקנה והכנה

### יצירת מבנה פרויקט ותיקיית `docs/`

mkdir legal-assistant && cd legal-assistant
mkdir docs

# הנח כאן את כל קבצי ה-PDF / DOCX / TXT שלך
"`

### התקנת Ollama ומשיכת המודלים

ollama pull qwen2.5:7b-instruct
ollama pull bge-m3

### הקמת סביבת Python והתקנות

python -m venv .venv
# Windows:
.venv\Scripts\activate
# Linux/macOS:
source .venv/bin/activate

pip install fastapi uvicorn pydantic==2.* numpy tqdm requests python-docx pypdf

 

### requirements.txt

 

fastapi
uvicorn
pydantic==2.*
numpy
tqdm
requests
python-docx
pypdf

 

## חלק 2 — שרת FastAPI (Python RAG)

קובץ `server.py`

 

# server.py
# -*- coding: utf-8 -*-

שרת RAG מקומי בעברית: אינדוקס docs/ ושאילתות משפטיות.

 

from typing import List, Dict, Any
from fastapi import FastAPI
from pydantic import BaseModel
import os, re, json, pickle, uuid
import numpy as np
from tqdm import tqdm
import requests

DOCS_DIR = os.path.abspath("./docs")
INDEX_PATH = os.path.abspath("./index.pkl")

CHAT_MODEL = "qwen2.5:7b-instruct"
EMBED_MODEL = "bge-m3"

app = FastAPI(title="RAG משפטי בעברית - מקומי")

def ollama_embed(texts: List[str], model: str = EMBED_MODEL) -> np.ndarray:
url = "http://localhost:11434/api/embeddings"
vectors = []
for t in texts:
payload = {"model": model, "prompt": t}
r = requests.post(url, json=payload, timeout=120)
r.raise_for_status()
emb = r.json().get("embedding")
vectors.append(emb)
return np.array(vectors, dtype=np.float32)

 

### הרצת השרת

uvicorn server:app --reload --port 8000

 

### אינדוקס ראשוני

curl -X POST http://127.0.0.1:8000/reindex -H "Content-Type: application/json" -d "{}"

 

 

## חלק 3 — ממשק PHP + מודל מותאם ב־Ollama

### קובץ `index.php`

 

$ch = curl_init('http://127.0.0.1:8000/ask');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json; charset=utf-8'],
CURLOPT_POSTFIELDS => $payload,
CURLOPT_TIMEOUT => 120,
]);
$res = curl_exec($ch);
if ($res === false) {
return ['ok' => false, 'error' => 'שגיאת תקשורת עם השרת: ' . curl_error($ch)];
}
curl_close($ch);
$data = json_decode($res, true);
return is_array($data) ? $data : ['ok' => false, 'error' => 'תגובה לא תקינה.'];
}
?>

 

### Modelfile (מודל מותאם)

FROM qwen2.5:7b-instruct

SYSTEM """
את/ה עוזר/ת משפטי/ת בעברית. ענה/י בעברית תקנית, ברור וענייני.
"""

PARAMETER temperature 0.2
PARAMETER num_ctx 4096

### יצירת המודל

ollama create pablo-guides-legal-1.0 -f Modelfile

### עדכון server.py

CHAT_MODEL = "pablo-guides-legal-1.0"

 

 

### צ’ק־ליסט סופי

`

ollama pull qwen2.5:7b-instruct
ollama pull bge-m3
ollama create pablo-guides-legal-1.0 -f Modelfile
uvicorn server:app --reload --port 8000
curl -X POST http://127.0.0.1:8000/reindex -H "Content-Type: application/json" -d "{}"

 

 

📊 נתוני צפיות

סה"כ צפיות: 16

מבקרים ייחודיים: 16

  • 🧍 172.70.200.174 (Pablo Guides - עוזר משפטי בעברית (RAG) ללפטופ: מדריך מלא + יצירת מודל pablo-guides-legal-1.0Israel)
  • 🧍 172.71.126.41 (Pablo Guides - עוזר משפטי בעברית (RAG) ללפטופ: מדריך מלא + יצירת מודל pablo-guides-legal-1.0France)
  • 🧍 172.71.122.232 (Pablo Guides - עוזר משפטי בעברית (RAG) ללפטופ: מדריך מלא + יצירת מודל pablo-guides-legal-1.0France)
  • 🧍 104.23.221.32 (Pablo Guides - עוזר משפטי בעברית (RAG) ללפטופ: מדריך מלא + יצירת מודל pablo-guides-legal-1.0Sweden)
  • 🧍 172.71.135.74 (Pablo Guides - עוזר משפטי בעברית (RAG) ללפטופ: מדריך מלא + יצירת מודל pablo-guides-legal-1.0France)
  • 🧍 172.70.200.175 (Pablo Guides - עוזר משפטי בעברית (RAG) ללפטופ: מדריך מלא + יצירת מודל pablo-guides-legal-1.0Israel)
  • 🧍 172.71.222.125 (Pablo Guides - עוזר משפטי בעברית (RAG) ללפטופ: מדריך מלא + יצירת מודל pablo-guides-legal-1.0United States)
  • 🧍 162.158.41.65 (Pablo Guides - עוזר משפטי בעברית (RAG) ללפטופ: מדריך מלא + יצירת מודל pablo-guides-legal-1.0United States)
  • 🧍 108.162.245.122 (Pablo Guides - עוזר משפטי בעברית (RAG) ללפטופ: מדריך מלא + יצירת מודל pablo-guides-legal-1.0United States)
  • 🧍 172.71.102.196 (Pablo Guides - עוזר משפטי בעברית (RAG) ללפטופ: מדריך מלא + יצירת מודל pablo-guides-legal-1.0Netherlands)
  • 🧍 104.23.219.58 (Pablo Guides - עוזר משפטי בעברית (RAG) ללפטופ: מדריך מלא + יצירת מודל pablo-guides-legal-1.0Germany)
  • 🧍 172.70.111.56 (Pablo Guides - עוזר משפטי בעברית (RAG) ללפטופ: מדריך מלא + יצירת מודל pablo-guides-legal-1.0United States)
  • 🧍 172.68.103.100 (Pablo Guides - עוזר משפטי בעברית (RAG) ללפטופ: מדריך מלא + יצירת מודל pablo-guides-legal-1.0Portugal)
  • 🧍 162.158.111.85 (Pablo Guides - עוזר משפטי בעברית (RAG) ללפטופ: מדריך מלא + יצירת מודל pablo-guides-legal-1.0Germany)
  • 🧍 172.71.148.56 (Pablo Guides - עוזר משפטי בעברית (RAG) ללפטופ: מדריך מלא + יצירת מודל pablo-guides-legal-1.0Germany)
  • 🧍 172.71.144.36 (Pablo Guides - עוזר משפטי בעברית (RAG) ללפטופ: מדריך מלא + יצירת מודל pablo-guides-legal-1.0Germany)
Pablo Guides