| """Application constants and enums""" |
|
|
| from enum import Enum |
|
|
|
|
| class VectorDBType(str, Enum): |
| """Supported vector database types""" |
| CHROMA = "chroma" |
| PINECONE = "pinecone" |
| WEAVIATE = "weaviate" |
| QDRANT = "qdrant" |
|
|
|
|
| class EmbeddingProvider(str, Enum): |
| """Supported embedding providers""" |
| HUGGINGFACE = "huggingface" |
| GROQ = "groq" |
|
|
|
|
| class TokenizerType(str, Enum): |
| """Supported tokenizer types""" |
| TIKTOKEN = "tiktoken" |
| HUGGINGFACE = "huggingface" |
|
|
|
|
| class DocumentType(str, Enum): |
| """Supported document types""" |
| PDF = "pdf" |
| CSV = "csv" |
| TEXT = "text" |
|
|
|
|
| class GroqModel(str, Enum): |
| """Available Groq models""" |
| LLAMA_31_8B = "llama-3.1-8b-instant" |
| LLAMA_33_70B = "llama-3.3-70b-versatile" |
| GPT_OSS_120B = "openai/gpt-oss-120b" |
| GPT_OSS_20B = "openai/gpt-oss-20b" |
|
|
|
|
| GROQ_MODELS = [ |
| {"id": "llama-3.1-8b-instant", "name": "Llama 3.1 8B (Fast)", "context_window": 8000}, |
| {"id": "llama-3.3-70b-versatile", "name": "Llama 3.3 70B (Versatile)", "context_window": 8000}, |
| {"id": "openai/gpt-oss-120b", "name": "OpenAI GPT-OSS 120B", "context_window": 4000}, |
| {"id": "openai/gpt-oss-20b", "name": "OpenAI GPT-OSS 20B", "context_window": 4000}, |
| ] |
|
|
| EMBEDDING_MODELS = [ |
| {"id": "all-MiniLM-L6-v2", "name": "MiniLM (Small, Fast)", "dimension": 384}, |
| {"id": "all-mpnet-base-v2", "name": "MPNet (Large, Accurate)", "dimension": 768}, |
| ] |
|
|
| VECTOR_DBS = [ |
| {"id": "chroma", "name": "Chroma (Local)", "type": "local"}, |
| {"id": "pinecone", "name": "Pinecone (Cloud)", "type": "cloud"}, |
| {"id": "weaviate", "name": "Weaviate (Self-hosted)", "type": "hybrid"}, |
| {"id": "qdrant", "name": "Qdrant (Self-hosted)", "type": "local"}, |
| ] |
|
|
| TOKENIZERS = [ |
| {"id": "tiktoken", "name": "TikToken (OpenAI Standard)"}, |
| {"id": "huggingface", "name": "HuggingFace (Model-specific)"}, |
| ] |
|
|
| |
| DEFAULT_CHUNK_SIZE = 512 |
| DEFAULT_CHUNK_OVERLAP = 50 |
| DEFAULT_RETRIEVAL_TOP_K = 5 |
| DEFAULT_GENERATION_TEMPERATURE = 0.7 |
|
|
| |
| MAX_FILE_SIZE = 52428800 |
| ALLOWED_EXTENSIONS = {".pdf", ".csv", ".txt"} |
|
|
| |
| RAG_STEPS = [ |
| "document_retrieval", |
| "context_assembly", |
| "prompt_construction", |
| "llm_generation", |
| "post_processing", |
| ] |
|
|
| |
| class RAGMode(str, Enum): |
| """RAG operation modes""" |
| SIMPLE = "simple" |
| AGENTIC = "agentic" |
| GRAPH = "graph" |
|
|
|
|
| RAG_MODES = [ |
| {"id": "simple", "name": "Simple RAG", "description": "Direct retrieval and generation", "icon": "📄"}, |
| {"id": "agentic", "name": "Agentic RAG", "description": "Multi-step reasoning with tools", "icon": "🤖"}, |
| {"id": "graph", "name": "Graph RAG", "description": "Knowledge graph-based retrieval", "icon": "🕸️"}, |
| ] |
|
|