aps-agent/docs/architecture/rag.md

53 lines
3.0 KiB
Markdown
Raw Permalink 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.

# 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 |