3.0 KiB
3.0 KiB
RAG 知识库
对齐 plan.md §8:导入切块 → 混合嵌入 → 带出处检索 → 可选 LLM 综合。
管线
-
导入(
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 确认卡)。 -
嵌入(
server/knowledge/embedding.py)EmbeddingProvider:local(sentence-transformers)→api(OpenAI 兼容)→none(仅 bigram)。 向量落盘server/data/embeddings.json(或APS_EMBEDDINGS_PATH)。 -
检索(
server/knowledge/retrieval.py)hybrid_search:α·vector + β·bigram+ 标签/标题加成;min_score未命中返回空(不编造)。 -
生成(
workflow·knowledge.query) top-k 上下文 →providers.chat_text综合;失败或无密钥 → 吐最相关原文。回答须带 标题+版本 出处;UIevidence块列出命中。
Skill 消费与知识管理(M-E)
POST /api/rag/query:{query, topK, kinds?, tags?, apiKey}→ 命中 chunk + 出处。 鉴权:APS_RAG_API_KEY全量放行,或匹配已启用 skill 的auth,并按其 manifestragScopes过滤可见 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 |