feat: prepare RAG evidence and compatible chat requests #17

Closed
Kronecker wants to merge 2 commits from kronecker/feat/backend-rag-context AGit into dev
Collaborator

T08 在生成模型尚未选择时,先固定证据、上下文和 OpenAI 兼容 Chat Completions 契约。现有检索结果可复核,但没有组装请求、保留引用和处理不足资料的独立边界;本改动补齐这一准备阶段,实际生成模型接入继续延期。

范围

  • 从已合入 #14/#15/#16 的最新 dev 创建 feat/backend-rag-context,无待审叠加依赖。Refs #5 的前后端代码已合入,浏览器实际验收仍待交接;独立 T08 Issue 尚待补建。
  • 新增管理员 POST/GET /api/rag/contexts 及 UUID 详情,写入沿用 Cookie/Origin/CSRF。只接收服务端 chunk 检索记录,不接受任意提示词、正文、URL或凭据。
  • 在同一受锁事务中复核当前审核语料、文本/向量发布、空间、原文/出处与检索快照;过期或不一致返回409。选段按排名,完整原文保留;重叠、预算或条数排除有明确记录。
  • 保存证据/版本/来源、检索关联、提示词版本、组装配置、Chat Completions 请求体及哈希。无候选/全超预算不准备空证据模型请求,记录明确不足状态。
  • 纯协议构造 model/messages 与显式角色/输出预算选项;纯解析器处理单候选、finish_reason、refusal、引用及可选token用量。缺失/未知引用和畸形响应拒绝;截断不输出部分答案。引用通过仅为结构候选,不证明事实支持度。
  • 准备结果固定 prepared_request/model_called=false,现有 /api/chat 保持占位。本轮没有模型HTTP客户端、真实生成请求或默认模型,也没有创建/读取/提交API密钥。字符预算不冒充真实token限制。
  • 前端调用层同步。另以独立 fix 提交补齐已合入 #16 认证页面缺失的 vue-router 4 依赖/锁记录,保留其他依赖版本及平台信息。

验证

  • backend/.venv/bin/python -m pytest -q backend/tests:224 passed, 1 skipped。
  • 新增43项上下文/协议测试及1项迁移降级验证,覆盖原文/出处、预算/重叠、失效或损坏快照、空间和发布切换、Cookie/CSRF/角色、数据库失败回滚、纯兼容响应解析,以及默认生命周期真实HTTP重启后的准备快照/历史一致。
  • skip 为既有显式启用的真实 Embedding 用例,本轮未重跑该模型专项,不把旧结果或合成响应当作生成模型测试。
  • ruff check、ruff format --check、git diff --check、frontend npm run build 通过。

数据库、回滚与交接

新增0007_rag_contexts,外键关联检索记录及创建账号。备份后先 alembic upgrade head 再启动;新后端要求该版本。

配合旧后端可备份后 alembic downgrade 0006_vectors,仅删除新增准备快照表,保留知识、用户、文本/向量及检索历史;快照恢复依赖备份。历史请求仅表示当时状态,未来实际发送须再次复核当前依据/版本及所选模型token预算。

接口、请求字段、选段规则、兼容子集及模型延期边界见 docs/RAG_CONTEXT_API.md。Docker、浏览器真实联调、生成模型兼容/质量与核验领域实验仍待后续验收。所有测试资料均为合成,不声称真实模型回答、领域分数或费用。请按团队权限审阅;本阶段合入dev后再继续下一项后端任务。

T08 在生成模型尚未选择时,先固定证据、上下文和 OpenAI 兼容 Chat Completions 契约。现有检索结果可复核,但没有组装请求、保留引用和处理不足资料的独立边界;本改动补齐这一准备阶段,实际生成模型接入继续延期。 ## 范围 - 从已合入 #14/#15/#16 的最新 dev 创建 feat/backend-rag-context,无待审叠加依赖。Refs #5 的前后端代码已合入,浏览器实际验收仍待交接;独立 T08 Issue 尚待补建。 - 新增管理员 POST/GET /api/rag/contexts 及 UUID 详情,写入沿用 Cookie/Origin/CSRF。只接收服务端 chunk 检索记录,不接受任意提示词、正文、URL或凭据。 - 在同一受锁事务中复核当前审核语料、文本/向量发布、空间、原文/出处与检索快照;过期或不一致返回409。选段按排名,完整原文保留;重叠、预算或条数排除有明确记录。 - 保存证据/版本/来源、检索关联、提示词版本、组装配置、Chat Completions 请求体及哈希。无候选/全超预算不准备空证据模型请求,记录明确不足状态。 - 纯协议构造 model/messages 与显式角色/输出预算选项;纯解析器处理单候选、finish_reason、refusal、引用及可选token用量。缺失/未知引用和畸形响应拒绝;截断不输出部分答案。引用通过仅为结构候选,不证明事实支持度。 - 准备结果固定 prepared_request/model_called=false,现有 /api/chat 保持占位。本轮没有模型HTTP客户端、真实生成请求或默认模型,也没有创建/读取/提交API密钥。字符预算不冒充真实token限制。 - 前端调用层同步。另以独立 fix 提交补齐已合入 #16 认证页面缺失的 vue-router 4 依赖/锁记录,保留其他依赖版本及平台信息。 ## 验证 - backend/.venv/bin/python -m pytest -q backend/tests:224 passed, 1 skipped。 - 新增43项上下文/协议测试及1项迁移降级验证,覆盖原文/出处、预算/重叠、失效或损坏快照、空间和发布切换、Cookie/CSRF/角色、数据库失败回滚、纯兼容响应解析,以及默认生命周期真实HTTP重启后的准备快照/历史一致。 - skip 为既有显式启用的真实 Embedding 用例,本轮未重跑该模型专项,不把旧结果或合成响应当作生成模型测试。 - ruff check、ruff format --check、git diff --check、frontend npm run build 通过。 ## 数据库、回滚与交接 新增0007_rag_contexts,外键关联检索记录及创建账号。备份后先 alembic upgrade head 再启动;新后端要求该版本。 配合旧后端可备份后 alembic downgrade 0006_vectors,仅删除新增准备快照表,保留知识、用户、文本/向量及检索历史;快照恢复依赖备份。历史请求仅表示当时状态,未来实际发送须再次复核当前依据/版本及所选模型token预算。 接口、请求字段、选段规则、兼容子集及模型延期边界见 docs/RAG_CONTEXT_API.md。Docker、浏览器真实联调、生成模型兼容/质量与核验领域实验仍待后续验收。所有测试资料均为合成,不声称真实模型回答、领域分数或费用。请按团队权限审阅;本阶段合入dev后再继续下一项后端任务。
Kronecker added 2 commits 2026-10-16 18:12:51 +08:00
saint closed this pull request 2026-10-16 22:52:36 +08:00

Pull request closed

Please reopen this pull request to perform a merge.
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: saint/border-red-post-nalati#17