Files
AIclinicalresearch/docs/03-业务模块/ADMIN-运营管理端/06-开发记录/2026-01-28_Prompt知识库集成功能完成.md
HaHafeng aaa29ea9d3 feat(admin): Implement Prompt knowledge base integration
Features:

- PromptService enhancement: enhanceWithKnowledge(), loadFullKnowledge(), ragSearch()

- FULL mode: Load entire knowledge base content

- RAG mode: Vector search based on user query

- Knowledge config API: PUT /:code/knowledge-config

- Test render with knowledge injection support

- Frontend: Knowledge config UI in Prompt editor

Bug fixes:

- Fix knowledge config not returned in getPromptDetail

- Fix publish button 400 error (empty request body)

- Fix cache not invalidated after publish

- Add detailed logging for debugging

Documentation:

- Add development record 2026-01-28

- Update ADMIN module status to Phase 4.6

- Update system status document to v4.5

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-01 20:26:20 +08:00

151 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 2026-01-28 Prompt 知识库集成功能完成
## 开发概述
完成了 Prompt 管理系统与知识库的集成,支持在 Prompt 中动态引用系统知识库内容,实现知识增强的 AI 对话能力。
---
## 功能清单
### 1. PromptService 知识库增强
**后端核心改造** (`backend/src/common/prompt/`)
| 文件 | 改动 | 说明 |
|------|------|------|
| `prompt.types.ts` | 新增类型 | `KnowledgeConfig`, `InjectionMode` 类型定义 |
| `prompt.service.ts` | 核心逻辑 | `enhanceWithKnowledge()`, `loadFullKnowledge()`, `ragSearch()` |
| `prompt.controller.ts` | API 增强 | `saveKnowledgeConfig`, `testRender` 支持知识库 |
| `prompt.routes.ts` | 路由 | `PUT /:code/knowledge-config` |
**知识库注入模式**
- **FULL 模式**:全量加载知识库内容(适合小型核心知识库)
- **RAG 模式**:基于用户查询进行向量检索(适合大型知识库)
### 2. 前端配置界面
**Prompt 编辑器增强** (`frontend-v2/src/pages/admin/`)
| 功能 | 说明 |
|------|------|
| 知识库增强开关 | 启用/禁用知识库注入 |
| 知识库选择 | 多选系统知识库(下拉列表) |
| 注入模式选择 | FULL / RAG 模式 |
| 目标变量配置 | 指定注入到哪个模板变量(默认 `context` |
| RAG 参数配置 | `top_k`, `min_score` |
| FULL 参数配置 | `max_tokens` 限制 |
| 测试渲染增强 | 预览知识库注入效果 |
### 3. Bug 修复
| 问题 | 原因 | 解决方案 |
|------|------|---------|
| 测试渲染不注入知识库 | `testRender` API 不支持知识库增强 | 添加 `getEnhancedVariables()` 公共方法 |
| 知识库配置不保存 | `getPromptDetail` 返回缺少 `knowledge_config` | 添加字段到返回数据 |
| 发布按钮 400 错误 | POST 请求体问题 | 添加空对象作为请求体 |
| 发布后第一次不生效 | 脚本发布未清除缓存 | 使用前端发布,正确调用 `invalidateCache()` |
---
## 代码统计
| 类型 | 文件数 | 新增行数 | 修改行数 |
|------|--------|---------|---------|
| 后端 TypeScript | 4 | ~200 | ~50 |
| 前端 TypeScript | 2 | ~150 | ~30 |
| 测试脚本 | 5 | ~500 | - |
---
## 技术亮点
### 1. 知识库增强流程
```
promptService.get(code, variables, { userId, userQuery })
获取 template.knowledge_config
enhanceWithKnowledge()
┌─────────────────────────────────────┐
│ FULL 模式 │ RAG 模式 │
│ loadFullKnowledge()│ ragSearch() │
│ 加载全部分块 │ 向量检索 top_k │
└─────────────────────────────────────┘
注入到 variables.context
render(template, enhancedVariables)
```
### 2. 配置数据结构
```typescript
interface KnowledgeConfig {
enabled: boolean; // 是否启用
kb_codes: string[]; // 知识库代码列表
injection_mode: 'FULL' | 'RAG'; // 注入模式
target_variable: string; // 目标变量名(默认 context
// RAG 模式参数
top_k?: number; // 返回结果数
min_score?: number; // 最低相似度
// FULL 模式参数
max_tokens?: number; // Token 数限制
}
```
### 3. 版本发布与缓存
- 发布时自动清除版本缓存
- 知识库配置存储在 `prompt_templates.knowledge_config` (JSONB)
- 每次请求从数据库读取最新配置(无配置缓存)
---
## 使用指南
### 1. 配置知识库增强
1. 进入 **运营管理端 → Prompt管理**
2. 选择需要增强的 Prompt
3. 右侧面板 → **📚 知识库增强**
4. 开启开关,选择知识库
5. 点击 **保存配置**
### 2. 在 Prompt 中使用
在 Prompt 模板中使用 `{{context}}` 变量:
```
你是一个专业的临床研究方法学专家。
【参考知识库】
{{context}}
请基于以上参考资料回答用户问题。
```
### 3. 测试验证
1. 点击 **测试渲染** 预览效果
2. 开启 **调试模式** 在业务端测试
3. 确认无误后 **发布** 到生产
---
## 后续优化建议
1. **配置缓存**:知识库配置可考虑添加短期缓存
2. **RAG 优化**:支持更多检索参数(如 rerank
3. **批量配置**:支持批量为多个 Prompt 配置知识库
4. **使用统计**:记录知识库引用次数和效果反馈
---
## 相关文档
- [系统知识库管理功能完成](./2026-01-27_系统知识库管理功能完成.md)
- [Prompt 知识库集成开发计划](../04-开发计划/05-Prompt知识库集成开发计划.md)