rag-python-rag / config.py
viktor-hirenko
fix: use microsoft/Phi-3-mini-4k-instruct - officially supported free model
ea6f355
Raw
History Blame Contribute Delete
2.36 kB
"""
Configuration file for RAG System
Contains all settings and parameters for the document processing pipeline
"""
import os
from pathlib import Path
from typing import List
# Project Paths
PROJECT_ROOT = Path(__file__).parent
DOCUMENTS_DIR = PROJECT_ROOT / "documents"
PROCESSED_DOCS_DIR = PROJECT_ROOT / "processed_docs"
CHROMA_DB_DIR = PROJECT_ROOT / "chroma_db"
# Ensure directories exist
DOCUMENTS_DIR.mkdir(exist_ok=True)
PROCESSED_DOCS_DIR.mkdir(exist_ok=True)
CHROMA_DB_DIR.mkdir(exist_ok=True)
# Document Processing Settings
SUPPORTED_FORMATS = [".pdf", ".docx", ".txt", ".md"]
# Text Splitting Configuration
TEXT_SPLITTER_CONFIG = {
"chunk_size": 1000,
"chunk_overlap": 200,
"separators": ["\n\n", "\n", ". ", " ", ""],
"keep_separator": True,
}
# Embedding Model Configuration
EMBEDDING_MODEL = "all-MiniLM-L6-v2"
EMBEDDING_DIMENSION = 384
# Vector Database Configuration
CHROMA_COLLECTION_NAME = "document_embeddings"
CHROMA_DISTANCE_METRIC = "cosine"
# LLM Configuration - Hugging Face Inference API
# Using Microsoft Phi-3 - officially supported on free tier
HF_MODEL = "microsoft/Phi-3-mini-4k-instruct" # Officially supported, free, reliable
HF_TOKEN = os.getenv("HF_TOKEN", "")
# Retrieval Configuration
DEFAULT_N_RESULTS = 5
SIMILARITY_THRESHOLD = 0.5
# Prompt Templates
SYSTEM_PROMPT = """You are a helpful assistant. Answer the question based on the context provided.
Be concise and accurate. If you don't know the answer based on the context, say so."""
PROMPT_TEMPLATE = """Context: {context}
Question: {question}
Answer:"""
# Gradio Interface Configuration
GRADIO_CONFIG = {
"title": "Intelligent Document Q&A System",
"description": "Ask questions about your documents and get instant answers with source citations.",
"examples": [
"How do if-else statements work in Python?",
"What are the different types of loops in Python?",
"How do you handle errors in Python?",
"Explain Python functions with examples",
"What is object-oriented programming in Python?",
],
"theme": "default",
"share": True, # Creates public link for 72 hours # Set to True to create a public link
}
# Test Document URL (Think Python book)
TEST_DOCUMENT_URL = "https://greenteapress.com/thinkpython/thinkpython.pdf"
TEST_DOCUMENT_NAME = "think_python_guide.pdf"