10.1 FAQ智能问答系统-系统架构
·
邓立国Agent开发入门必读书《AI Agent智能体开发实践》1~12章试读_《ai agent 智能体开发实践》在线阅读-CSDN博客
该项目基于LangChain框架和阿里云DashScope服务,构建了一个支持单轮问答与多轮对话的企业FAQ智能问答系统,整体框架可分为6个核心层级,形成“输入−处理−输出”的完整闭环,如图10.1所示。

图10.1 整体框架可分为6个核心层级
1. 数据源层
- 数据形式:采用结构化FAQ数据(问题−答案键值对),包含工作时间、年假申请等企业常见问题。
- 数据转换:将原始FAQ转换为LangChain的Document格式,包含page_content(问题+答案)和metadata(来源标识)。
- 设计特点:数据结构简单清晰,便于扩展至更大规模的企业知识库。
2. 数据存储层
- 核心组件:使用FAISS向量数据库存储文本嵌入向量。
- 工作原理:通过文本分割器(RecursiveCharacterTextSplitter)将文档分块后,利用嵌入模型转换为向量并存储。
- 检索配置:设置k=2表示每次检索返回最相关的2条文档。
- 设计优势:FAISS为轻量级本地向量库,适合小规模知识库场景,部署成本低。
3. 模型层
- 嵌入模型:自定义DashScopeEmbeddings,基于阿里云text-embedding-v2模型实现文本向量化。
- 提供embed_documents(批量文档嵌入)和embed_query(查询嵌入)方法。
- LLM模型:自定义DashScopeLLM,封装阿里云qwen-plus大语言模型。
- 支持温度参数(temperature=0.3)控制输出随机性。
- 限制最大生成tokens(max_tokens=512)控制回答长度。
- 设计亮点:通过统一接口封装第三方模型,便于替换为其他模型服务。
4. 链管理层
1)单轮问答链
- 由create_retrieval_chain构建,结合检索器和文档组合链。
- 提示模板限制仅使用上下文信息,避免编造内容。
2)多轮对话链
- 增加history_aware_retriever实现对话历史感知。
- 通过contextualize_q_prompt将当前问题结合历史对话重述为独立问题。
- 设计逻辑:基于LangChain的链模式,实现检索增强生成(RAG)的核心流程。
5. 业务逻辑层
1)单轮问答函数(single_question)
- 输入:用户问题。
- 输出:回答内容+参考来源。
- 功能:独立处理单个问题,返回引用的FAQ来源。
2)多轮对话函数(chat_conversation)
- 输入:当前问题+对话历史+记忆状态。
- 输出:更新后的对话历史+清空的输入框+记忆状态。
- 功能:维护对话上下文,支持连续交互。
- 设计特点:分离单轮与多轮处理逻辑,满足不同使用场景。
6. 用户交互层
- 界面框架:使用Gradio构建Web界面,包含两个标签页。
- 单轮问答:文本输入框+回答展示+来源展示。
- 多轮对话:聊天机器人组件+输入框+控制按钮。
- 交互设计:支持按钮提交和回车提交,提供对话清空功能。
- 设计优势:零代码部署Web界面,降低使用门槛,适合演示和快速迭代。


更多推荐


所有评论(0)