1. 页面概览

RAG 配置页(路由 /admin/rag)是 AIP 管理后台面向管理员的 RAG(检索增强生成)链路配置台。它包含三块能力:通道配置(metadata/knowledge/history/fewshot 四通道的启用开关与权重,启用通道权重合计应约等于 100%,可自动归一化)、索引重建(按数据源或全量重建元数据向量索引,展示 data_source/items/indexed/failed/degraded/collection 真实字段 + 前端秒表等待反馈)、检索测试(内嵌 RagRetrievePage 复用检索交互)。用于调整 RAG 多路召回权重、维护索引与调试检索链路。所有请求走 aipClient(/aip-api/v1 → AIP 18080),后端未就绪时优雅提示不白屏。

一句话总结:本页是 RAG 链路的「通道权重 + 索引维护 + 检索调试」控制台,四通道加权融合的入口在此配置。

2. 访问入口

3. 界面布局

+--------------------------------------------------------------+
| RAG 配置                                      [刷新]           |
| 通道配置(启用通道权重合计 X%):                                 |
|   表格:通道(label+name)|说明|启用(switch)|权重(%)[清零]        |
|   提示:权重精度 0.05(对应 5%)… [自动归一化] [保存配置]         |
| 索引重建:数据源[select](可选,为空则重建全部) [重建索引]        |
|   结果 chip:data_source | items | indexed | failed | degraded | collection |
|   (重建中按钮显示 spinner + 已用 Ns,防重复点击)                |
| 检索测试(调试 RAG 链路):内嵌 RagRetrievePage(embedded 模式) |
+--------------------------------------------------------------+

各板块职责:

4. 交互元素

控件位置含义与作用
刷新页面头部并行刷新通道配置与数据源下拉,加载中禁用
启用开关通道表格启用列勾选/取消通道启用,停用通道的权重输入禁用并强制清零
权重(%)输入通道表格权重列0-100 数字输入(step=5,对应精度 0.05),失焦时 clamp 到 0-100;旁有「清零」按钮
自动归一化通道卡片底部按启用通道把权重归一化到合计 100%(取整漂移修正到最后一个启用通道),成功提示「已按启用通道归一化权重(合计 100%)」
保存配置通道卡片底部校验至少启用一个通道;若启用权重合计与 100% 相差超 0.5%,confirm「是否先归一化为 100% 再保存?」,然后 PUT /rag/channels
重建索引索引重建卡片POST /rag/index/rebuild,可带 data_source_id;空选择为全量重建。已任务化(D3):200 快路径展示 data_source/items/indexed/failed/degraded/collection(含 task_id);202 则转任务轮询——每 1.5s GET /tasks/:id,展示 task_id/status/progress/进度条/message,success 时用任务 result 渲染结果 chips,failed/cancelled 明确报错。按钮期间禁用并显示 spinner + 已用秒数,避免重复点击

次要控件:通道行内「清零」按钮;重建结果区 message 展示;内嵌检索测试页的交互见 RagRetrievePage。

重建已任务化(D3,2026-09-17;原「无进度条」后端缺口闭环):重建端点 POST /rag/index/rebuild 经平台异步任务系统执行(task_type=rag_index_rebuild,执行器 nlq.RAGRebuildRunner,实现 nlq/rag_task.go)——等待窗口 15s 内完成 → 200 返回原结果对象 + task_id;超时 → 202 {code:0,data:{task_id,status,type}},任务在后台继续跑,前端经既有 GET /api/v1/tasks/:id(platform/task/rest.go:27-31,接线 server/server.go protected 组)轮询 progress/message,success 时 result 即原结果结构。任务管理器未装配或提交失败时后端降级为同步直执行(响应与改造前一致,无 task_id)。

5. 后端关联

5.1 端点表

方法路径用途
GET/rag/channels通道配置列表(无记录落默认值),登录组(rag_handler.go:36-40)
PUT/rag/channels更新通道启用与权重,body {channels:[{name,enabled,weight}]},admin 组(rag_handler.go:41-45,62-65)
POST/rag/index/rebuild重建元数据索引,body 可带 data_source_id;200 快路径返回 {data_source,items,indexed,failed,degraded,collection,task_id},202 已受理返回 {task_id,status,type}(前端转轮询),admin 组(rag_handler.go:44、rag_task.go)
GET/tasks/:id任务进度/结果查询(轮询用),登录组(platform/task/rest.go:104-111)
POST/rag/retrieve检索(由内嵌 RagRetrievePage 使用),登录组(rag_handler.go:38)

5.2 关键机制

6. 权限与安全

7. 常见问题与排错

8. 已知缺陷与边界

项说明
通道不可增删四通道为固定枚举,页面仅可调整启用与权重
归一化取整权重归一化按百分比取整,末位通道吸收漂移,多次保存可能略有微差
重建无进度条(已于 2026-09-17 闭环)重建已任务化(D3):15s 快路径返回 200 + task_id,超时返回 202 并由前端经 GET /api/v1/tasks/:id 轮询 progress/message 展示服务端进度条;执行器注册早于 taskMgr.Restore,重启后 queued 任务可重派
重建结果字段(已于 2026-09-13 修正)后端返回 {data_source,items,indexed,failed,degraded,collection}(nlq/rag.go:1286-1293),无 item_count;此前前端误读 item_count 恒为空,现已改为真实字段展示
检索测试独立组件内嵌 RagRetrievePage(embedded 模式),与独立 /rag-test 页行为一致但不共享页面状态