一、开始在 Data 360 中落地 Agent
Data 360 与有据可依的 Agent
当 Agent 落地于 Data 360 的数据时,它们就能访问一个海量的、最新的、统一的客户数据知识库。有据可依的 Agent 能更智能、更有效地响应客户,用基于真实客户体验的个性化回答取代泛泛而谈。
在本徽章中,您实现一个落地于 Data 360 中 Case 数据的服务 Agent,构建一个 RAG 驱动的解决方案,包括:
- 搜索索引(search index)——让非结构化数据可搜索;
- 检索器(retriever)——获取相关数据块;
- 提示模板(prompt template)——指示 LLM 如何响应。
该解决方案从 Case 记录中的非结构化自由文本字段提取相关信息,并让 Agent 的响应落地于这些数据。落地正是把「幻觉式聊天机器人」与「可信 Agent」区分开来的关键。
案例研究:烤面包机公司
您所在的公司是一家领先的烤面包机(toaster oven)供应商。随着客户群增长,服务团队被客户咨询压得喘不过气。您的任务是构建一个服务 Agent来缓解服务团队压力、解答客户问题。
该 Agent 的工作方式:
- 用过往客户案例(Case)来组织回答;
- 通过 RAG 检索相关案例信息;
- 让每个回答都落地于真实的 Case Subject 和 Description 字段;
- 处理诸如「烤面包机有哪些常见问题?」「为什么我的烤面包机不启动?」「为什么我的吐司会烤焦?」等问题。
目标:一个个性化、数据落地的 Agent,在减轻支持负担的同时保持高质量服务。这个案例让抽象的 RAG 变得具体——您解决的是一真实业务问题。
注册包含 Data 360 的 Developer Edition
要完成本徽章,您需要一个包含 Data 360 和示例数据的、限时的自定义 Playground:
- 点击 Create Playground;
- 新的 org 会自动附加到您的 Trailhead 账户;
- 记下 org 的到期日期,并在此之前完成本徽章。
推荐先完成的前置内容:Data 360-Powered Agentforce、Retrieval Augmented Generation: Quick Look、以及 Hybrid Search for RAG: Quick Look。Playground 预装了 Data 360 和示例 Case 数据,让您专注于构建 RAG 解决方案。
摄取并映射 Case 数据
第一步是摄取带自由文本字段的 Case 数据。通过创建数据流把 Case 数据带入 Data 360:
- 在 App Launcher 输入并选择 Data Cloud;
- 选择 Data Streams 标签页;
- 点击 New,选择 Salesforce CRM,点击 Next;
- 点击 View Objects,搜索并选择 Case,点击 Next;
- Object Category 保持 Engagement,Event Time Field 保持 Created Date;
- 在 Standard Fields 标签页取消全选,仅保留必需的 System Modstamp、Case ID 和 Created Date;
- 选择 Subject 和 Description 字段(这些就是 RAG 所需的自由文本!);
- 保持 Custom Fields 标签页的选择,点击 Next;
- 点击 Deploy(若出现必需字段提示可忽略);
- 点击 Case_Home 数据流;
- 若 Last Run Status 为 None,点击 Refresh Now → Incremental Refresh → Refresh Now;
- 等待约 10 分钟后刷新页面,确认 Last Run Status 为 Success 且 Total Records 有数值后再继续。
映射 Case 对象
数据流会自动创建 Case_Home 数据湖对象(DLO)。接下来,把 Case_Home DLO 映射到 Case 数据模型对象(DMO):
- 在 Data Mapping 面板点击 Start;
- 在 Data Model Entities 下点击 Select Objects;
- 在 All Objects 面板搜索
Case,点击 Case 旁的 +,再点击 Done——DLO 和 DMO 字段会自动映射; - 点击 Save & Close。
最后在 Data Explorer 中查看 Case DMO 数据:进入 Data Explorer 标签页,Object 选择 Data Model Object 并搜索选择 Case,双击 Description 列排序,即可看到 Case 数据的自由文本。注意 Description 和 Subject 字段包含的正是自由文本——这就是 RAG 方案要搜索和检索的内容。
开启 Agentforce
在构建有据可依的 Agent 之前,必须在 org 中启用 Agentforce:
- 点击齿轮图标 → Setup;
- 在 Quick Find 框搜索并选择 Agentforce Agents;
- 开启 Agentforce Agents。
这是一个一次性的 org 级设置——开启后,本 org 中所有未来 Agent 都可用。至此,所有前置条件已就绪:✓ Data 360 已供应、✓ Case 数据已通过数据流摄取、✓ Case DLO 已映射到 Case DMO、✓ Agentforce 已启用。
接下来是什么
现在您的 Case 数据已就绪!单元一完成:
- 理解了为何 Data 360 对落地 Agent 至关重要;
- 设置了带 Data 360 和示例 Case 数据的 Developer Edition Playground;
- 创建数据流摄取 Case 记录,选择了 Subject 和 Description 自由文本字段;
- 把 Case_Home DLO 映射到 Case DMO,并在 Data Explorer 验证数据;
- 在 org 中启用了 Agentforce。
接下来:构建 RAG 管道——创建搜索索引让 Case 数据可搜索、构建检索器获取相关分块、编写提示模板指示 LLM 如何使用检索到的数据。
二、创建搜索索引、检索器和提示模板
创建搜索索引
搜索索引让文本可搜索,使 RAG 方案能根据用户输入找到并检索相关文本分块。例如,客户问「吐司为什么会烤焦」,RAG 方案就能搜索过往案例、找到与「烤焦」相关的文本。
Data 360 支持两种搜索索引:向量搜索(vector search)和混合搜索(hybrid search)。本例创建混合搜索索引,同时基于语义相似度和关键词查找相关内容:
- 从 App Launcher 启动 Data Cloud;
- 选择 Search Indexes 标签页(可能需展开 More 下拉框);
- 点击 New → Advanced Setup → Next;
- Search Type 选择 Hybrid Search;
- Data Space 保持默认;
- Source Object 选择 Case,点击 Next;
- 点击 Manage Fields,选择 Description 和 Subject,点击 Save(挑战无法检查字段选择,务必仔细);
- 连续点击 Next 接受其余默认值;
- 保持默认名称 Case;
- 点击 Save 创建索引;
- 等待约 20 分钟刷新页面,确认 Last Run Status 为 Ready 再继续。
会创建两个搜索索引文件:Case_chunk_dlm(文本分块)和 Case_index_dlm(混合索引)。排障提示:可在 Data Explorer 选择 Data Model Object → Case chunk 检查分块——分块能揭示 LLM 为何以意外方式响应。
构建检索器
检索器(retriever)是 Einstein Search 操作的封装。您在 AI Models 中创建自定义检索器来细化搜索,让检索到的内容更贴合您的用例。单个检索器只能从一个搜索索引获取数据,而一个搜索索引只能索引一个 DMO;若需从多个数据源落地,则用集成检索器(ensemble retriever)。本例只需 Case 搜索索引,因此用单个检索器即可:
- 在 Data Cloud 选择 AI Models 标签页;
- 点击 Retrievers 标签页 → New Retriever;
- 选择 Individual Retriever → Next;
- 选择 Data Cloud,数据空间保持默认;
- 选择 Case DMO 和 Case 搜索索引配置,点击 Next;
- 过滤器保持 All Documents,点击 Next;
- 返回结果数保持 20;
- 配置返回字段:Subject(DirectAttributes > Case > Subject)、Description(DirectAttributes > Case > Description)、Chunk(RelatedAttributes > Case chunk > Chunk);
- 点击 Next → Save,命名为
Case Retriever; - 记下检索器的 API 名称(后面要用);
- 点击 Activate → 再次 Activate。
创建提示模板并添加检索器
提示模板定义发送给 LLM 的提示结构。您可以添加文本指令和资源(如检索器、Flow、客户输入等)。提示模板继承自一个提示模板类型,该类型包含影响运行时如何使用已解析提示的隐藏前/后处理指令。本例基于 Answer Questions with Knowledge 提示模板创建新模板:
- 在 Setup 的 Quick Find 框搜索并选择 Prompt Builder;
- 点击 New Prompt Template;
- Prompt Template Type 选择 Knowledge Answers;
- 命名为
Answer Questions with Case Data(API 名Answer_Questions_with_Case_Data); - 点击 Next;
- 在工作区粘贴提供的模板文本;
- 删除 [Insert Retriever Here],把光标留在该处;
- 点击 Insert Resource → Actions → Retrievers → Configure Retrievers;
- 在 Resources 标签页点击 Case Retriever:Search Text 选 Query,Output Fields 选 Chunk,Number of Results 输入
5,点击 Apply and Insert; - 点击 Save → Activate。
负面护栏:模板明确告诉模型,在找不到相关信息时可以回答「我不知道」——这是防止幻觉的关键。
测试提示模板
在围绕提示模板构建 Agent 之前,先测试它是好习惯:
- 点击 Preview;
- 在 Preview Settings 中展开 Inputs;
- 在 Query 中输入测试问题,如
What are some common issues with the toaster oven product?
- Resolved Prompt 显示发送给 LLM 的已解析提示——其中包含检索器获取的数据分块,这就是 RAG 的实际运作,您能确切看到模型收到了什么上下文!
- Generated Response 显示提示模板的输出,即可呈现给客户的响应。
排障:若之前没记下检索器 ID,可到 AI Models 的检索器详情页复制 API 名称,粘贴到 Prompt Builder 的 Retriever ID 字段。测试能确认检索和生成都正确,再投入 Agent 配置。
接下来是什么
做得好!现在您有了一个使用检索器查找相关 Case 信息并响应客户问题的提示模板。单元二完成:
- 在 Case DMO 上创建了混合搜索索引,索引 Subject 和 Description 字段;
- 构建了从 Case 搜索索引获取相关分块的单个检索器;
- 编写了指示 LLM 使用检索到的 Case 数据、并在不知道答案时坦白的提示模板;
- 在 Preview 中测试了提示模板,验证检索与生成正确。
接下来:构建使用该提示模板的服务 Agent——创建 Agent 动作、在 Agentforce Studio 配置 Agent、用真实问题测试并激活部署。
三、构建有据可依的服务 Agent
子代理与动作
用「家庭装修工」的比喻来理解 子代理(subagents)和动作(actions):装修工有多种活(jobs),每样活又有不同任务(tasks)。对 Agent 而言,活就是子代理,任务就是动作。
- 装修工:活 = 设计厨房布局;任务 = 量尺寸、画蓝图、与客户审核修改;
- Agent:活(子代理)= 用 Case 信息回答问题;任务(动作)= Answer Questions with Case Data 工具。
注意:从 2026 年 4 月起,agent topics 改名为 subagents,功能不变——过渡期文档和 UI 中可能混用新旧术语。子代理定义 Agent 做什么,动作定义怎么做;一个子代理可包含多个动作。
创建 Agent 动作
首先创建包含 Answer Questions with Case Data 提示模板的 Agent 动作:
- Setup → Quick Find → Agentforce Assets;
- 点击 Actions 标签页 → New Agent Action;
- Reference Action Type 选择 Prompt Template;
- Reference Action 选择 Answer Questions with Case Data 提示模板(确保其已激活);
- 确认 Label =
Answer Questions With Case Data、API Name =Answer_Questions_with_Case_Data,点击 Next; - Description 输入:
Answer questions that customers have about product issues. Use the provided customer cases...; - 启用 Show loading text for this action;
- Loading Text 输入
Getting an answer…; - Inputs 下:RetrieverIdOrName Description 填「使用硬编码在提示模板中的检索器」;Query 启用 Collect data from user;Citation Mode Description 填「不生成引用」;
- Outputs 下:对 Prompt Response 启用 Show in conversation;
- 其余默认,点击 Finish。
创建服务 Agent
接下来创建一个包含 Answer Questions with Case Data 工具的服务 Agent:
- 从 App Launcher 搜索选择 Agentforce Studio;
- 点击 New Agent;
- 在「What do you want your agent to do?」输入:
This AI agent works for a company that sells toaster ovens. The agent's job is to answer questions...; - 点击发送图标;
- Agent Name 输入
Toaster Service Agent,Developer Name 为Toaster_Service_Agent; - 保持 New User 选中,点击 Let's Go。
为新用户授予权限(在另一个浏览器标签页):Setup → Users → 点击 EinsteinServiceAgent User → Permission Set Assignments → Edit Assignments → 添加 Agentforce Service Agent Secure Base → Save。没有该权限集,Agent 无法访问 Data 360 数据或调用提示模板(会静默失败)。
配置子代理与动作
Agent 创建后,配置其子代理与动作以连接提示模板:
- 点击 Skip Ahead 跳过引导设置;
- 在 Explorer 标签页悬停 Subagents,点击 +;
- 点击 New Subagent;
- 名称与描述输入
Answer Questions with Case information; - 点击 Create and Open;
- Instructions 输入
Answer questions about toaster ovens; - 在 Actions Available for Reasoning 下点击 Select Action;
- 点击 Add from Asset Library,在 Answer Questions with Case Data 上点击 Select(注意选对同名动作);
- 点击 Add to Agent;
- 点击 Preview 打开聊天窗口。
至此完整的 RAG 链路已连通:子代理 → 动作 → 提示模板 → 检索器 → 搜索索引 → Case 数据。
测试 Agent
在聊天窗口用真实问题测试 Agent,验证落地效果与防幻觉能力:
用范围内问题测试:
- What are some common product issues with toaster ovens?
- Why does my toaster oven not start?
- Why does my toast burn in the toaster?
注意答案并非泛泛而谈——它反映了 Case Subject 和 Description 字段中的信息,LLM 响应明显落地于您摄取的数据。您可在 Interaction Details 窗口查看推理过程。
用范围外问题测试:「去年卖了多少台烤面包机?」「先有鸡还是先有蛋?」——Agent 应重定向客户而非编造幻觉答案,说明提示模板中的「我不知道」负面护栏在起作用。
同时测试范围内和范围外问题,可验证落地有效、幻觉被阻止。
激活 Agent
测试完成后,提交并激活 Agent 以便部署到渠道:
- 点击 Commit Version → 再次 Commit Version;
- 点击 Activate → 再次 Activate。
现在 Agent 已上线,可部署到 Web 聊天、消息应用或嵌入式服务控制台等渠道。
激活清单:✓ Case 数据已摄取映射、✓ 搜索索引已构建就绪、✓ 检索器已创建激活、✓ 提示模板已保存激活、✓ Agent 动作已创建、✓ 服务 Agent 已配置子代理与动作、✓ Agent 已用范围内/外问题测试、✓ Agent 已提交激活。您的 RAG 驱动服务 Agent 完成了!
接下来是什么
您的服务 Agent 已构建、测试并激活!单元三完成:
- 用装修工比喻理解了子代理与动作模型;
- 创建了包装提示模板的 Agent 动作(含输入/输出配置);
- 在 Agentforce Studio 用自然语言描述构建了服务 Agent;
- 配置了子代理并通过资产库连接 Agent 动作;
- 用真实问题测试——验证范围内落地、范围外防幻觉;
- 提交并激活 Agent 以待部署。
接下来:了解 RAG 最佳实践——回顾您做的每个决策背后的「为什么」(干净内容、检索策略、提示设计),从而把这些模式应用到您自己的 RAG 方案中。
四、了解 RAG 最佳实践
使用干净内容
垃圾进,垃圾出。您的 RAG 方案有多好,取决于落地它的数据有多好。虽然本徽章用的是干净的样本数据,但真实世界的非结构化内容需要整理。成功的 RAG 始于一个精心策划、高质量的知识库,内容需准确、完整、最新、有组织、一致(无矛盾信息)。
内容准备的最佳实践:
- 只包含近期、相关、完整、一致的数据;
- 一致且明确地组织与格式化内容(用标题层级表示结构、给表格和图片用描述性标题、一致使用关键词和术语);
- 添加元数据:来源、创建/更新日期、文档类型、产品/版本、地区/语言。
优化检索知识后,可期待更准确、更相关的响应。再好的搜索索引、检索器和提示模板,也弥补不了糟糕的数据。
选择最佳方法:ADL 还是手动设置
Salesforce 平台上有两条 RAG 实现路径,根据数据源选择:
- Agentforce Data Library(ADL):面向 Knowledge 文章和文件上传的开箱即用 RAG,快速、声明式,但仅支持非结构化数据、每个库一个源、无实时能力;
- Data 360 手动设置(本徽章所用):对每个 RAG 组件完全掌控,支持 Data 360 中任何数据(DLO/DMO、结构化+非结构化),支持实时数据、零拷贝、数据图谱、集成检索器。
为什么本徽章用手动设置:场景依赖 Case DMO——而非 Knowledge 文章或文件上传,ADL 无法支持。当落地数据位于 DMO 中时,手动 Data 360 设置是唯一路径。
决策框架:数据在 Knowledge/文章/文件?→ 用 ADL(快);数据在 DLO/DMO/自定义对象?→ 手动设置;需要实时/混合搜索/多源?→ 手动设置。
使用混合搜索
创建搜索索引时,您选择了混合搜索而非向量搜索。对比:
- 向量搜索:检索语义相似的分块,适合寻找一般信息的长文本查询,但可能漏掉精确术语;
- 混合搜索:把向量搜索与关键词搜索、排序相结合,同时检索语义相似的分块和精确术语,最适合带特定搜索词的长查询。
您的用例:Agent 回答具体烤面包机问题(如「为什么我的吐司会烤焦?」),既含特定术语(burn、toast、toaster),又含语义概念(烹饪问题、过热)。混合搜索能捕捉两个维度。
决策规则:若查询包含具体产品名、错误码或技术术语,选混合;若查询开放且探索性,向量搜索可能够用。
调优并丰富内容分块
您的分块策略(chunking strategy)影响方案检索相关知识的效果。关键考虑:
- 嵌入模型:确保模型适合您的内容类型和语言;
- 分块大小:太小会丢失上下文,太大则稀释相关性。
可在搜索索引中配置的增强特性:
- 分节感知分块(section-aware chunking):在分块边界保留文档结构(标题、章节);
- 前置分块(prepended chunks):每个分块包含前一分块的一部分以保证连续性。
适当调优后,检索到的内容更自包含、上下文完整,从而产生更连贯的 LLM 响应。默认设置在多数场景够用,观察到检索质量问题再调优。
设置足够的检索窗口
检索窗口(retrieval window)是检索器为 LLM 呈现的结果数。本徽章在提示模板中把检索结果数设为 5,对聚焦用例通常够用。
检索窗口的权衡:
- 太窄(如 2 条):遗漏排名靠后的文档 → 缺失重要上下文;
- 太宽(如 20+ 条):纳入无关内容 → 稀释提示、可能困惑 LLM;
- 刚好(5-10 条):足够上下文又无噪声。
调优:若方案信息不足或遗漏相关细节,加宽窗口;若响应不聚焦或含无关信息,收窄。注意检索窗口在提示模板(配置检索器资源时)设置,而非检索器本身——检索器默认 20 是安全上限,提示模板才定义实际窗口。
只索引长文本字段
只索引至少包含一个语义连贯完整句子的长文本字段,不要索引 Status 这类只有一个词的短字段。本徽章索引了 Case 对象中的 Subject 和 Description:
- Subject:「Power cord caught fire.」(描述问题的完整句子);
- Description:「The power cord caught fire the first time I tried to use my toaster oven to cook a pizza.」(丰富、详细的自由文本)。
为什么重要:短字段(如 Status = Closed)不给搜索结果增加语义价值,索引它们浪费存储、拖慢查询,还可能用无关匹配污染检索结果;长字段提供了 RAG 生成有意义响应所需的语义丰富度。
字段选择规则:若某字段不能单独回答客户问题,就不要索引它。预期收益:检索结果更直接相关、查询更快、成本更低。
在提示模板中给出明确指令
提示模板被策略性地编写以通过明确指令防止幻觉。两个关键提示设计模式:
- 明确的落地指令:提示明确指示模型只用检索到的上下文回答——不用训练数据、不猜、不假设;
- 负面护栏——「可以说不」:提示明确告诉模型,找不到相关信息时可以回答「我不知道」,防止模型对跑题问题编造回答。
为什么有效:LLM 被训练成「乐于助人」,即使不确定也倾向回答;没有明确允许说「不知道」,模型就会猜——产生幻觉。落地指令把模型约束到只使用提供的上下文,建立了信息边界。
预期收益:更少幻觉、更多清晰可解释的、植根于真实数据的答案。这是 RAG 中性价比最高的防幻觉技术,且无需任何成本实现。
总结
恭喜!您创建了一个基于 Case 信息回答客户问题的有据可依的服务 Agent。您构建了:
- 让 Case 数据可搜索的搜索索引;
- 获取相关分块的检索器;
- 带明确落地指令和负面护栏的提示模板;
- 包装提示模板的 Agent 动作;
- 带子代理与动作的服务 Agent;
- 用范围内/外问题测试;
- 激活并待部署。
您学到的 RAG 最佳实践:从干净、精心策划的内容开始;根据数据源选择 ADL 或手动设置;对含特定术语的查询用混合搜索;为内容类型调优分块;设置足够的检索窗口(5-10 条);只索引长文本字段;给出明确指令和负面护栏。
您为公司的服务团队节省了数小时,同时保持高质量、个性化的客户体验。把这些模式应用到您自己的 RAG 方案中吧——「摄取 → 索引 → 检索 → 提示 → Agent → 测试 → 激活」是任何落地 Agent 方案都可复用的模式。






























