config.py 4.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. # 导入配置解析库
  2. import configparser
  3. # 导入路径操作库
  4. import os
  5. class Config:
  6. # 初始化配置,加载 config.ini 文件
  7. def __init__(self, config_file=None):
  8. project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
  9. if config_file is None:
  10. config_file = os.path.join(project_root, "config.ini")
  11. # 创建配置解析器
  12. self.config = configparser.ConfigParser()
  13. # 读取配置文件
  14. self.config.read(config_file) # windows包gbk错误,增加encoding=utf-8
  15. # MySQL 配置
  16. # MySQL 主机地址
  17. # 获取section 是mysql host变量失败返回localhost
  18. self.MYSQL_HOST = self.config.get('mysql', 'host', fallback='localhost')
  19. # MySQL 用户名
  20. self.MYSQL_USER = self.config.get('mysql', 'user', fallback='root')
  21. # MySQL 密码
  22. self.MYSQL_PASSWORD = self.config.get('mysql', 'password', fallback='')
  23. # MySQL 数据库名
  24. self.MYSQL_DATABASE = self.config.get('mysql', 'database', fallback='enterprise_kb')
  25. # Redis 配置
  26. # Redis 主机地址
  27. self.REDIS_HOST = self.config.get('redis', 'host', fallback='localhost')
  28. # Redis 端口
  29. self.REDIS_PORT = self.config.getint('redis', 'port', fallback=6379)
  30. # Redis 密码
  31. self.REDIS_PASSWORD = self.config.get('redis', 'password', fallback='')
  32. # Redis 数据库编号
  33. self.REDIS_DB = self.config.getint('redis', 'db', fallback=0)
  34. # Milvus 配置
  35. # Milvus 主机地址
  36. self.MILVUS_HOST = self.config.get('milvus', 'host', fallback='localhost')
  37. # Milvus 端口
  38. self.MILVUS_PORT = self.config.get('milvus', 'port', fallback='19530')
  39. # Milvus 数据库名
  40. self.MILVUS_DATABASE_NAME = self.config.get('milvus', 'database_name', fallback='enterprise_kb')
  41. # Milvus 集合名
  42. self.MILVUS_COLLECTION_NAME = self.config.get('milvus', 'collection_name', fallback='enterprise_kb_rag_final')
  43. # LLM 配置
  44. # LLM 模型名
  45. self.LLM_MODEL = self.config.get('llm', 'model', fallback='qwen-plus')
  46. # DashScope API 密钥
  47. self.DASHSCOPE_API_KEY = os.getenv("API_KEY") or self.config.get('llm', 'dashscope_api_key', fallback=None)
  48. # DashScope API 地址
  49. self.DASHSCOPE_BASE_URL = self.config.get('llm', 'dashscope_base_url',
  50. fallback='https://dashscope.aliyuncs.com/compatible-mode/v1')
  51. # 检索参数
  52. # 父块大小
  53. self.PARENT_CHUNK_SIZE = self.config.getint('retrieval', 'parent_chunk_size', fallback=1200)
  54. # 子块大小
  55. self.CHILD_CHUNK_SIZE = self.config.getint('retrieval', 'child_chunk_size', fallback=300)
  56. # 块重叠大小
  57. self.CHUNK_OVERLAP = self.config.getint('retrieval', 'chunk_overlap', fallback=50)
  58. # 检索返回数量
  59. self.RETRIEVAL_K = self.config.getint('retrieval', 'retrieval_k', fallback=5)
  60. # 最终候选数量
  61. self.CANDIDATE_M = self.config.getint('retrieval', 'candidate_m', fallback=2)
  62. # 应用配置
  63. # 有效来源列表
  64. self.VALID_SOURCES = eval(
  65. self.config.get('app', 'valid_sources', fallback='["hr", "it", "finance", "legal", "product", "ops", "security"]'))
  66. # 客服电话
  67. self.CUSTOMER_SERVICE_PHONE = self.config.get('app', 'customer_service_phone', fallback='12345678')
  68. # 日志文件路径
  69. self.LOG_FILE = self.config.get('logger', 'log_file', fallback='logs/app.log')
  70. # model path
  71. # self.bge_m3 = os.path.join(project_root, "rag_qa/models/bge-m3")
  72. # self.bge_reranker = os.path.join(project_root, "rag_qa/models/bge-reranker-large")
  73. self.nlp_bert_doc_seg = os.path.join(project_root, "rag_qa/models/nlp_bert_document-segmentation_chinese-base")
  74. self.bert_intent_cls = os.path.join(project_root, "rag_qa/core/bert_query_classifier")
  75. if __name__ == '__main__':
  76. conf = Config()
  77. print(conf.LOG_FILE)