aps-agent/docs/architecture/rag.md

3.0 KiB
Raw Permalink Blame History

RAG 知识库

对齐 plan.md §8:导入切块 → 混合嵌入 → 带出处检索 → 可选 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