Projects / myrag
CASE 05 / RAG
myrag
财务处知识库 — 文档管理与 RAG 问答
- 角色
- 独立设计与实现
- 时间
- 2026
- 状态
- 进行中
Context
业务侧需要可治理的知识库:文档入库、权限分级、可引用的问答,而不是单机脚本检索。目标场景在仓库业务口径中定义为财务处知识库(见上游 docs/business.md)。
Role & Scope
独立搭建 pnpm monorepo 与 docker-compose 全栈:packages/shared、apps/server、apps/web、apps/e2e。
Approach
- 契约先行:shared zod schema → OpenAPI/Scalar → 前端
hc<AppType>,减少手写 DTO。 - 检索可解释:向量召回后 BM25 混合、过滤、去重、MMR 与上下文预算(
RagRetriever)。 - 无状态化后端:任务与取消防到 Redis,便于水平扩展。
- RBAC 真源文档化:
docs/business.md先改规则再改代码。
Implementation
packages/shared zod 契约 · 常量 · SSE 类型
apps/server Hono · Drizzle/PG · Qdrant · Redis · MinIO · RAG 模块
apps/web React · antd · zustand · react-query
apps/e2e Playwright
RAG 问答支持同步与 SSE;匿名问答与登录会话分流(匿名结果可短时暂存)。上传含单文件/批量/分片。测试:vitest + e2e + scripts/smoke.ts + scripts/mock-llm.ts。
Outcome
- 一条
docker compose up可拉起依赖与服务(以仓库 compose 为准)。 - 权限矩阵与公开接口在业务文档与中间件中对齐。
- 作为全栈 / RAG 工程能力的主证据(不是 Java
z-ph/RAG仓库)。
Learnings
RAG 系统的可信度来自 引用、权限与可运维管道;模型本身只是链路中的一环。