22-RAG文档处理与异步入库
企业文档怎样变成可检索知识?解析、切分与异步入库 上传 PDF 后能检索到内容,却找不到表格里的例外;导入超时后重新上传,又出现重复片段。文档处理需要保留语义、版本与任务状态,而不只是调用一次 Embedding。 Spring AI 接入片段使用 Java 17、Spring Boot 3.5.3
企业文档怎样变成可检索知识?解析、切分与异步入库 上传 PDF 后能检索到内容,却找不到表格里的例外;导入超时后重新上传,又出现重复片段。文档处理需要保留语义、版本与任务状态,而不只是调用一次 Embedding。 Spring AI 接入片段使用 Java 17、Spring Boot 3.5.3
模型输出 JSON 就能入库吗?结构约束与业务校验 输出已经是合法 JSON,金额却为负,来源编号也不存在。这说明语法、结构和业务语义是不同层次。结构化输出让结果更容易处理,但不能把模型变成可信数据库写入者。 Spring AI 接入片段使用 Java 17、Spring Boot 3.5.3 与
Tool Calling 怎样可靠执行?参数、授权与未知结果 模型知道应该调用订单接口,不代表它有权查询任何订单;创建工单超时,也不代表工单没有创建。工具设计从选择开始,最终落在受授权、可恢复的业务执行上。 Spring AI 接入片段使用 Java 17、Spring Boot 3.5.3 与 S
多轮对话怎样管理?ChatMemory、Redis 与会话归属 页面保留了一百条历史,模型却只记得最近几轮;两个请求同时发送,又可能覆盖彼此记忆。完整历史、模型上下文与并发会话是三种不同需求,需要分别设计。 Spring AI 接入片段使用 Java 17、Spring Boot 3.5.3 与 S
AI 聊天怎样真正流起来?SSE、取消与半完成响应 模型正在生成,页面却等到最后一次性显示;用户已经停止等待,后端仍继续计费。流式聊天需要同时处理传输、渲染和任务生命周期,不能把它简化为把 String 改成 Flux。 Spring AI 接入片段使用 Java 17、Spring Boot 3.
从模型 API 到 Spring AI:一次请求的上下文怎样形成? 直接调用模型接口能得到一句回答,但业务应用还需要默认规则、会话、检索、工具和用量记录。Spring AI 的价值在于组织这些能力;理解实际调用链,才能知道某条上下文是在哪一步加入的。 Spring AI 接入片段使用 Java 17
业务系统怎样划边界?模块、权限、审批与微服务取舍 把订单、审批和用户拆成三个服务,不会自动让系统更清楚。数据权限怎么贯穿查询,审批完成怎么与业务状态一致,拆分后事务怎么恢复,才是决定架构是否可维护的问题。 1. 先确定业务能力与拆分理由 先建立边界,再讨论进程数量与通信方式。 单体和微服务的差别不只
消息为什么会丢、会重?可靠投递、消费幂等与 Outbox 订单已经提交,消息没有发出;消息已经处理,确认却丢了。这两个窗口分别造成遗漏与重复。可靠消息设计要覆盖整条链路,而不是只打开 Broker 的一个开关。 1. 三段链路需要不同确认 生产、路由、持久保存和消费提交不是一个成功信号。 三段链路各
分布式锁到底保护了什么?租约、过期执行者与业务约束 进程拿到锁之后暂停很久,锁到期被其他进程获得,旧进程恢复后仍继续写数据。这个场景说明锁可以协调进入资格,却未必能阻止过期执行者产生副作用。 1. 等待时间、租约与续期分别控制什么 把锁获取与锁持有时间分开,再理解 watchdog。 等待时间与租约
Redis 缓存怎样保持可靠?失效、回填与一致性窗口 缓存失效时大量请求击中数据库,更新后又偶尔读到旧数据,看起来是两个故障,其实都与缓存的生命周期有关。先确认权威数据在哪里,再决定读、写、失效和恢复怎样协作。 1. 先分清未命中为什么发生 穿透、热点失效和大范围失效需要不同处理。 三种问题的差别