53 lines
3.0 KiB
Markdown
53 lines
3.0 KiB
Markdown
|
|
# 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 |
|