gitrag-free-mcp / packages /core /src /constants.py
jacklalane's picture
Tune hybrid retrieval weights and rerank instruction
4971dc1 verified
Raw
History Blame Contribute Delete
2.05 kB
"""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"}