# Training目录集成修复总结 本文档总结了为使training目录与新的Ollama集成配置结构兼容所做的修复。 ## 修复的问题 ### 1. 配置访问方式更新 **问题**:training目录中的代码直接访问旧的配置结构,与新的配置系统不兼容。 **修复**: #### `training/vanna_trainer.py` - **修复前**:直接访问 `app_config.EMBEDDING_CONFIG` - **修复后**:使用 `common.utils` 中的工具函数 ```python # 修复前 embedding_model = app_config.EMBEDDING_CONFIG.get('model_name') # 修复后 from common.utils import get_current_embedding_config, get_current_model_info embedding_config = get_current_embedding_config() model_info = get_current_model_info() ``` #### `training/run_training.py` - **修复前**:直接访问 `app_config.EMBEDDING_CONFIG` - **修复后**:同样使用新的工具函数,并提供回退机制 ```python # 修复后 try: from common.utils import get_current_embedding_config, get_current_model_info embedding_config = get_current_embedding_config() model_info = get_current_model_info() except ImportError as e: # 回退到旧的配置访问方式 embedding_config = getattr(app_config, 'API_EMBEDDING_CONFIG', {}) ``` ### 2. 向后兼容性 **特点**: - 所有修复都包含了错误处理和回退机制 - 如果新的配置工具函数不可用,会自动回退到旧的访问方式 - 不会破坏现有的功能 ### 3. 配置验证 **验证的配置项**: - ✅ `TRAINING_BATCH_PROCESSING_ENABLED` - 存在 - ✅ `TRAINING_BATCH_SIZE` - 存在 - ✅ `TRAINING_MAX_WORKERS` - 存在 - ✅ `TRAINING_DATA_PATH` - 存在 - ✅ `PGVECTOR_CONFIG` - 存在 - ✅ 新的embedding配置工具函数 - 已实现 ## 测试验证 创建了 `test_training_integration.py` 脚本来验证修复效果: ```bash python test_training_integration.py ``` ### 测试覆盖范围 1. **训练模块导入** - 验证所有训练函数可以正常导入 2. **配置访问** - 验证新旧配置访问方式都能正常工作 3. **Vanna实例创建** - 验证工厂函数能正常创建实例 4. **批处理器** - 验证BatchProcessor类能正常工作 5. **训练函数** - 验证所有训练函数都是可调用的 6. **Embedding连接** - 验证embedding模型连接 7. **run_training脚本** - 验证主训练脚本的基本功能 ## 支持的配置组合 现在training目录支持所有新的配置组合: ### 1. 全API模式 ```python LLM_MODEL_TYPE = "api" EMBEDDING_MODEL_TYPE = "api" API_LLM_MODEL = "qwen" # 或 "deepseek" ``` ### 2. 全Ollama模式 ```python LLM_MODEL_TYPE = "ollama" EMBEDDING_MODEL_TYPE = "ollama" ``` ### 3. 混合模式1(API LLM + Ollama Embedding) ```python LLM_MODEL_TYPE = "api" EMBEDDING_MODEL_TYPE = "ollama" API_LLM_MODEL = "qwen" ``` ### 4. 混合模式2(Ollama LLM + API Embedding) ```python LLM_MODEL_TYPE = "ollama" EMBEDDING_MODEL_TYPE = "api" ``` ## 使用方法 ### 1. 运行训练 ```bash # 使用默认配置 python training/run_training.py # 指定训练数据路径 python training/run_training.py --data_path /path/to/training/data ``` ### 2. 编程方式使用 ```python from training import ( train_ddl, train_documentation, train_sql_example, train_question_sql_pair, flush_training, shutdown_trainer ) # 训练DDL train_ddl("CREATE TABLE users (id INT, name VARCHAR(50));") # 训练文档 train_documentation("用户表包含用户的基本信息") # 训练SQL示例 train_sql_example("SELECT * FROM users WHERE age > 18;") # 训练问答对 train_question_sql_pair("查询所有成年用户", "SELECT * FROM users WHERE age >= 18;") # 完成训练 flush_training() shutdown_trainer() ``` ## 注意事项 1. **配置优先级**:新的配置工具函数优先,如果不可用则回退到旧配置 2. **错误处理**:所有配置访问都包含了适当的错误处理 3. **向后兼容**:现有的训练脚本和代码无需修改即可继续使用 4. **性能优化**:批处理功能仍然可用,提高训练效率 ## 文件修改清单 ### 修改的文件 - `training/vanna_trainer.py` - 更新配置访问方式 - `training/run_training.py` - 更新配置访问方式 ### 新增的文件 - `test_training_integration.py` - 训练集成测试脚本 - `docs/training_integration_fixes.md` - 本文档 ### 未修改的文件 - `training/__init__.py` - 无需修改 - `training/data/` - 训练数据目录保持不变 ## 验证步骤 1. **运行集成测试**: ```bash python test_training_integration.py ``` 2. **测试训练功能**: ```bash python training/run_training.py --data_path training/data ``` 3. **验证不同配置**: - 修改 `app_config.py` 中的配置 - 重新运行测试和训练 ## 总结 通过这些修复,training目录现在完全兼容新的Ollama集成配置结构,同时保持了向后兼容性。用户可以无缝地在不同的LLM和embedding提供商之间切换,而无需修改训练代码。