پرش به محتویات

شروع کار

نصب

pip install persian-rag

برای هر قابلیت، افزونه مربوط به آن را اضافه کنید:

افزونه قابلیت
sentence-transformers کلاس SentenceTransformerEmbedder
rerank کلاس CrossEncoderReranker
faiss کلاس FaissVectorStore
qdrant کلاس QdrantVectorStore
pgvector کلاس PgVectorStore
pdf خواندن PDF با pypdf
docx خواندن Word با python-docx
server برنامه FastAPI و فرمان persian-rag serve
all همه موارد بالا
docs ابزار MkDocs برای ساختن همین مستندات
pip install "persian-rag[pdf,docx,rerank,server]"

پایتون ۳٫۱۰ یا جدیدتر لازم است.

نخستین سامانه

from persian_rag import HashingEmbedder, RAGPipeline, build_retriever

texts = [
    "حافظ در شهر شیراز زاده شد و دیوان او مشهور است.",
    "فوتبال ورزشی گروهی با دو تیم است.",
]
retriever = build_retriever(texts, HashingEmbedder())


def llm(prompt: str) -> str:
    return "شیراز"  # call your model here


answer = RAGPipeline(retriever, llm).query("حافظ در کدام شهر زاده شد؟", k=2)
print(answer.answer)

کلاس HashingEmbedder قطعی است و بدون اینترنت کار می کند، پس برای آزمون ها عالی است، اما معنا را درک نمی کند. برای داده واقعی یکی از این دو را به کار ببرید:

from persian_rag import OpenAICompatibleEmbedder, SentenceTransformerEmbedder

local = SentenceTransformerEmbedder("sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2")
remote = OpenAICompatibleEmbedder(model="text-embedding-3-small")

نسخه دوم کلید را از متغیر محیطی OPENAI_API_KEY می خواند.

از روی فایل ها

from persian_rag import load_documents

documents = load_documents("./library")
retriever = build_retriever(
    [doc.text for doc in documents],
    embedder,
    document_ids=[doc.id for doc in documents],
    metadatas=[doc.metadata for doc in documents],
)

یا از خط فرمان:

persian-rag ingest ./library --index .persian-rag
persian-rag query "حافظ اهل کجا بود؟" --index .persian-rag

فراخوانی مدل زبانی

تابع make_openai_llm برای هر سرویس گفت و گوی سازگار با OpenAI یک تابع قابل فراخوانی می سازد:

from persian_rag import make_openai_llm

llm = make_openai_llm(model="gpt-4o-mini", api_key="...")

قالب پیش فرض پرامپت فارسی است (DEFAULT_PROMPT_FA). برای انگلیسی prompt_template=DEFAULT_PROMPT_EN را بدهید. قالب دلخواه باید {context} و {question} را داشته باشد.