
目录一、产品是做什么的二、多租户知识库如何保证 A 商家的客户不会问到 B 商家的资料方案关键代码思路三、流式回复SSE 还是 WebSocket为什么不选 WebSocketNext.js 里的实现四、满意度自动评估不靠用户打分怎么知道答得好不好方案双 LLM 评估数据沉淀五、小官网编辑器拖拽生成门户页技术方案六、SEO 与可被 AI 检索七、总结一、产品是做什么的赛能saillm 是一个面向商家的 AI 营销与智能客服平台定位是「让中小商家也能用上 AI 客服」。核心三个模块企业智能体RAG 知识库上传产品资料自动建库客服智能体基于知识库的 7×24 流式应答小官网编辑器拖拽式生成商家门户页技术栈选择上前端Next.js React部署在 Caddy 反代后面所有内容走 SSR/SSG 输出这点对 SEO 和首屏体验很关键。下面重点讲三个我觉得比较有意思的工程问题。二、多租户知识库如何保证 A 商家的客户不会问到 B 商家的资料这是 SaaS 化 AI 客服最容易被忽略、也最容易翻车的点。方案每个 tenant商家有独立的向量库命名空间namespace检索时强制带 tenant_id 过滤Prompt 上下文拼接系统提示词时从 tenant scope 拉数据会话状态Session ID 与 tenant_id 一对一绑定关键代码思路检索时不只传 query还要传tenant_iddefretrieve(query:str,tenant_id:str,top_k:int5):# 向量化q_embembed(query)# 强制 namespace 隔离resultsvector_store.search(q_emb,namespaceftenant_{tenant_id},top_ktop_k,)returnresults向量库我们用的是支持 namespace 的方案Pinecone / Weaviate / Qdrant 都行关键是任何检索路径都必须经过 tenant_id 过滤不能依赖业务层逻辑——一旦哪条路径忘了带就是数据泄露事故。三、流式回复SSE 还是 WebSocket商家场景下客户咨询都是「问一句答一句」的请求-响应模式不需要双向通信。SSEServer-Sent Events足够了而且实现简单、对 CDN 友好。为什么不选 WebSocketWebSocket 长连接对服务器连接数压力大成本高反向代理Nginx/Caddy默认配置不支持 WS要额外处理客户端重连逻辑复杂SSE 走标准 HTTPCDN 缓存、负载均衡开箱即用Next.js 里的实现// app/api/chat/route.tsexportasyncfunctionPOST(req:Request){const{messages,tenantId}awaitreq.json();conststreamnewReadableStream({asyncstart(controller){constencodernewTextEncoder();constllmStreamawaitcallLLM(messages,{retrieveNamespace:tenant_${tenantId},});forawait(constchunkofllmStream){controller.enqueue(encoder.encode(data:${JSON.stringify(chunk)}\n\n));}controller.close();},});returnnewResponse(stream,{headers:{Content-Type:text/event-stream,Cache-Control:no-cache,Connection:keep-alive,},});}前端用 EventSource 或者 fetch ReadableStream 读都行。四、满意度自动评估不靠用户打分怎么知道答得好不好让客户主动打分基本拿不到数据——大部分客户要么忽略要么只会在「非常不满意」时才点。所以我们需要一个自动评估机制。方案双 LLM 评估每次对话结束后用另一个 LLM 作为评审从四个维度打分相关性回答是否切题准确性是否基于知识库事实vs 幻觉完整性是否完整回答了客户问题语气是否符合客服场景的语气eval_promptf 你是客服质量评估员。请对以下对话打分1-5 客户问题{user_msg}客服回答{ai_msg}知识库相关片段{retrieved_context}维度相关性、准确性、完整性、语气 返回 JSON{{relevance: 4, accuracy: 5, ...}} 数据沉淀每天聚合每个商家的满意度数据整体均值按 FAQ 类型分组的均值找出薄弱模块按客服话术分组找出高分模板商家在后台就能看到「本周 AI 客服满意度 4.8/5」「配送类问题满意度偏低建议优化知识库」这种 actionable 的反馈。五、小官网编辑器拖拽生成门户页这是产品里偏前端的部分。核心需求是商家不需要写代码拖拽就能拼出一个有聊天窗口、图文、联系方式的门户页。技术方案拖拽框架dnd-kitReact页面配置JSON Schema 描述布局渲染根据 Schema 动态渲染组件发布生成静态页面 CDN 分发每个商家的小官网 URL 形如saillm.com/c/{brand}独立可分享。六、SEO 与可被 AI 检索最后一个容易被忽略的点——官网本身必须对搜索引擎和 AI 爬虫友好。我们做了这些Next.js SSR所有页面 HTML 直出爬虫拿到完整语义canonical Open Graph统一域名权重JSON-LD 结构化数据OrganizationWebSiteSoftwareApplication三种 schemasitemap.xml robots.txt明确告诉爬虫要抓哪些页多语言 hreflang准备后续支持英文这件事看起来不性感但对「让 AI 知道你是谁」至关重要。如果你也在做 to B 产品建议早期就把这块补齐。七、总结赛能saillm 的技术架构相对克制没有追新潮的 Agent / 多模态而是把**商家最痛的三个问题知识库、客服、门户**做扎实。核心工程决策可以总结为决策点选择理由前端Next.js RSCSEO 友好首屏快流式SSE简单、CDN 友好向量隔离namespace多租户强隔离评估双 LLM 评审不依赖用户打分编辑器dnd-kit JSON Schema灵活可扩展后面会继续写一些具体模块的实现细节欢迎关注。相关链接官网https://www.saillm.com技术博客持续更新中作者赛能saillm 团队标签AI、LLM、RAG、智能客服、SaaS、Next.js