## Context
Building a POC Agentforce for Service on a production org (Enterprise Edition, Lightning Knowledge, Data Cloud enabled, Foundations active).
**Agent**: Employee Agent (`BotType = AgentforceEmployeeAgent`, `PlannerType = AiCopilot__ReAct`, `BotUserId = null` → runtime user = logged-in user, who is System Administrator with full Knowledge perms).
**Goal**: technician asks "How do I configure the VPN FortiClient?" → agent retrieves the relevant Knowledge article and answers.
## Problem
The action `Answer Questions with Knowledge` (`EmployeeCopilot__AnswerQuestionsWithKnowledge`, `invocationTarget = streamKnowledgeSearch`) **executes successfully but returns 0 results silently**:
```json
Output: {"knowledgeSummary": "Sorry, I can't find an answer based on the available articles."}
The same query via direct SOSL on Knowledge__kav returns the articles correctly — so it's NOT a Knowledge data problem, it's the RAG pipeline.
Event log input observed:
{
"citationsEnabled": "true",
"ragFeatureConfigId": "AiRagFeaturePromptContent_e3a977c6_c149_44c0_81fe_a6876f452fd2",
"query": "Comment configurer le VPN FortiClient ?"
}
The ragFeatureConfigId GUID is the same since the Data Library was first created — even after delete + recreate of the library, Salesforce reuses the same backend record.
What's verified OK
- 4 Knowledge articles, PublishStatus=Online, Language=fr, IsVisibleInApp=true
- Articles are RecordType=Procedure with content in Procedure_Steps__c (10–33k chars each, real procedure steps)
- Data Library assigned to the agent (Knowledge type, default Data Space)
- Content Fields include Procedure_Steps__c and all Procedure_*__c
- Identifying Fields: Title + Summary
- Filter by Knowledge Data Categories: OFF
- Use Public Knowledge Articles: ON
Search Index state (via SOQL on DataSemanticSearch):
- RuntimeStatus = READY
- SearchType = Hybrid (semantic + keyword)
- IndexRefreshedOn recent (post-publish)
- 290 chunks in *_chunk__dlm, 13 contain "FortiClient" literally
- 290 vectors in *_index__dlm
- Max chunk length: 2104 chars (Procedure_Steps content confirmed indexed)
- SharingStatus = REGULAR
Things I tested (none fixed it)
- Toggle Filter Data Categories OFF (was a forum-suggested cause)
- Created Data Category Group, tagged all 4 articles, configured Data Category Visibility "All" on the user profile + Default Visibility
- Topic language changed from en_US to fr (matches articles)
- Topic instructions translated to French and customized (was the generic English SvcCopilotTmpl__GeneralFAQ template)
- Activate/Deactivate cycle on the agent
- Rebuild of the Search Index (SUBMITTED → IN_PROGRESS → READY)
- Delete + recreate the Data Library → Salesforce reuses the same DataSemanticSearch GUID + same AiRagFeaturePromptContent_* GUID (singleton per data space? bug?)
- Tried REST endpoints to query the index directly in v60/v62/v66: /ssot/queries/semantic-search, /ssot/queries/hybrid-search, /ssot/retrievers → all 404
Other relevant settings
- Knowledge.settings: enableKbStandardSharing = false (legacy sharing model)
- Knowledge.settings: defaultLanguage = fr (matches articles)
- Profile (System Admin): AllowViewKnowledge = true, EditKnowledge = true, ManageKnowledge = true
- Note: Einstein Agent license users in the org have UserPermissionsKnowledgeUser blocked by license (not used at runtime here since Employee Agent uses logged-in user — but mentioning for completeness)
Questions for the community
- The AiRagFeaturePromptContent_* GUID — how do I inspect/debug its actual configuration? Is there a Setup UI, a Tooling API object, or a REST endpoint to retrieve its parameters (similarity threshold, top_k, default filters)?
- Is it expected that delete + recreate of a Data Library reuses the same backend DataSemanticSearch and AiRagFeaturePromptContent? If yes, how does one force a clean reset of the backend RAG config?
- Does the Data Cloud Hybrid retriever respect the legacy Knowledge sharing model (enableKbStandardSharing=false), the modern one, or its own independent permission layer?
- What's the correct REST path for direct hybrid/semantic search against a DataSemanticSearch index (outside the agent context, for debugging)? /ssot/queries/semantic-search 404s in API v60-v66.
- Has anyone else seen this exact symptom — Search Index Ready, content indexed and keyword-matching, agent returns 0 silently — and what was the fix?
Thanks for any pointers!
@Edgar KAMDEM the chunks already contain FortiClient, so the reused GUID is not why you get zero. That canned sentence is the no-hit message. The action never got passages.
I do not know a Setup page or a supported Tooling object that shows similarity threshold or top_k for AiRagFeaturePromptContent. The 404s on those guessed ssot paths are what I would expect. I will not invent another URL. The plan trace you already have is the supported view.
Delete and recreate reusing the same id is ugly, and it is not this bug. The chunks are in that index. A new GUID would not change a filter that runs on the way out.
The hybrid retriever is not SOSL. With standard sharing off, visibility is still data category, channel, and language, as the running user. A SOSL query with no language clause will return French articles that this action drops.
Two filters SOSL skips are the ones I would check next. The user language, not the topic language. If that admin is English, French-only articles can come back empty here. And the publish channel. IsVisibleInApp is the internal app. If the library is set to public articles, look at IsVisibleInPkb. Internal procedures often are not on the public channel, and this action will not see them.
I would stop rebuilding the index. Set that user language to French, or publish an English version, and ask once. If you still get that sentence, the channel flag is the next row.