项目概述
Enterprise RAG Assistant 是一个知识检索作品集 MVP,重点关注文档权限与版本时效性。项目使用合成语料,以便安全地展示实现。它探索检索和证据控制,并非可直接用于生产的服务或客户部署。
工程挑战
如果当前用户无权读取某个相关文本块,或该文本块属于非活动文档版本,它就不应成为合适的证据。同样,返回引用 ID 并不能证明答案中的主张可由引用文本推导得出。这些边界需要在检索、文档生命周期、来源解析和评估中明确体现。
架构
React/Vite 界面调用 Spring Boot 模块化单体应用。后端处理演示身份与 CSRF、文档摄取和版本激活、检索、可选答案生成、引用检查、评估和追踪。PostgreSQL 与 pgvector 保存文档元数据和向量。Ollama 提供本地嵌入;DeepSeek 生成能力可独立选择启用。
检索实现将受 ACL 约束的向量搜索、PostgreSQL 全文搜索和精确标识符搜索结合起来,并使用 Reciprocal Rank Fusion 合并排序。确定性证据门槛会在组装上下文前过滤较弱候选。新文档版本先暂存,索引完成后再以事务方式激活。引用来源查询会重新验证访问权限,而不信任之前签发的标识符。
关键设计决策
- 在 SQL 中授权候选检索。向量、全文和精确匹配检索路径会先应用权限和活动版本状态,再返回候选结果。
- 按排序名次融合,而非直接比较原始分数。向量距离、词法排序和精确匹配采用不同尺度;Reciprocal Rank Fusion 可合并排序而不假设这些数值可以直接比较。
- 先暂存,再激活版本。新版本索引不会立即替换旧版本;只有索引成功后才会激活。
- 将引用视为参考,而非证明。来源 ID 会经过验证和重新授权;实现不声称能够验证引用蕴含关系或生成答案忠实度。
- 控制离线评估范围。确定性测试评估检索、ACL 隔离、时效性、引用 ID 验证和证据充分性,不调用 LLM 来判定答案正确性。
实现与验证
仓库包含 Markdown/文本/可提取 PDF 摄取、合成文档、角色范围检索、文档管理、聊天与来源 API、评估运行、追踪 API 和 React 工作区。仓库中提供了三张截图。所检查主分支提交对应的 GitHub Actions 质量工作流最近一次可见运行已成功。README 记录了后端集成测试、前端测试与构建,以及 Playwright 浏览器工作流;这些仓库记录不同于本作品集网站刚刚执行的本地测试。
局限与后续工作
语料为合成数据。演示身份不是真实的身份验证系统,基于 SQL 的 ACL 也不是 PostgreSQL 行级安全策略。确定性证据阈值是启发式的,并针对小型合成语料校准。引用有效性不能证明主张蕴含关系,离线检索评估也不衡量生成答案的正确性。扫描 PDF 的 OCR、企业身份集成、分布式摄取和实时生成答案基准均不在当前实现范围内。
项目资源
验证说明
- 所检查主分支提交对应的 GitHub Actions 质量工作流最近一次可见运行已成功。
- README 记录了包含 63 个场景的确定性离线测试套件,并说明了后端 Testcontainers、前端和浏览器工作流检查。
- 仓库包含三张实际界面截图:知识工作区、评估工作区,以及带来源预览的聊天界面。
局限
- 使用合成文档和可选演示身份;不是生产身份或授权系统。
- 应用层 SQL ACL 谓词并非 PostgreSQL 行级安全策略。
- 证据门槛针对小型合成语料校准;引用不能证明事实蕴含关系或生成答案忠实度。
- 不包含扫描 PDF 的 OCR、企业身份提供商、分布式索引队列或实时生成答案基准。