Projects / myrag

CASE 05 / RAG

myrag

财务处知识库 — 文档管理与 RAG 问答

角色
独立设计与实现
时间
2026
状态
进行中
TypeScriptHonoDrizzlePostgreSQLQdrantRedisMinIOReactantdLangChain.jsPlaywright

Context

业务侧需要可治理的知识库:文档入库、权限分级、可引用的问答,而不是单机脚本检索。目标场景在仓库业务口径中定义为财务处知识库(见上游 docs/business.md)。

Role & Scope

独立搭建 pnpm monorepo 与 docker-compose 全栈:packages/sharedapps/serverapps/webapps/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 系统的可信度来自 引用、权限与可运维管道;模型本身只是链路中的一环。