Tencent/WeKnora · error
failed to get embedding model: %w
Error message
failed to get embedding model: %w
What it means
CreateFAQEntry wraps failures from modelService.GetEmbeddingModel, which resolves the embedding model configured on the knowledge base (kb.EmbeddingModelID). The FAQ entry cannot be indexed without an embedding model, so creation aborts. The wrapped cause distinguishes 'model not found' from registry/config lookup errors.
Source
Thrown at internal/application/service/knowledge_faq.go:192
return nil, err
}
// 确保FAQ Knowledge存在
faqKnowledge, err := s.ensureFAQKnowledge(ctx, tenantID, kb)
if err != nil {
return nil, fmt.Errorf("failed to ensure FAQ knowledge: %w", err)
}
// 获取索引模式
indexMode := types.FAQIndexModeQuestionOnly
if kb.FAQConfig != nil && kb.FAQConfig.IndexMode != "" {
indexMode = kb.FAQConfig.IndexMode
}
// 获取embedding模型
embeddingModel, err := s.modelService.GetEmbeddingModel(ctx, kb.EmbeddingModelID)
if err != nil {
return nil, fmt.Errorf("failed to get embedding model: %w", err)
}
// 创建chunk
isEnabled := true
if payload.IsEnabled != nil {
isEnabled = *payload.IsEnabled
}
// 默认可推荐
flags := types.ChunkFlagRecommended
if payload.IsRecommended != nil && !*payload.IsRecommended {
flags = 0
}
chunk := &types.Chunk{
ID: uuid.New().String(),
TenantID: tenantID,
KnowledgeID: faqKnowledge.ID,
KnowledgeBaseID: kb.ID,View on GitHub (pinned to 988cbb0330)
Solutions
- Check kb.EmbeddingModelID and confirm the model exists and is enabled for the tenant in the model service configuration.
- Re-assign a valid embedding model to the knowledge base before creating FAQ entries.
- If the model registry is a remote service, verify it is reachable and the API key/config is correct.
- Audit KBs created by import/migration for dangling EmbeddingModelID values.
Example fix
// before: KB references a removed model // kb.EmbeddingModelID = "emb-old-model" // after: rebind a valid embedding model kb, _ := kbRepo.GetByID(ctx, kbID) models, _ := modelService.ListEmbeddingModels(ctx) kb.EmbeddingModelID = models[0].ID kbRepo.Update(ctx, kb)
Defensive patterns
Strategy: validation
Validate before calling
kb, err := svc.GetKnowledgeBase(ctx, kbID)
if err == nil {
if _, mErr := svc.GetEmbeddingModel(ctx, kb.EmbeddingModelID); mErr != nil {
return fmt.Errorf("KB %s has no resolvable embedding model: %w", kbID, mErr)
}
} Try / catch
entry, err := svc.CreateFAQEntry(ctx, kbID, payload)
var nf *NotFoundError
if errors.As(err, &nf) && strings.Contains(err.Error(), "embedding model") {
return nil, fmt.Errorf("rebind an embedding model to KB %s before adding FAQ entries", kbID)
} Prevention
- Never delete an embedding model still referenced by knowledge bases; reassign KBs first
- Validate EmbeddingModelID after KB import/migration
- Add a startup/health check that all configured embedding models resolve
- Keep model registry config and tenant bindings consistent across environments
When it happens
Trigger: Calling CreateFAQEntry on a knowledge base whose EmbeddingModelID points to a deleted, disabled, or nonexistent model, or when the model service itself errors (registry unavailable, tenant mismatch on the model).
Common situations: Admin deleted or re-configured the embedding model after the KB was created; environment model registration missing after deployment/migration; wrong tenant context so the model ID doesn't resolve; KB created by import referencing a model that never existed locally.
Related errors
- failed to index chunk: %w
- failed to ensure FAQ knowledge: %w
- failed to set FAQ metadata: %w
- failed to create chunk: %w
- failed to update chunk status: %w
AI-assisted analysis of Tencent/WeKnora@988cbb0330 (2026-09-02).
Data as JSON: /api/errors/422f5161d92728b9.
Report an issue: GitHub.