خطّ RAG كامل يشتغل بلا إنترنت، مع فهرسة واستشهاد بالمصدر.
الكود المصدري
استعراض الأكواد البرمجية
تصفّح ملفات المشروع، انسخ الكود، أو شغّله محلياً باتباع التعليمات.
الكود كامل وقابل للتشغيل
from pathlib import Path
from langchain.text_splitter import RecursiveCharacterTextSplitter
def load(folder: str):
docs = []
for path in Path(folder).rglob('*.md'):
docs.append(path.read_text(encoding='utf-8'))
return docs
def chunk(docs, size=800, overlap=120):
splitter = RecursiveCharacterTextSplitter(
chunk_size=size, chunk_overlap=overlap
)
return splitter.create_documents(docs)
def ask(question: str, k: int = 5):
hits = index.similarity_search(question, k=k)
context = 'nn'.join(h.page_content for h in hits)
return llm.invoke(PROMPT.format(context=context, q=question)), hits
langchain>=0.2
chromadb>=0.5
sentence-transformers
تشغيل المشروع محلياً
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python ingest.py ./docs
python ask.py