Tencent/WeKnora · error

failed to get embedding model: %w

Error message

failed to get embedding model: %w

What it means

executeFAQImport wraps errors from modelService.GetEmbeddingModel when fetching the embedding model configured on the FAQ knowledge base; the model is needed for later index cleanup. If the model config is missing/broken or the model service errors, the import aborts before touching chunks.

Source

Thrown at internal/application/service/knowledge_faq_import.go:1383

			buf := make([]byte, 8192)
			n := runtime.Stack(buf, false)
			stack := string(buf[:n])
			logger.Errorf(ctx, "FAQ import task %s panicked: %v\n%s", taskID, r, stack)
			err = fmt.Errorf("panic during FAQ import: %v", r)
		}
	}()

	kb, err = s.validateFAQKnowledgeBase(ctx, kbID)
	if err != nil {
		return err
	}

	kb.EnsureDefaults()

	// 获取embedding模型,用于后续清理索引
	embeddingModel, err = s.modelService.GetEmbeddingModel(ctx, kb.EmbeddingModelID)
	if err != nil {
		return fmt.Errorf("failed to get embedding model: %w", err)
	}
	faqKnowledge, err := s.ensureFAQKnowledge(ctx, tenantID, kb)
	if err != nil {
		return err
	}

	// 获取索引模式
	indexMode := types.FAQIndexModeQuestionOnly
	if kb.FAQConfig != nil && kb.FAQConfig.IndexMode != "" {
		indexMode = kb.FAQConfig.IndexMode
	}

	// 增量更新逻辑:计算需要处理的条目
	var entriesToProcess []types.FAQEntryPayload
	var chunksToDelete []*types.Chunk
	var skippedCount int

	if payload.Mode == types.FAQBatchModeReplace {

View on GitHub (pinned to 988cbb0330)

Solutions

  1. Verify kb.EmbeddingModelID points to an existing, valid embedding model for the tenant
  2. Re-assign a valid embedding model on the knowledge base and retry the import
  3. Check model service health/configuration and its backing store
  4. Restore or recreate the missing model record if it was deleted

Example fix

// before
embeddingModel, err = s.modelService.GetEmbeddingModel(ctx, kb.EmbeddingModelID)
if err != nil {
	return fmt.Errorf("failed to get embedding model: %w", err)
}
// after
embeddingModel, err = s.modelService.GetEmbeddingModel(ctx, kb.EmbeddingModelID)
if err != nil {
	return fmt.Errorf("failed to get embedding model %s: %w", kb.EmbeddingModelID, err)
}
Defensive patterns

Strategy: validation

Validate before calling

// Before creating/using a knowledge base, verify its embedding model resolves
m, err := modelService.GetEmbeddingModel(ctx, kb.EmbeddingModelID)
if err != nil || m == nil {
	return fmt.Errorf("knowledge base %s references invalid embedding model %q", kb.ID, kb.EmbeddingModelID)
}

Type guard

func (kb *types.KnowledgeBase) HasEmbeddingModel() bool {
	return kb != nil && kb.EmbeddingModelID != ""
}

Try / catch

err := ProcessFAQImport(ctx, taskID, kbID, payload)
if err != nil && strings.Contains(err.Error(), "failed to get embedding model") {
	// configuration problem: do not retry, prompt admin to reassign the model
	markTaskFailedWithHint(taskID, "reassign a valid embedding model to the knowledge base")
	return err
}
return err

Prevention

When it happens

Trigger: kb.EmbeddingModelID references a model that no longer exists, belongs to another tenant, or the model service fails (DB error / service unavailable) at import time.

Common situations: Knowledge base created before the embedding model was deleted or re-created with a new ID; cross-environment DB restore (staging data pointing at prod model IDs); model service registry misconfiguration.

Related errors


AI-assisted analysis of Tencent/WeKnora@988cbb0330 (2026-09-02). Data as JSON: /api/errors/66a2f2b2560dda58. Report an issue: GitHub.