1. 项目启动:需求定义与数据盘点

第一步:明确机器人回答哪些问题(决定知识库范围):

主题域 典型问题 数据来源
校史学校哪年成立?创始人是谁?重大事件?校史馆资料/官网校史页/纪念册 PDF
学风校训是什么?学风建设举措?官网学校简介/新闻稿/制度文件
师资院士有几位?某某教授研究方向?师资队伍页面/学院官网(结构化)
招生(加分项)分数线?学费?奖学金?招生简章(更新最频繁,注意版本)

🎯 实战要点

  • 先收集"高频问题清单"(招办/学生处问得最多的 50 个问题)——答案优先建 FAQ
  • 师资类适合结构化:教师姓名/职称/方向做成表格数据,比长文本检索准得多

2. 知识库构建实操(Pipeline)

  1. 采集:官网页面导出 Markdown(markitdown/Jina Reader);PDF 用 PyMuPDF 抽文本;师资表格从数据库导出 CSV
  2. 清洗:去掉导航/页脚/免责声明模板;统一为 Markdown 保留标题层级;师资表转为"教师名:职称,研究方向,代表作"的句子式条目
  3. 分块:校史/制度按标题结构切(200~600 字/块);FAQ 问答对整体成块;师资一人一块
  4. 元数据:category(校史/学风/师资/招生)、source、updated_at——检索时可按 category 过滤
  5. 向量化入库:中文 Embedding 模型(bge-small-zh),存入 pgvector 或 FAISS
一条师资记录的入库形式
content: 张伟,教授,博士生导师。研究方向:计算机视觉、
         深度学习。主持国家自然科学基金 3 项,发表论文 80 余篇。
metadata: { category: "师资", college: "计算机学院",
           source: "计算机学院官网-师资队伍", updated_at: "2026-06-01" }

# 查询"张伟教授研究什么" → 命中这块 → 回答可标注(来源:计算机学院官网)

🎯 实战要点

  • 教师姓名用全名 + 学院做关键词索引(向量对专名弱,混合检索兜底)
  • 校史按年份叙事:年份写进块内容("1952 年"),时间类问题命中率高

3. 问答链路与工程实现

问答主流程(Python 简化版)
def ask(question, history):
    # 1. 多轮重写(结合历史)
    q = rewrite(question, history)

    # 2. 混合检索
    vec_hits = vector_search(q, top=20)     # 向量相似度
    kw_hits  = bm25_search(q, top=20)      # 关键词
    hits = rrf_merge(vec_hits, kw_hits)[:8]  # 融合取 Top8

    # 3. 重排序 + 取 Top3
    hits = rerank(q, hits)[:3]

    # 4. 置信度门控:太低的直接拒答
    if hits[0].score < THRESHOLD: return fallback_answer()

    # 5. 拼装 prompt(system + 资料 + 问题)调 LLM
    answer = llm(chatbot_prompt(q, hits))

    return answer, [h.metadata for h in hits]   # 附引用来源

🎯 实战要点

  • 低代码快速上线:Dify / FastGPT / 扣子(Coze)——拖拽配置知识库+机器人,30 分钟出原型
  • 自有开发:LangChain/LlamaIndex 编排 + OpenAI 兼容 API(或国产模型)
  • 部署形态:网页挂学校官网 / 公众号 / 企业微信机器人

4. 上线准备与持续运营

上线检查清单
□ 评测集回答人工审核通过
□ 拒答兜底文案 + 联系方式配置
□ 引用溯源可点击查看原文
□ 敏感词/隐私过滤规则生效
□ 知识库更新时间策略(自动/手动)
□ 反馈收集入口(👍/👎/转人工)
□ AI 生成免责声明展示
□ 高可用:模型 API 超时重试 + 降级提示

🎯 实战要点

  • 学校场景特别提醒:招生政策/分数线是高频且时效性极强,务必按年份版本管理,过期数据自动失效
  • 运营 KPI:回答采纳率、转人工率、拒答率——别只看"回答数"
⚠️ 本页面由 AI 生成,内容仅供参考,请以官方文档和实际源码为准。