跳转至

整体架构与工作流程

学习目标

  • 1.理解RAG系统的基本原理及其在教育领域的应用场景。
  • 2.掌握EduRAG系统的模块化设计和各模块的核心功能。
  • 3.熟悉RAG系统从查询到生成回答的完整工作流程。

1. RAG系统整体架构介绍

EduRAG智慧问答系统是一个基于**RAG(Retrieval-Augmented Generation,检索增强生成)**技术的智能问答平台,专为IT教育培训设计。它通过结合信息检索和生成式模型,从知识库中提取相关信息并生成准确、自然的回答。系统采用工程化的模块化设计,代码结构清晰,便于开发、维护和扩展。

1.1 系统背景

RAG技术通过检索外部知识库增强大语言模型的回答能力,特别适用于需要专业知识的场景。EduRAG的目标是为IT学习者提供高效、准确的答疑服务,支持多种文档格式和灵活的检索策略。

1.2 模块化架构

系统的代码组织分为以下几个核心模块:

  • base/:基础支持模块,负责配置、日志处理。
  • core/:核心逻辑模块,实现RAG的关键功能。
  • main.py:系统运行入口,支持数据处理和交互查询。

模块详情

  • base模块
    • config.py:管理系统配置,如API密钥、模型选择等。
    • logger.py:记录系统运行日志,便于调试和监控。
  • core模块
    • document_processor.py:处理输入文档,分块并准备向量存储。
    • prompts.py:管理Prompt模板,支持不同任务。
    • query_classifier.py:分类用户查询类型。
    • strategy_selector.py:选择合适的检索策略。
    • vector_store.py:管理向量数据库,进行文档存储和检索。
    • rag_system.py:整合RAG流程,生成最终回答。
  • main.py:命令行交互入口,测试和运行系统。

1.3 代码目录结构

integrated_qa_system/
├── config.ini                 # 配置文件,包含所有模块的配置
├── base/
│   ├── config.py              # 配置管理,加载 config.ini
│   ├── logger.py              # 日志设置
├── rag_qa/
│   ├── core/
│   │   ├── prompts.py         # RAG 提示模板
│   │   ├── query_classifier.py # 查询分类器
│   │   ├── strategy_selector.py # 检索策略选择器
│   │   ├── vector_store.py    # 向量存储与检索
│   │   ├── rag_system.py      # RAG 系统核心逻辑
│   ├── main.py                # RAG 系统独立入口,支持存储和查询
├── requirements.txt           # 依赖文件
└── logs/
    └── app.log                # 日志文件

2. RAG系统基本工作流程

EduRAG系统的工作流程分为四个主要步骤,确保从用户查询到生成回答的高效性和准确性:

  1. 查询分类

    • 系统首先判断查询类型(如“通用知识”或“专业咨询”)。
    • 通用知识直接由大语言模型回答,专业咨询进入检索流程。
  2. 策略选择

    • 根据查询特点选择检索策略:
      • 直接检索:适用于明确查询。
      • HyDE检索:适用于抽象问题,生成假设答案后检索。
      • 子查询检索:分解复杂查询。
      • 回溯检索:简化复杂问题后检索。
  3. 文档检索

    • 使用vector_store.py从向量数据库中检索相关文档。
    • 支持稠密向量和稀疏向量的混合检索,结果经过重排序优化。
  4. 生成回答

    • 将检索到的文档作为上下文,结合用户查询输入大语言模型。
    • 生成自然语言回答,若无答案则引导人工支持。

流程图

总结

EduRAG智慧问答系统通过工程化的模块化设计,实现了从查询分类到生成回答的完整流程。其核心优势包括:

  • 模块化:代码分工明确,便于维护和扩展。
  • 灵活性:支持多种检索策略,适应不同查询需求。
  • 实用性:结合IT教育场景,提供专业回答。