Spaces:
Sleeping
Sleeping
File size: 4,267 Bytes
e8051be |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# RAG Configuration File
# Update these settings as needed
import os
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()
# Common LLM Settings
MAX_TOKENS = 1200
TEMPERATURE = 0.4
# OCR Settings
OCR_SPACE_API_KEY = os.getenv("OCR_SPACE_API_KEY", "")
# OpenAI Settings
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY", "")
OPENAI_MODEL = "gpt-3.5-turbo"
# Gemini Settings
GEMINI_API_KEY = os.getenv("GEMINI_API_KEY", "")
GEMINI_MODEL = "gemini-1.5-flash"
# Groq Settings
GROQ_API_KEY = os.getenv("GROQ_API_KEY")
GROQ_MODEL = os.getenv("GROQ_MODEL", "llama3-70b-8192")
GROQ_API_KEY_LITE = os.getenv("GROQ_API_KEY_LITE")
GROQ_MODEL_LITE = "llama3-8b-8192"
# API Authentication
BEARER_TOKEN = os.getenv("BEARER_TOKEN", "c6cee5b5046310e401632a7effe9c684d071a9ef5ce09b96c9ec5c3ebd13085e")
# Chunking (TOKEN-BASED)
CHUNK_SIZE = 1600 #
CHUNK_OVERLAP = 200
# Retrieval Settings
TOP_K = 12
SCORE_THRESHOLD = 0.3
RERANK_TOP_K = 9
BM25_WEIGHT = 0.3
SEMANTIC_WEIGHT = 0.7
# Advanced RAG Settings
ENABLE_RERANKING = True
ENABLE_HYBRID_SEARCH = True
ENABLE_QUERY_EXPANSION = True
RERANKER_MODEL = "cross-encoder/ms-marco-MiniLM-L-6-v2"
QUERY_EXPANSION_COUNT = 3
MAX_CONTEXT_LENGTH = 15000
USE_TOTAL_BUDGET_APPROACH = True
# Embedding Settings
EMBEDDING_MODEL = "BAAI/bge-large-en"
BATCH_SIZE = 16
# Paths
OUTPUT_DIR = os.getenv("RAG_EMBEDDINGS_PATH", "./RAG/rag_embeddings")
# API Settings
API_HOST = "0.0.0.0"
API_PORT = 8000
API_RELOAD = True
# Multi-LLM failover system
sequence = ["primary", "secondary", "ternary", "quaternary", "quinary", "senary", "septenary", "octonary", "nonary", "denary"]
def get_provider_configs():
"""
Get configurations for all provider instances with failover support.
Supports multiple instances of each provider type for reliability.
"""
configs = {
"groq": [],
"gemini": [],
"openai": []
}
# Groq configurations with multiple API keys for failover
DEFAULT_GROQ_MODEL = "qwen/qwen3-32b"
configs["groq"] = [{
"name": sequence[i-1],
"api_key": os.getenv(f"GROQ_API_KEY_{i}"),
"model": os.getenv(f"GROQ_MODEL_{i}", DEFAULT_GROQ_MODEL)} for i in range(1, 10) if os.getenv(f"GROQ_API_KEY_{i}", "")
]
# Add main GROQ key as primary
if os.getenv("GROQ_API_KEY"):
configs["groq"].insert(0, {
"name": "main",
"api_key": os.getenv("GROQ_API_KEY"),
"model": DEFAULT_GROQ_MODEL
})
# Gemini configurations with multiple API keys for failover
DEFAULT_GEMINI_MODEL = "gemini-1.5-flash"
configs["gemini"] = [{
"name": sequence[i-1],
"api_key": os.getenv(f"GEMINI_API_KEY_{i}"),
"model": os.getenv(f"GEMINI_MODEL_{i}", DEFAULT_GEMINI_MODEL)
} for i in range(1, 10) if os.getenv(f"GEMINI_API_KEY_{i}", "")
]
# Add main GEMINI key as primary
if os.getenv("GEMINI_API_KEY"):
configs["gemini"].insert(0, {
"name": "main",
"api_key": os.getenv("GEMINI_API_KEY"),
"model": DEFAULT_GEMINI_MODEL
})
# OpenAI configurations with multiple API keys for failover
DEFAULT_OPENAI_MODEL = "gpt-4o-mini"
configs["openai"] = [{
"name": sequence[i-1],
"api_key": os.getenv(f"OPENAI_API_KEY_{i}"),
"model": os.getenv(f"OPENAI_MODEL_{i}", DEFAULT_OPENAI_MODEL)
} for i in range(1, 10) if os.getenv(f"OPENAI_API_KEY_{i}", "")
]
# Add main OPENAI key as primary
if os.getenv("OPENAI_API_KEY"):
configs["openai"].insert(0, {
"name": "main",
"api_key": os.getenv("OPENAI_API_KEY"),
"model": DEFAULT_OPENAI_MODEL
})
return configs
# Specialized API keys for different tasks
GROQ_API_KEY_TABULAR = os.getenv("GROQ_API_KEY_TABULAR", GROQ_API_KEY)
GEMINI_API_KEY_IMAGE = os.getenv("GEMINI_API_KEY_IMAGE", GEMINI_API_KEY)
GEMINI_API_KEY_MULTILINGUAL = os.getenv("GEMINI_API_KEY_MULTILINGUAL", GEMINI_API_KEY)
# Validation (optional - comment out for production)
# assert OPENAI_API_KEY, "OPENAI KEY NOT SET"
# assert GEMINI_API_KEY, "GEMINI KEY NOT SET"
# assert GROQ_API_KEY, "GROQ KEY NOT SET"
|