222 lines
4.1 KiB
Markdown
222 lines
4.1 KiB
Markdown
|
|
# LLM Wiki 知识库架构
|
|||
|
|
|
|||
|
|
## 1. 定位
|
|||
|
|
|
|||
|
|
LLM Wiki 不是简单的文件库。
|
|||
|
|
|
|||
|
|
它是给 Agent 使用的知识底座,负责把制度、FAQ、审批经验、规则说明转成可检索、可引用、可版本化的知识。
|
|||
|
|
|
|||
|
|
## 2. 总体链路
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
文档上传
|
|||
|
|
↓
|
|||
|
|
格式解析
|
|||
|
|
↓
|
|||
|
|
正文抽取
|
|||
|
|
↓
|
|||
|
|
分块 Chunking
|
|||
|
|
↓
|
|||
|
|
元数据标注
|
|||
|
|
↓
|
|||
|
|
向量索引
|
|||
|
|
↓
|
|||
|
|
条款抽取
|
|||
|
|
↓
|
|||
|
|
知识候选
|
|||
|
|
↓
|
|||
|
|
人工审核
|
|||
|
|
↓
|
|||
|
|
发布 Wiki
|
|||
|
|
↓
|
|||
|
|
Agent 检索引用
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 2.1 目录约束
|
|||
|
|
|
|||
|
|
LLM Wiki 解析产物不能与原始制度文件混放。
|
|||
|
|
|
|||
|
|
推荐目录:
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
/app/server/storage/knowledge/<folder>/ 原始知识文件
|
|||
|
|
/app/server/storage/knowledge/.llm_wiki/ 解析产物根目录
|
|||
|
|
/app/server/storage/knowledge/.llm_wiki/documents/<document_id>/
|
|||
|
|
document.json
|
|||
|
|
text.md
|
|||
|
|
chunks.json
|
|||
|
|
clauses.json
|
|||
|
|
knowledge_candidates.json
|
|||
|
|
rule_candidates.json
|
|||
|
|
/app/server/storage/knowledge/.llm_wiki/index.json
|
|||
|
|
/app/server/storage/knowledge/.llm_wiki/sync_runs.json
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
约束:
|
|||
|
|
|
|||
|
|
- 原始文件目录只存原件,不存解析碎片。
|
|||
|
|
- LLM Wiki 目录只存结构化产物,不反向覆盖原件。
|
|||
|
|
- 所有解析产物必须能按 `document_id` 回溯到原始文件。
|
|||
|
|
|
|||
|
|
## 3. 知识类型
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
policy_document
|
|||
|
|
faq
|
|||
|
|
rule_explanation
|
|||
|
|
approval_case
|
|||
|
|
risk_case
|
|||
|
|
operation_manual
|
|||
|
|
system_notice
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 4. 知识块结构
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"chunk_id": "",
|
|||
|
|
"document_id": "",
|
|||
|
|
"title": "",
|
|||
|
|
"content": "",
|
|||
|
|
"domain": "reimbursement",
|
|||
|
|
"scenario": "travel_reimbursement",
|
|||
|
|
"tags": ["差旅", "住宿标准"],
|
|||
|
|
"effective_date": "",
|
|||
|
|
"version": "v1.0",
|
|||
|
|
"source_page": 4,
|
|||
|
|
"embedding_id": "",
|
|||
|
|
"status": "published"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 5. 条款抽取
|
|||
|
|
|
|||
|
|
Hermes 可以从制度文档中抽取条款候选。
|
|||
|
|
|
|||
|
|
示例:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"clause_type": "amount_limit",
|
|||
|
|
"domain": "reimbursement",
|
|||
|
|
"scenario": "travel_reimbursement",
|
|||
|
|
"condition": {
|
|||
|
|
"city_tier": "一线城市",
|
|||
|
|
"employee_grade": "P5"
|
|||
|
|
},
|
|||
|
|
"limit": {
|
|||
|
|
"amount": 800,
|
|||
|
|
"currency": "CNY",
|
|||
|
|
"period": "night"
|
|||
|
|
},
|
|||
|
|
"source": "差旅制度 2026 第 4 页"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
该结果不直接变成规则,先进入规则候选池。
|
|||
|
|
|
|||
|
|
## 5.1 增量形成策略
|
|||
|
|
|
|||
|
|
LLM Wiki 不应按天无脑全量重建。
|
|||
|
|
|
|||
|
|
每个文档都应维护签名:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"document_id": "",
|
|||
|
|
"original_name": "",
|
|||
|
|
"stored_name": "",
|
|||
|
|
"sha256": "",
|
|||
|
|
"version_number": 1,
|
|||
|
|
"updated_at": ""
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
只有在以下任一条件发生时,才重建对应文档的 LLM Wiki:
|
|||
|
|
|
|||
|
|
- `original_name` 变更。
|
|||
|
|
- `stored_name` 变更。
|
|||
|
|
- `sha256` 变更。
|
|||
|
|
- `version_number` 变更。
|
|||
|
|
- `updated_at` 变更,视为人工修改。
|
|||
|
|
|
|||
|
|
如果以上均未变化:
|
|||
|
|
|
|||
|
|
- 本次文档状态应记为 `unchanged_skipped`。
|
|||
|
|
- 不重新抽取正文。
|
|||
|
|
- 不重新分块。
|
|||
|
|
- 不重新生成知识候选或规则候选。
|
|||
|
|
|
|||
|
|
## 6. Wiki 发布流程
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
草稿知识
|
|||
|
|
↓
|
|||
|
|
Hermes 生成候选
|
|||
|
|
↓
|
|||
|
|
知识管理员审核
|
|||
|
|
↓
|
|||
|
|
发布
|
|||
|
|
↓
|
|||
|
|
Agent 可检索
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 7. 与 User Agent 的关系
|
|||
|
|
|
|||
|
|
User Agent 用 Wiki:
|
|||
|
|
|
|||
|
|
- 回答制度问题。
|
|||
|
|
- 给风险解释提供条款依据。
|
|||
|
|
- 给审批意见生成引用。
|
|||
|
|
- 帮用户理解流程。
|
|||
|
|
|
|||
|
|
## 8. 与 Hermes 的关系
|
|||
|
|
|
|||
|
|
Hermes 用 Wiki:
|
|||
|
|
|
|||
|
|
- 每日知识候选生成。
|
|||
|
|
- 发现制度与规则不一致。
|
|||
|
|
- 生成规则优化建议。
|
|||
|
|
- 生成 FAQ 候选。
|
|||
|
|
|
|||
|
|
补充要求:
|
|||
|
|
|
|||
|
|
- Hermes 对制度文档的处理默认是增量同步,不是每日全量重建。
|
|||
|
|
- Hermes 应先检查知识库签名,再决定是否需要重建某个文档的 Wiki。
|
|||
|
|
- Hermes 形成的是候选与草稿,不是正式发布内容。
|
|||
|
|
|
|||
|
|
## 9. 数据模型建议
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
knowledge_documents
|
|||
|
|
knowledge_chunks
|
|||
|
|
knowledge_embeddings
|
|||
|
|
knowledge_candidates
|
|||
|
|
knowledge_reviews
|
|||
|
|
knowledge_versions
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
当前最小落地允许先以文件索引实现:
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
.llm_wiki/index.json
|
|||
|
|
.llm_wiki/sync_runs.json
|
|||
|
|
.llm_wiki/documents/<document_id>/document.json
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
后续再平滑迁移到数据库或向量库。
|
|||
|
|
|
|||
|
|
## 10. 开发阶段建议
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
Step 1: 文档上传和文件管理
|
|||
|
|
Step 2: 文本抽取和分块
|
|||
|
|
Step 3: 元数据标注
|
|||
|
|
Step 4: 向量索引
|
|||
|
|
Step 5: 知识检索 API
|
|||
|
|
Step 6: User Agent 问答引用
|
|||
|
|
Step 7: Hermes 知识候选生成
|
|||
|
|
Step 8: 人工审核发布
|
|||
|
|
Step 9: 条款抽取和规则候选
|
|||
|
|
```
|