aps-agent/docs/architecture/rag.md

53 lines
3.0 KiB
Markdown
Raw Permalink Normal View History

# RAG 知识库
> 对齐 [plan.md §8](../../plan.md):导入切块 → 混合嵌入 → 带出处检索 → 可选 LLM 综合。
## 管线
1. **导入**(`server/knowledge/ingest.py`)
PDF(`pdfplumber`)/ docx(`python-docx`)/ md·txt / xlsx → 按标题/段落切块(约 500 字、重叠 50)→ `KnowledgeStore.add_with_chunks`。
入口:口令「导入知识文档 …」、`POST /api/knowledge/import`、`POST /api/knowledge/import/upload`(**P2 确认卡**)。
2. **嵌入**(`server/knowledge/embedding.py`)
`EmbeddingProvider`:`local`(sentence-transformers)→ `api`(OpenAI 兼容)→ `none`(仅 bigram)。
向量落盘 `server/data/embeddings.json`(或 `APS_EMBEDDINGS_PATH`)。
3. **检索**(`server/knowledge/retrieval.py`)
`hybrid_search`:`α·vector + β·bigram` + 标签/标题加成;`min_score` 未命中返回空(不编造)。
4. **生成**(`workflow` · `knowledge.query`)
top-k 上下文 → `providers.chat_text` 综合;失败或无密钥 → 吐最相关原文。回答须带 **标题+版本** 出处;UI `evidence` 块列出命中。
## Skill 消费与知识管理(M-E)
- **`POST /api/rag/query`**:`{query, topK, kinds?, tags?, apiKey}` → 命中 chunk + 出处。
鉴权:`APS_RAG_API_KEY` 全量放行,或匹配已启用 skill 的 `auth`,并按其 manifest
`ragScopes` 过滤可见 kind/tags。经 `harness.guard("rag.query")` 审计。
- **Problem 注入**:`world_to_flex_problem(..., include_knowledge=True)` 会把订单产品相关的
知识命中摘要注入 `meta.knowledgeRefs`,外部算法拿到约束背景。
- **行业工艺模板库**(`server/knowledge/routing_templates.py`):机加工 16 类文本知识同步产出
结构化 `routing_templates`(车/铣/钻/磨/装配…,每步含推荐工时区间与设备类型),
与知识资产互相引用(assetId ↔ template)。`GET /api/templates`、`/recommend?q=产品名`、
`POST /api/templates/apply`(**P2** 实例化为产品路线,工时标「模板」)。
- **索引自动化**:`GET /api/knowledge/index/status`(后端/已索引数/降级说明)、
`POST /api/knowledge/index/rebuild`(P1 重建 embeddings.json)。
- **知识管理页**:治理台「知识平台」——资产列表/全文查看/检索调试/文档上传(P2)/
模板库/索引状态(`apps/web/src/knowledge/KnowledgePanel.tsx`)。
## 硬规则
- 回答必须带来源文档标题与版本号(§8.1/§8.2)。
- 不把 `demand/` 大 PDF 提交进 Git;仅运行时导入解析结果。
- 无向量后端时系统仍可用(bigram 离线铁律)。
## 环境变量
| 变量 | 含义 |
| --- | --- |
| `EMBEDDING_PROVIDER` | `auto` / `local` / `api` / `off` |
| `EMBEDDING_API_KEY` / `LLM_API_KEY` | API 嵌入密钥 |
| `EMBEDDING_BASE_URL` / `LLM_BASE_URL` | 兼容端点 |
| `EMBEDDING_MODEL` | 默认 `text-embedding-3-small` |
| `APS_KNOWLEDGE_PATH` | 知识资产 JSON |
| `APS_EMBEDDINGS_PATH` | 向量仓 JSON |