"""Centralized project constants.""" import os # Embedding constants EMBEDDING_MODEL_ID = os.getenv("EMBEDDING_MODEL", "Qwen/Qwen3-Embedding-0.6B") EMBEDDING_DIMENSIONS = int(os.getenv("EMBEDDING_DIMENSIONS", 1_024)) EMBEDDING_BATCH_SIZE = int(os.getenv("EMBEDDING_BATCH_SIZE", 64)) EMBEDDING_BACKEND = os.getenv("EMBEDDING_BACKEND", "openvino") SOFT_TIMEOUT_SECONDS = int(os.getenv("SOFT_TIMEOUT", 0)) EXIT_CODE_TIMEOUT = 75 # Retriever constants RETRIEVAL_QUERY_PREFIX = os.getenv("RETRIEVAL_PREFIX", "Instruct: Given a web search query, retrieve relevant passages that answer the query\nQuery:") DEFAULT_RERANKER_MODEL = os.getenv("RERANKER_MODEL", "jinaai/jina-reranker-v3") DEFAULT_RERANK_TASK_INSTRUCTION = os.getenv("RERANK_INSTRUCTION", "Given a code search query, rank passages that directly implement the requested behavior above broader references, declarations, or surrounding context") DEFAULT_ATTN_IMPLEMENTATION = "sdpa" DEFAULT_TOP_K = int(os.getenv("topk", 10)) DEFAULT_INITIAL_RETRIEVAL_LIMIT = DEFAULT_TOP_K * 10 MAX_INITIAL_RETRIEVAL_LIMIT = int(os.getenv("max_initial_limit", 200)) RERANK_BATCH_SIZE = int(os.getenv("rerank_batch_size", 8)) # Persistence constants DEFAULT_TABLE_NAME = "chunks" DEFAULT_FTS_TABLE_SUFFIX = "_fts" HYBRID_SEARCH_VECTOR_WEIGHT = 0.7 HYBRID_SEARCH_KEYWORD_WEIGHT = 0.3 POSTGRES_FTS_LANGUAGE = "english" DEFAULT_DB_PROVIDER = "libsql" # Chunker constants SOFT_MAX_BYTES = 1024 HARD_CAP_BYTES = 2048 NEWLINE_WINDOW = 2_048 FALLBACK_OVERLAP_RATIO = 0.10 # Document Chunker constants DOC_SOFT_MAX_BYTES = SOFT_MAX_BYTES * 2 # 2048 — doc soft cap (4 bytes/token for prose) DOC_HARD_CAP_BYTES = SOFT_MAX_BYTES * 4 # 4096 — doc hard cap DOC_OVERLAP_BYTES = 256 DOC_MIN_CHUNK_BYTES = 512 DOC_GRAMMAR_VERSION = "doc-chunker-v1" DOC_MARKDOWN_EXTS = {"md", "markdown", "rst"} DOC_JSON_EXTS = {"json", "jsonl", "ndjson"} DOC_YAML_EXTS = {"yaml", "yml"} DOC_TOML_EXTS = {"toml"} DOC_CSV_EXTS = {"csv"} DOC_TSV_EXTS = {"tsv"}