{"record":{"id":"ba6e91ade2b11f45","repo":"Tencent/WeKnora","slug":"invalid-retriever-type","errorCode":null,"errorMessage":"invalid retriever type","messagePattern":"invalid retriever type","errorType":"validation","errorClass":null,"httpStatus":400,"severity":"error","filePath":"internal/application/repository/retriever/postgres/repository.go","lineNumber":158,"sourceCode":"\tresult := g.db.WithContext(ctx).Where(\"knowledge_id IN ?\", knowledgeIDList).Delete(&pgVector{})\n\tif result.Error != nil {\n\t\tlogger.GetLogger(ctx).Errorf(\"[Postgres] Failed to delete indices by knowledge IDs: %v\", result.Error)\n\t\treturn result.Error\n\t}\n\tlogger.GetLogger(ctx).Infof(\"[Postgres] Successfully deleted %d indices by knowledge IDs\", result.RowsAffected)\n\treturn nil\n}\n\n// Retrieve handles retrieval requests and routes to appropriate method\nfunc (g *pgRepository) Retrieve(ctx context.Context, params types.RetrieveParams) ([]*types.RetrieveResult, error) {\n\tlogger.GetLogger(ctx).Debugf(\"[Postgres] Processing retrieval request of type: %s\", params.RetrieverType)\n\tswitch params.RetrieverType {\n\tcase types.KeywordsRetrieverType:\n\t\treturn g.KeywordsRetrieve(ctx, params)\n\tcase types.VectorRetrieverType:\n\t\treturn g.VectorRetrieve(ctx, params)\n\t}\n\terr := errors.New(\"invalid retriever type\")\n\tlogger.GetLogger(ctx).Errorf(\"[Postgres] %v: %s\", err, params.RetrieverType)\n\treturn nil, err\n}\n\n// KeywordsRetrieve performs keyword-based search using PostgreSQL full-text search\nfunc (g *pgRepository) KeywordsRetrieve(ctx context.Context,\n\tparams types.RetrieveParams,\n) ([]*types.RetrieveResult, error) {\n\tlogger.GetLogger(ctx).Infof(\"[Postgres] Keywords retrieval: query=%s, topK=%d\", params.Query, params.TopK)\n\tconds := make([]clause.Expression, 0)\n\n\t// KnowledgeBaseIDs and KnowledgeIDs use AND logic\n\t// - If only KnowledgeBaseIDs: search entire knowledge bases\n\t// - If only KnowledgeIDs: search specific documents\n\t// - If both: search specific documents within the knowledge bases (AND)\n\tif len(params.KnowledgeBaseIDs) > 0 {\n\t\tlogger.GetLogger(ctx).Debugf(\"[Postgres] Filtering by knowledge base IDs: %v\", params.KnowledgeBaseIDs)\n\t\tconds = append(conds, clause.IN{","sourceCodeStart":140,"sourceCodeEnd":176,"githubUrl":"https://github.com/Tencent/WeKnora/blob/988cbb03305e055d8ebb7d46d9ac6cc0803cd074/internal/application/repository/retriever/postgres/repository.go#L140-L176","documentation":"Returned by pgRepository.Retrieve when params.RetrieverType (from the request) does not match any supported retrieval backend (e.g. vector, fulltext, knowledge-graph). The router has no case for the given type, so it is an invalid-input guard, not a storage failure.","triggerScenarios":"Thrown at internal/application/repository/retriever/postgres/repository.go:158 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Send one of the supported retriever types in RetrieveParams instead of the unknown value","Check for typos/casing in the retriever_type field and update the caller or client configuration"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"988cbb03305e055d8ebb7d46d9ac6cc0803cd074","analyzedAt":"2026-09-02T14:41:08.344Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}