南京,中国
项目2026年5月6日

Ksmart

Ksmart 面向企业“文档多、检索难、权限复杂、问答体验差”的场景,基于 Spring Boot 构建智能知识库平台。项目目标不是做一个简单聊天页面,而是把文件上传、文档解析、索引构建、混合检索、权限隔离和流式问答串成完整后端链路。 简历中只保留了核心职责,网站里补充工程细节,方便面试时展开 RAG 系统从文件入库到答案生成的全过程。 我负责后端核心流程设计与实现,包括文件上传与断点续传、异步文档处理、文本切分、Embedding 与索引写入、BM25 + 向量检索 + Rerank 混合召回、RBAC 权限控制和 SSE 流式输出。
  • 文件入口 支持多格式文档上传,使用 MinIO 存储原始文件和解析产物,避免大文件直接压垮业务服务。
  • 异步流水线 通过 Kafka 解耦上传、解析、切分、Embedding 和索引写入,让耗时任务从同步请求链路中拆出去。
  • 断点续传 针对弱网和大文件场景,用 Redis Bitmap 维护分片状态,减少重复上传成本。
  • 文档解析 使用 Tika 解析多格式文档,并通过 text splitting 将长文本拆成适合检索的语义片段。
  • 混合检索 基于 Elasticsearch 8 构建 BM25 关键词检索和向量检索,再通过 Rerank 提升最终召回质量。
  • 权限与问答 使用 Spring Security、JWT、RBAC 做用户、知识库和文档级权限控制,通过 SSE 返回大模型流式回答。
  • 将上传链路和解析链路拆开,避免用户上传大文件时同步等待解析、切分和索引构建。
  • 为分片上传设计状态记录,服务端能判断哪些分片已完成、哪些需要重传,提高弱网环境下的可用性。
  • 混合召回时同时保留关键词匹配和语义匹配,避免纯向量检索在专业名词、编号、制度条款上召回不稳定。
  • 在问答前做权限过滤,保证用户只能检索和引用自己有权限访问的知识库内容。
  • 使用 SSE 做流式输出,让前端能边生成边展示,减少长回答带来的等待感。
Java、Spring Boot 3.4、Spring AI、Elasticsearch 8、Kafka、Redis、MinIO、Tika、Spring Security、JWT、SSE 这个项目适合展开聊 RAG 工程化:文档入库为什么要异步、切分粒度如何影响召回、BM25 和向量检索如何互补、权限过滤应该放在哪个阶段,以及流式回答如何改善产品体验。

相关项目

金融助手长期记忆服务

面向投顾类 AI Agent 的结构化长期记忆服务,基于 mem0 fork 改造,支持金融记忆写入、召回、过滤、审计与回放。

MYDB

从零实现的轻量级关系型数据库,覆盖页式存储、缓存管理、B+ 树索引、WAL、事务隔离、SQL 解析和 C/S 通信。