{"record":{"id":"cd61fda74728698d","repo":"vxcontrol/pentagi","slug":"knowledge-embedding-provider-is-not-configured","errorCode":null,"errorMessage":"knowledge: embedding provider is not configured","messagePattern":"knowledge: embedding provider is not configured","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"backend/pkg/database/knowledge/knowledge.go","lineNumber":239,"sourceCode":"\t\t\tcontinue\n\t\t}\n\t\tif len(filter.AnswerTypes) > 0 && (doc.AnswerType == nil || !slices.Contains(filter.AnswerTypes, *doc.AnswerType)) {\n\t\t\tcontinue\n\t\t}\n\t\tif len(filter.CodeLangs) > 0 && (doc.CodeLang == nil || !slices.Contains(filter.CodeLangs, *doc.CodeLang)) {\n\t\t\tcontinue\n\t\t}\n\t\tif filter.Manual != nil && doc.Manual != *filter.Manual {\n\t\t\tcontinue\n\t\t}\n\t\tresult = append(result, doc)\n\t}\n\treturn result\n}\n\nfunc (ks *knowledgeStore) requireStore() error {\n\tif ks.store == nil {\n\t\treturn fmt.Errorf(\"knowledge: embedding provider is not configured\")\n\t}\n\treturn nil\n}\n\nfunc (ks *knowledgeStore) requireEmbedder() error {\n\tif ks.embedder == nil || !ks.embedder.IsAvailable() {\n\t\treturn fmt.Errorf(\"knowledge: embedding provider is not available\")\n\t}\n\treturn nil\n}\n\n// ---- ListDocuments (admin) --------------------------------------------------\n\nfunc (ks *knowledgeStore) ListDocuments(ctx context.Context, filter *model.KnowledgeFilter, withContent bool) ([]*model.KnowledgeDocument, error) {\n\tvar docs []*model.KnowledgeDocument\n\n\tif filter != nil && filter.FlowID != nil {\n\t\trows, err := ks.db.ListFlowKnowledgeDocuments(ctx, nsOf(strconv.FormatInt(*filter.FlowID, 10)))","sourceCodeStart":221,"sourceCodeEnd":257,"githubUrl":"https://github.com/vxcontrol/pentagi/blob/ea665308baaff015b226f308438a68d929d0f29b/backend/pkg/database/knowledge/knowledge.go#L221-L257","documentation":"requireStore is a guard used by knowledgeStore methods: it fails when the internal pgvector-backed store was never constructed because no embedding provider was configured. Without an embedder there is no way to vectorize documents, so all knowledge-base operations are refused with this message. It indicates a configuration problem, not a runtime failure.","triggerScenarios":"Any knowledge-store call (search, create, update, list-backed operations) when the app started without an embedding provider configured (no EMBEDDING_* / provider env vars, or the chosen provider has no embedding capability).","commonSituations":"Deploying with .env lacking embedding provider settings; enabling the knowledge-base feature while only configuring chat LLM providers; a provider that exposes chat but not embeddings (e.g. some Ollama setups).","solutions":["Configure an embedding provider: set the embedding API key/model env vars (see .env.example) and restart.","In the Settings UI, enable a provider that supports embeddings and select an embedding model.","If embeddings are intentionally unavailable, disable knowledge-base features instead of calling the store.","Guard feature code with a capability check (embedder availability) before invoking knowledge operations."],"exampleFix":"// before\ndocs, err := kStore.Search(ctx, flowID, query, limit) // fails: not configured\n// after\nif err := kStore.CheckAvailability(); err != nil {\n    return nil, fmt.Errorf(\"knowledge base disabled: %w\", err) // degrade gracefully\n}\ndocs, err := kStore.Search(ctx, flowID, query, limit)","handlingStrategy":"validation","validationCode":"// before using the knowledge base, check configuration\nif err := kStore.CheckAvailability(); err != nil {\n    // knowledge: embedding provider is not configured\n    disableKnowledgeFeatures(err)\n    return\n}","typeGuard":"func isEmbeddingNotConfigured(err error) bool {\n    return err != nil && strings.Contains(err.Error(), \"embedding provider is not configured\")\n}","tryCatchPattern":"docs, err := kStore.Search(ctx, flowID, query, limit)\nif err != nil {\n    if strings.Contains(err.Error(), \"embedding provider is not configured\") {\n        return nil, ErrKnowledgeDisabled // surface as feature-disabled, not 500\n    }\n    return err\n}","preventionTips":["Set embedding provider env vars (per .env.example) before enabling knowledge features.","Add a startup readiness check that logs when knowledge features are disabled.","Hide knowledge-base UI entry points when no embedder is configured.","Document the required provider config in deployment docs."],"tags":["go","configuration","embeddings","knowledge-base"],"backgroundTag":"missing-env-var","analyzedSha":"ea665308baaff015b226f308438a68d929d0f29b","analyzedAt":"2026-09-01T14:16:31.421Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}