DESIGN.md 3.8 KB

qaagent67lite — 轻量级知识问答智能体

BM25 + Wiki,无需向量数据库,适合小规模文档集

1. 定位

qaagent67lambda qaagent67lite qaagent67wiki
检索 4路 (BM25+Vector+Graph+Wiki) 2路 (BM25+Wiki) Wiki only
文档量 500+ < 500 任意
依赖 Embedding 服务 + 向量库 纯 CPU LLM only
部署 需要 GPU/NPU 任意机器 任意机器
场景 大规模专业问答 小规模轻量问答 知识编译
典型领域 海事法规、金融合规 财务制度、行政流程 任意

2. 架构

用户提问
    ↓
意图分类 (快速规则, 不用 LLM)
    ↓
┌─────────────────┐
│  BM25 关键词检索  │──→ 原始文档片段
│  (topK=10)       │
└─────────────────┘
         ↓
    SimpleMerge (RRF 融合)
         ↓
┌─────────────────┐
│  Wiki 编译知识    │──→ 结构化 wiki 页面
│  (实体优先搜索)   │
└─────────────────┘
         ↓
    LLM 回答 (标注来源)

Lambda 表达式

λ = Classify(q)
    >> Par(BM25(q), WikiRead(q))
    >> SimpleMerge(results)
    >> LLM(context, question)

3. 与 lambda 的区别

去掉的

组件 原因
Vector (embedding) 小文档集 BM25 已够用,省掉 embedding 服务依赖
Graph (知识图谱) 文档少时关系稀疏,图谱价值不大
Rerank (重排序) 2 路检索结果少,不需要重排
LLM 分类 用规则分类代替,省 token
并行检索 只有 2 路,串行即可

保留的

组件 说明
BM25 关键词检索,对事实/数据/人名类问题效果好
Wiki v2 编译知识,对综合/对比/流程类问题效果好
Wiki Lint + Grow 知识库维护和持续生长
Instance 机制 agent-config.yml + instance.yml 深度合并

权重策略

weights:
  fact:      {bm25: 1.0, wiki: 0.3}   # 事实问题以 BM25 为主
  compare:   {bm25: 0.5, wiki: 0.9}   # 对比问题以 Wiki 为主
  process:   {bm25: 0.7, wiki: 0.8}   # 流程问题两者均衡
  person:    {bm25: 0.9, wiki: 0.5}   # 找人以 BM25 为主
  temporal:  {bm25: 1.0, wiki: 0.2}   # 时效问题以 BM25 为主

4. 部署

一键部署

# 1. 创建实例配置
cd agentexample/qaagent67lite
cp scripts/instance.yml.template scripts/instance.yml
# 编辑 instance.yml,修改 baseDir 指向数据目录

# 2. 放入原始文件
cp /path/to/your/docs/* /your/knowledge/raw/

# 3. 一键索引 + Wiki 编译
python scripts/setup.py

# 4. 启动
python3 -m agentpaas agent create --name lite-qa \
  --config agentexample/qaagent67lite/agent-config.yml
python3 -m agentpaas chat lite-qa

setup.py 自动执行

Step 1: 提取文本 (PDF/Word → txt)
Step 2: 建 BM25 索引 (关键词 + 分块)
Step 3: Wiki 编译 (LLM 读 → 写 wiki 页面)
Step 4: 验证 (输出统计)

5. 适用领域示例

领域 文档量 典型问题
财务制度 50-200 "报销流程是什么?" "差旅标准多少?"
行政流程 30-100 "请假怎么审批?" "固定资产采购流程?"
产品手册 20-80 "XX 功能怎么用?" "故障如何排查?"
内部规范 50-150 "代码审查标准?" "安全合规要求?"

6. 文件清单

qaagent67lite/
├── agent-config.yml              # 主配置 (BM25+Wiki, 无 Vector/Graph)
├── DESIGN.md                     # 本文件
└── scripts/
    ├── setup.py                  # 一键部署: 提取→索引→Wiki编译
    └── instance.yml.template     # 实例配置模板