training_integration_fixes.md 4.9 KB

Training目录集成修复总结

本文档总结了为使training目录与新的Ollama集成配置结构兼容所做的修复。

修复的问题

1. 配置访问方式更新

问题:training目录中的代码直接访问旧的配置结构,与新的配置系统不兼容。

修复

training/vanna_trainer.py

  • 修复前:直接访问 app_config.EMBEDDING_CONFIG
  • 修复后:使用 common.utils 中的工具函数
# 修复前
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
  • 修复后:同样使用新的工具函数,并提供回退机制
# 修复后
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 脚本来验证修复效果:

python test_training_integration.py

测试覆盖范围

  1. 训练模块导入 - 验证所有训练函数可以正常导入
  2. 配置访问 - 验证新旧配置访问方式都能正常工作
  3. Vanna实例创建 - 验证工厂函数能正常创建实例
  4. 批处理器 - 验证BatchProcessor类能正常工作
  5. 训练函数 - 验证所有训练函数都是可调用的
  6. Embedding连接 - 验证embedding模型连接
  7. run_training脚本 - 验证主训练脚本的基本功能

支持的配置组合

现在training目录支持所有新的配置组合:

1. 全API模式

LLM_MODEL_TYPE = "api"
EMBEDDING_MODEL_TYPE = "api"
API_LLM_MODEL = "qwen"  # 或 "deepseek"

2. 全Ollama模式

LLM_MODEL_TYPE = "ollama"
EMBEDDING_MODEL_TYPE = "ollama"

3. 混合模式1(API LLM + Ollama Embedding)

LLM_MODEL_TYPE = "api"
EMBEDDING_MODEL_TYPE = "ollama"
API_LLM_MODEL = "qwen"

4. 混合模式2(Ollama LLM + API Embedding)

LLM_MODEL_TYPE = "ollama"
EMBEDDING_MODEL_TYPE = "api"

使用方法

1. 运行训练

# 使用默认配置
python training/run_training.py

# 指定训练数据路径
python training/run_training.py --data_path /path/to/training/data

2. 编程方式使用

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. 运行集成测试

    python test_training_integration.py
    
    1. 测试训练功能bash python training/run_training.py --data_path training/data
  2. 验证不同配置

    • 修改 app_config.py 中的配置
    • 重新运行测试和训练

总结

通过这些修复,training目录现在完全兼容新的Ollama集成配置结构,同时保持了向后兼容性。用户可以无缝地在不同的LLM和embedding提供商之间切换,而无需修改训练代码。