Spaces:
Running
Running
| import json | |
| from dataclasses import asdict | |
| from functools import lru_cache | |
| from pydantic_settings import BaseSettings | |
| class Settings(BaseSettings): | |
| """Configuration for the retrieval and generation system""" | |
| api_title: str = "NEXUS API" | |
| api_version: str = "0.1.0" | |
| chunk_size: int = 512 | |
| chunk_overlap: int = 256 | |
| embedding_model: str = "text-embedding-ada-002" | |
| rerank_model: str = "cross-encoder/ms-marco-MiniLM-L-6-v2" | |
| llm_model: str = "gpt-4o" | |
| openai_api_key: str | None = None | |
| use_colbert: bool = True | |
| colbert_model: str = "answerdotai/answerai-colbert-small-v1" | |
| colbert_top_k: int = 20 | |
| colbert_only: bool = False | |
| bm25_top_k: int = 20 | |
| final_top_k: int = 5 | |
| bm25_weight: float = 0.50 | |
| colbert_weight: float = 0.50 | |
| use_reranking: bool = True | |
| index_path: str = "./data/indexes/rag_index" | |
| colbert_index_path: str = "./data/indexes/colbert_index" | |
| markdown_directory: str = "./Markdown_files" | |
| def save(self, path: str): | |
| """Save config to JSON""" | |
| with open(path, "w") as f: | |
| json.dump(asdict(self), f, indent=2) | |
| def load(cls, path: str): | |
| """Load config from JSON""" | |
| with open(path) as f: | |
| return cls(**json.load(f)) | |
| def get_settings(): | |
| return Settings() | |