| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- # 导入配置解析库
- import configparser
- # 导入路径操作库
- import os
- class Config:
- # 初始化配置,加载 config.ini 文件
- def __init__(self, config_file=None):
- project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
- if config_file is None:
- config_file = os.path.join(project_root, "config.ini")
- # 创建配置解析器
- self.config = configparser.ConfigParser()
- # 读取配置文件
- self.config.read(config_file) # windows包gbk错误,增加encoding=utf-8
- # MySQL 配置
- # MySQL 主机地址
- # 获取section 是mysql host变量失败返回localhost
- self.MYSQL_HOST = "localhost"
- # MySQL 用户名
- self.MYSQL_USER = self.config.get('mysql', 'user', fallback='root')
- # MySQL 密码
- self.MYSQL_PASSWORD = self.config.get('mysql', 'password', fallback='')
- # MySQL 数据库名
- self.MYSQL_DATABASE = self.config.get('mysql', 'database', fallback='enterprise_kb')
- # Redis 配置
- # Redis 主机地址
- self.REDIS_HOST = self.config.get('redis', 'host', fallback='localhost')
- # Redis 端口
- self.REDIS_PORT = self.config.getint('redis', 'port', fallback=6379)
- # Redis 密码
- self.REDIS_PASSWORD = self.config.get('redis', 'password', fallback='')
- # Redis 数据库编号
- self.REDIS_DB = self.config.getint('redis', 'db', fallback=0)
- # Milvus 配置
- # Milvus 主机地址
- self.MILVUS_HOST = self.config.get('milvus', 'host', fallback='localhost')
- # Milvus 端口
- self.MILVUS_PORT = self.config.get('milvus', 'port', fallback='19530')
- # Milvus 数据库名
- self.MILVUS_DATABASE_NAME = self.config.get('milvus', 'database_name', fallback='enterprise_kb')
- # Milvus 集合名
- self.MILVUS_COLLECTION_NAME = self.config.get('milvus', 'collection_name', fallback='enterprise_kb_rag_final')
- # LLM 配置
- # LLM 模型名
- self.LLM_MODEL = self.config.get('llm', 'model', fallback='qwen-plus')
- # DashScope API 密钥
- self.DASHSCOPE_API_KEY = os.getenv("API_KEY") or self.config.get('llm', 'dashscope_api_key', fallback=None)
- # DashScope API 地址
- self.DASHSCOPE_BASE_URL = self.config.get('llm', 'dashscope_base_url',
- fallback='https://dashscope.aliyuncs.com/compatible-mode/v1')
- # 检索参数
- # 父块大小
- self.PARENT_CHUNK_SIZE = self.config.getint('retrieval', 'parent_chunk_size', fallback=1200)
- # 子块大小
- self.CHILD_CHUNK_SIZE = self.config.getint('retrieval', 'child_chunk_size', fallback=300)
- # 块重叠大小
- self.CHUNK_OVERLAP = self.config.getint('retrieval', 'chunk_overlap', fallback=50)
- # 检索返回数量
- self.RETRIEVAL_K = self.config.getint('retrieval', 'retrieval_k', fallback=5)
- # 最终候选数量
- self.CANDIDATE_M = self.config.getint('retrieval', 'candidate_m', fallback=2)
- # 应用配置
- # 有效来源列表
- self.VALID_SOURCES = eval(
- self.config.get('app', 'valid_sources', fallback='["hr", "it", "finance", "legal", "product", "ops", "security"]'))
- # 客服电话
- self.CUSTOMER_SERVICE_PHONE = self.config.get('app', 'customer_service_phone', fallback='12345678')
- # 日志文件路径
- self.LOG_FILE = self.config.get('logger', 'log_file', fallback='logs/app.log')
- # model path
- # self.bge_m3 = os.path.join(project_root, "rag_qa/models/bge-m3")
- # self.bge_reranker = os.path.join(project_root, "rag_qa/models/bge-reranker-large")
- self.nlp_bert_doc_seg = os.path.join(project_root, "rag_qa/models/nlp_bert_document-segmentation_chinese-base")
- self.bert_intent_cls = os.path.join(project_root, "rag_qa/core/bert_query_classifier")
- if __name__ == '__main__':
- conf = Config()
- print(conf.LOG_FILE)
|