# ════════════════════════════════════════════════════════════ # qaagent67lite — 轻量级知识问答智能体 (BM25 + Wiki) # ════════════════════════════════════════════════════════════ # # 适用场景: 资料少 (< 500 文档) 的领域,如财务、清洁、行政等 # 与 qaagent67lambda 的区别: # lambda: 4 路并行 (BM25+Vector+Graph+Wiki) → 重量级,需要 embedding 服务 # lite: 2 路融合 (BM25+Wiki) → 轻量级,纯 CPU,无外部依赖 # # Lambda: # λ = Classify(q) # >> Par(BM25(q), WikiRead(q)) # >> SimpleMerge(results) # >> LLM(context, question) # # 用法: # python3 -m agentpaas agent create --name lite-qa \ # --config agentexample/qaagent67lite/agent-config.yml # python3 -m agentpaas chat lite-qa # # 部署: # 1. 复制本目录到目标机器 # 2. 创建 instance.yml 指定 knowledge.baseDir # 3. 将原始文件放入 {baseDir}/raw/ # 4. 运行 python scripts/setup.py (一键: 提取→索引→Wiki编译) # 5. agentpaas agent create + chat agentId: qaagent67lite-v1 name: lite-qa description: > 轻量级知识问答智能体。BM25 关键词检索 + LLM Wiki 编译知识, 无需向量数据库或 embedding 服务。适合小规模文档集 (< 500 个文件)。 type: react model: provider: claude-code name: sonnet temperature: 0.3 maxTokens: 4096 fallback: - anthropic/claude-sonnet-4-20250514 - ollama/qwen2.5:32b - dashscope/qwen-max systemPrompt: | 你是一个精准的领域知识问答助手 (lite-qa)。 ## 工作原理 你有两种知识来源: 1. **BM25 检索** — 从原始文档中按关键词搜索相关片段 2. **Wiki 编译知识** — LLM 预先编译的结构化 wiki 页面 ## 工具 **文档管理**: - IngestFiles: 导入文件到知识库 (提取文本 + 建 BM25 索引) - WikiIngest: 将文件编译到 Wiki (LLM 理解 → 写 wiki 页面) - ListKnowledge: 列出已索引的文件 - WikiStatus: 查看 Wiki 统计和健康评分 **查询**: - QueryKnowledge: BM25 关键词检索 + LLM 回答 - WikiQuery: 从 Wiki 编译知识回答 (更精准) **维护**: - WikiLint: 检查 Wiki 健康 (矛盾/孤页/过期) - WikiGrow: 主动生长 Wiki (发现缺失概念) **辅助**: - ReadFile, ListFiles, SearchContent, Bash ## 工作流程 - 用户问知识问题 → 先 WikiQuery 查编译知识 → 若不够再 QueryKnowledge 补充 - 用户要导入文件 → IngestFiles (BM25索引) + WikiIngest (Wiki编译) 都做 - 用户要维护 → WikiLint + WikiGrow ## 回答规则 1. 只基于检索到的内容回答,不编造 2. 每个要点标注来源 3. 存在矛盾时说明 4. 无相关信息时明确告知 react: maxSteps: 20 observationEnabled: true toolTimeout: 120 thinkTimeout: 300 verbose: true memory: enabled: true strategy: local size: 50 ttl: 14400 mcp: localTools: # 文档管理 - IngestFiles - ListKnowledge - RemoveKnowledge # Wiki 知识编译 (v2) - WikiIngest - WikiQuery - WikiLint - WikiSearch - WikiStatus - WikiGrow # BM25 检索 - QueryKnowledge # 辅助 - ReadFile - ListFiles - SearchContent - Bash # 完成 - terminate policy: mode: auto guard: dangerousCommandBlock: true highRiskConfirmation: false maxOutputLength: 50000 retry: 0 fallback: last persona: name: lite-qa style: helpful-precise template: qaagent runtime: engine: cek costBudget: 0.30 maxSteps: 10000 # ═══ 知识库配置 ═══ # 部署时用 instance.yml 覆盖这些路径 knowledge: baseDir: ./knowledge rawDir: ./knowledge/raw processedDir: ./knowledge/processed indexFile: ./knowledge/rag_index.json keywordFile: ./knowledge/rag_index.keywords.json # ═══ RAG 配置 (仅 BM25,无 Vector) ═══ rag: enabled: true chunkSize: 512 chunkOverlap: 64 chunkSeparator: "\n\n" topK: 8 # ═══ 检索配置 (Lite: BM25 + Wiki only) ═══ retrieval: mode: lite skills: bm25: enabled: true topK: 10 embedding: enabled: false # ← 关掉 Vector rerank: enabled: false # ← 关掉 Rerank graph: enabled: false # ← 关掉 Graph wiki: enabled: true # 简化的 weight profiles (只有 bm25 和 wiki) weights: fact: {bm25: 1.0, wiki: 0.3} compare: {bm25: 0.5, wiki: 0.9} process: {bm25: 0.7, wiki: 0.8} person: {bm25: 0.9, wiki: 0.5} temporal: {bm25: 1.0, wiki: 0.2} default: {bm25: 0.8, wiki: 0.6} orchestration: classifier: fastClassify: true llmFallback: false # lite 模式不用 LLM 分类,省 token rrfK: 60 parallel: false # 只有 2 路,不需要并行 # ═══ Wiki 配置 ═══ wiki: dir: ./wiki relationsFile: ./wiki/relations.json