feat(ai): 知识库 V2 集成 — 多知识源路由 + AI 分析自动注入
- KnowledgeV2Source: 实现 KnowledgeSource trait,自动搜索所有启用的知识库 - AnalysisService.knowledge_sources: 改 Option → Vec 支持多知识源 - 最佳匹配策略:遍历所有知识源取最高 confidence 的上下文注入 system prompt - main.rs 共享 EmbeddingService + KnowledgeV2Service 实例 Phase 2 Task 12-15
This commit is contained in:
@@ -568,12 +568,26 @@ async fn main() -> anyhow::Result<()> {
|
||||
}
|
||||
}
|
||||
|
||||
let embedding_svc = std::sync::Arc::new(
|
||||
erp_ai::service::embedding::EmbeddingService::from_settings(&db).await,
|
||||
);
|
||||
let knowledge_v2_svc = std::sync::Arc::new(
|
||||
erp_ai::service::knowledge_v2::KnowledgeV2Service::new(db.clone()),
|
||||
);
|
||||
|
||||
let analysis_svc =
|
||||
erp_ai::service::analysis::AnalysisService::new(registry.clone(), db.clone())
|
||||
.with_knowledge_source(std::sync::Arc::new(
|
||||
erp_ai::knowledge::structured_source::StructuredKnowledgeSource::new(
|
||||
db.clone(),
|
||||
),
|
||||
))
|
||||
.with_knowledge_source(std::sync::Arc::new(
|
||||
erp_ai::knowledge::v2_source::KnowledgeV2Source::new(
|
||||
db.clone(),
|
||||
knowledge_v2_svc.clone(),
|
||||
embedding_svc.clone(),
|
||||
),
|
||||
));
|
||||
let analysis = std::sync::Arc::new(analysis_svc);
|
||||
let prompt = std::sync::Arc::new(erp_ai::service::prompt::PromptService::new(db.clone()));
|
||||
@@ -594,13 +608,6 @@ async fn main() -> anyhow::Result<()> {
|
||||
cache_ttl,
|
||||
));
|
||||
|
||||
let embedding_svc = std::sync::Arc::new(
|
||||
erp_ai::service::embedding::EmbeddingService::from_settings(&db).await,
|
||||
);
|
||||
let knowledge_v2_svc = std::sync::Arc::new(
|
||||
erp_ai::service::knowledge_v2::KnowledgeV2Service::new(db.clone()),
|
||||
);
|
||||
|
||||
erp_ai::AiState {
|
||||
db: db.clone(),
|
||||
event_bus: event_bus.clone(),
|
||||
|
||||
Reference in New Issue
Block a user