| name | arabic-rag |
| description | بحث دلالي عربي — ابحث في القرآن والأحاديث والنصوص العربية بالمعنى مو بالكلمة باستخدام AraGemma embeddings |
| version | 1.0.0 |
| author | Mousa Abu Mazin |
| license | MIT |
| platforms | ["linux","macos"] |
| prerequisites | {"commands":["python3"],"env_vars":[]} |
| metadata | {"hermes":{"tags":["arabic","rag","semantic-search","quran","hadith","embeddings","nlp"]}} |
بحث دلالي عربي (Arabic RAG)
بحث بالمعنى في النصوص العربية باستخدام embeddings — أدق من البحث بالكلمة. استخدم عندما البحث النصي البسيط ما يكفي.
متى تستخدم
- المستخدم يبحث عن آية بالمعنى مو بالكلمة الدقيقة
- يبحث عن أحاديث متعلقة بموضوع معين
- يريد بحث دلالي في مستندات عربية
الإعداد
تثبيت المكتبات
pip3 install sentence-transformers faiss-cpu
تحميل نموذج الـ embeddings
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("Omartificial-Intelligence-Space/AraGemma-Embedding-300m")
البحث في القرآن بالمعنى
import json
import numpy as np
import faiss
with open("quran_ayahs.json") as f:
ayahs = json.load(f)
texts = [a["text"] for a in ayahs]
embeddings = model.encode(texts, show_progress_bar=True)
dimension = embeddings.shape[1]
index = faiss.IndexFlatIP(dimension)
faiss.normalize_L2(embeddings)
index.add(embeddings)
query = "الصبر على البلاء"
query_embedding = model.encode([query])
faiss.normalize_L2(query_embedding)
distances, indices = index.search(query_embedding, k=5)
for i, idx in enumerate(indices[0]):
print(f"{i+1}. [{ayahs[idx]['surah']}:{ayahs[idx]['ayah']}] {texts[idx][:100]}...")
print(f" التشابه: {distances[0][i]:.3f}")
البحث في الأحاديث بالمعنى
البحث في مستندات المستخدم
documents = ["doc1 text...", "doc2 text...", ...]
from sentence_transformers import SentenceTransformer
chunks = []
for doc in documents:
words = doc.split()
for i in range(0, len(words), 400):
chunk = " ".join(words[max(0, i-100):i+400])
chunks.append(chunk)
القواعد
- البحث الدلالي مكمّل للبحث النصي — استخدم كليهما
- للقرآن: اعرض الآية كاملة مع رقم السورة والآية
- للأحاديث: اعرض مع الكتاب والراوي
- نبّه أن النتائج بحسب التشابه الدلالي وقد لا تكون مطابقة 100%