AI答疑系统升级:从FAQ到教材知识库实战
上一期我们绘制了AI教育助手的全景蓝图,并实现了Streamlit原型。但该Demo存在明显局限:答疑完全依赖大模型的内置知识,无法利用用户自己的教材、课件或考纲。
真正的AI答疑系统,关键不在于模型‘知识量’多大,而在于它能否精准理解你提供的教材内容,并给出有据可依的回答。
本期我们将让智能答疑真正落地:从基础FAQ匹配,到向量检索增强生成(RAG),最终构建一个能‘啃透’教材的知识库答疑系统。
先明确我们的演进路径:
三层并非替代,而是递进:
- 第1层解决‘有标准答案’的问题(FAQ)
- 第2层解决‘语义泛化’的问题(换问法仍能准确响应)
- 第3层解决‘生成式答疑’的问题(需推理、总结、对比)
本期我们将完整实现这三层,并通过统一接口对外提供服务。
在编码前,先搭建目录与依赖:
项目结构:
依赖(requirements.txt):
我们用一个类SmartQASystem统一封装三层逻辑。核心代码如下(qa_system.py):
为便于管理,将索引构建独立拆分(build_index.py):
提供简洁高效的答疑界面(streamlit_app.py):
knowledge_base/数学_三角函数.txt:
knowledge_base/英语_时态总结.txt:
knowledge_base/物理_牛顿定律.txt:
准备就绪后,按以下步骤运行:
测试问答示例:
问:‘正弦30度等于多少?’→ 第1层命中(关键词直接匹配三角函数文件)
问:‘怎么算三角形的角度?’→ 第2层命中(向量检索语义关联至三角函数段落)
问:‘力的公式是什么,给我举个例子’→ 第3层命中(RAG从牛顿定律段落检索并生成含示例的回答)
这里有几个关键设计值得说明:
为何选择ChromaDB而非FAISS?
ChromaDB为纯Python实现,无需编译C++,仅需pip一键安装。在教育场景中(知识库通常仅几千至几万条段落),其性能完全胜任。且内置OpenAI嵌入函数,无需手动调用API。
为何采用三层递进而非纯RAG?
并非所有问题都需要大模型生成。FAQ匹配速度极快(<1ms),且对明确事实类问题(如‘氢元素的原子序数是多少’),直接返回教材原文更高效、更准确。
知识库如何更新?
新增教材时,只需将.txt文件放入knowledge_base目录,重新运行build_index.py即可。生产环境可配置为定时任务或Webhook触发。
至此,我们已拥有一个能‘消化’教材的答疑系统,但仍可优化:
这些改进将在后续篇章中结合实际场景逐步落地。
本期我们将答疑系统从‘大模型裸聊’升级为‘有教材支撑’的三层架构:
核心代码不足150行,一个下午即可运行。下一期我们将进入个性化学习路径推荐,结合知识图谱与用户画像,为每位学生定制专属学习路线。
AI教育/学习助手开发 · 第2期 · CV技术笔记 · 2026