EduRAG智能回答项目V1.0

发布时间:2026/7/21 13:09:21
EduRAG智能回答项目V1.0 第一章:项目背景基于企业私有数据搭建RAG系统学习目标了解项目开发背景掌握融合本地知识的RAG系统实现过程1 背景介绍近年来随着ChatGPT的广泛应用基于大规模语言模型LLM的技术已成为人工智能领域的研究和应用热点。尤其是大模型在各类自然语言处理任务中的成功应用推动了教育行业的智能化转型。然而当前市面上大多数大语言模型存在一个普遍的问题这些模型主要依赖于过往的训练数据无法动态获取最新的知识以及各企业特有的私有知识。这种局限性常常导致生成答案时出现“幻觉”问题即模型提供的答案与实际情况不符或不准确。为了有效解决这一问题企业普遍采用了以下两种主要手段基于企业私有知识的垂直领域微调通过将企业领域的特定知识融合到大模型中进行微调使得模型能够更好地服务于垂直行业的专业需求。需要大量标注数据、显卡40G-80G A100 A800 最便宜5wRMB A100 20wRMB 微调大一点的模型的话需要卡资源非常大的 接近两三百万的买卡买服务器成本、工程师成本一年几十万、评估指标。成本很高 周期和花费。不一定见效果基于企业私有知识的RAGRetrieval-Augmented Generation问答系统通过构建基于检索的问答框架结合企业私有知识库实现更为精准且动态更新的知识问答服务从而减少幻觉的发生。工程师、知识库 RAG系统效果好不好绝大多数情况下都取决于知识库的质量、评估 评估框架、CPU服务器 0GPU 如果用的话GPU卡主要是在向量数据库这一块使用 一般CPU服务器就足够了。成本低见效快辛辛苦苦微调一个模型取得一些效果结果有些新的厂商发布一些基础模型一下次会提升很多导致有可能会超过微调以后的模型这个因素也是导致很多公司不愿意去做微调的很大的因素。在此背景下我们通过采用LangChain和Qwen大模型构建了一套智能化的学科在线答疑系统。该系统基于RAG架构能够通过实时检索相关知识库中的信息来增强大模型的生成能力确保回答的准确性和时效性。与此同时系统通过自动化处理学生的答疑需求极大减轻了人工客服的工作压力从而实现了高效、低成本的知识服务。帮助谁 解决什么问题本课程将基于此RAG架构带领学员深入了解如何使用LangChain和Qwen2.5-7B-Instruct大模型构建一个基于本地知识库的问答系统解决企业在实际应用中的挑战并展示这一系统在教育领域中的广泛应用潜力。2 RAG原理RAG的基本原理3 项目流程mysql问答系统 —— 缓存的高频 问答对 —— rag问答系统(AI) 学科在线答疑系统RAG主要步骤第一步将现有后台搜集的FQA数据集存储到Mysql数据库中第二步基于query实现Mysql数据库检索将query和现有问题匹配做相似度计算如果阈值0.85就认为问题比较明确直接返回对应的答案否则进入RAG检索系统第三步搭建本地知识库对本地文档加载读取进行文档分割文档向量化存储向量数据库Milvus第四步基于query实现Milvus数据库检索将query进行向量表示并从Milvus数据库中检索出相似的top-k个文本段。第五步将query和检索出的top-k文本段拼接送入大模型实现预测。4 项目结构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 系统独立入口支持存储和查询 ├── mysql_qa/ │ ├── db/ │ │ └── mysql_client.py # MySQL 数据库操作 │ ├── cache/ │ │ └── redis_client.py # Redis 缓存操作 │ ├── retrieval/ │ │ └── bm25_search.py # BM25 搜索 │ ├── utils/ │ │ └── preprocess.py # 文本预处理 │ └── main.py # MySQL 系统独立入口支持查询 ├── main.py # 集成系统入口结合 RAG 和 MySQL ├── requirements.txt # 依赖文件 └── logs/ └── app.log # 日志文件依赖文件requirements.txt# Web框架 fastapi uvicorn[standard] websockets # 数据库连接 pymysql redis # 向量检索 rank_bm25 numpy jieba pandas transformers torch langchain langchain_community sentence_transformers pymilvus # AI模型 openai # 配置和工具 configparser locust websocket-client # 其他依赖 pydantic starlette5 环境配置5.1 安装依赖首先确保你的机器安装了Python3.10及其以上版本# 终端查看python的版本 python --version紧接着安装项目的依赖# 安装全部依赖 pip install -r requirements.txt5.2 工具的介绍Ollama: 一个开源的大型语言模型服务工具它帮助用户快速在本地运行大模型。LangChain: 为各种LLMs实现通用的接口把LLMs相关的组件链接在一起简化LLMs应用的开发难度方便开发者快速地开发复杂的LLMs应用。Milvus: 一个开源向量数据库,帮助我们实现向量数据的存储和检索。上述三种工具我们将分别以独立的章节进行介绍章节总结本章节主要介绍了基于企业私有知识搭建智能问答系统的基本流程并对接下来的项目实现进行环境配置工作。第二章:项目工具介绍2.1 Ollama大模型管理工具2.2 LangChain基础知识2.3 Milvus和Redis的安装(扩展资料)基于 Docker 部署单机版 Milvus 和 Redis 教程Docker相对而降不需要安装各种各样的依赖环境做虚拟化的时候已经帮我们把环境给安装好了用的时候非常方便减少环境的一些问题本教程介绍如何在 Windows 11 和 M1 芯片的 macOS 系统上使用 Docker 同时部署和运行单机版 Milvus向量数据库和 Redis键值存储数据库。教程分为两部分分别针对不同操作系统提供详细步骤。前置条件硬件要求至少 8GB 内存建议 16GB 或更高。至少 20GB 可用磁盘空间Milvus 和 Redis 数据存储。软件要求已安装 Docker DesktopWindows 11 或 macOS。确保 Docker Compose 已包含在 Docker Desktop 中通常默认安装。网络要求稳定的互联网连接用于拉取 Docker 镜像。软件版本Milvus2.4.4最新稳定版。Redis7.2最新稳定版。端口要求Milvus19530gRPC、9091RESTful API。Redis6379默认端口。确保以上端口未被占用。一、Windows 11 系统部署 Milvus 和 Redis1.安装 Docker Desktop1下载 Docker Desktop● 访问 Docker 官方网站下载适用于 Windows 的 Docker Desktop 安装包。2安装 Docker Desktop● 双击下载的安装文件按照提示完成安装。● 启用 WSL 2Windows Subsystem for Linux 2支持● 打开 PowerShell以管理员身份运行wsl --install● 安装完成后重启计算机。3验证 Docker 安装● 打开 PowerShell 或命令提示符运行docker --version docker compose version 老版本 docker-compose version● 确保输出版本信息例如 Docker version 27.x.x 和 Docker Compose version v2.x.x。2.配置 Docker Compose 文件1创建项目目录● 在本地磁盘例如 C 盘创建一个文件夹用于存放 Milvus 和 Redis 的配置文件和数据。mkdir C:\milvus_redis cd C:\milvus_redis2创建项目目录● 在 C:\milvus_redis 目录下创建文件 docker-compose.yml内容如下version: 3.5 # Windows/x86_64 Version # Redis Password set to: 1234 services: etcd: container_name: milvus-etcd image: quay.io/coreos/etcd:v3.5.5 environment: - ETCD_AUTO_COMPACTION_MODErevision - ETCD_AUTO_COMPACTION_RETENTION1000 - ETCD_QUOTA_BACKEND_BYTES4294967296 - ETCD_ENABLE_V2true volumes: - ./volumes/etcd:/etcd/data # 注意这里补全了截图中被截断的命令并将地址改为容器名以确保连通性 command: etcd -advertise-client-urlshttp://etcd:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd/data minio: container_name: milvus-minio image: minio/minio:RELEASE.2023-03-20T20-16-18Z environment: MINIO_ACCESS_KEY: minioadmin MINIO_SECRET_KEY: minioadmin volumes: - ./volumes/minio:/minio_data command: minio server /minio_data healthcheck: test: [CMD, curl, -f, http://localhost:9000/minio/health/live] interval: 30s timeout: 20s retries: 3 standalone: container_name: milvus-standalone # 使用多架构镜像Docker on Windows 会自动拉取 x86_64 版本 image: milvusdb/milvus:v2.4.4 command: [milvus, run, standalone] environment: ETCD_ENDPOINTS: etcd:2379 MINIO_ADDRESS: minio:9000 volumes: - ./volumes/milvus:/var/lib/milvus ports: - 19530:19530 - 9091:9091 depends_on: - etcd - minio redis: container_name: milvus-redis image: redis:latest restart: always ports: - 6379:6379 volumes: - ./volumes/redis:/data # 设置 Redis 密码为 1234 (对应顶部注释) command: redis-server --requirepass 1234 networks: default: name: milvus-network说明Milvus 服务image: 使用 Milvus 官方镜像milvusdb/milvus:v2.4.10。ports: 映射 gRPC19530和 RESTful API9091端口。volumes: 数据持久化存储到本地./volumes/milvus目录。environment: 配置日志级别和 Etcd 参数。command: 启动 Milvus 单机模式。Redis 服务image: 使用 Redis 官方镜像redis:7.2。ports: 映射默认端口 6379。volumes: 数据持久化存储到本地./volumes/redis目录。command: 启用 AOFAppend Only File持久化模式。volumes: 定义持久化存储卷。3.启动 Milvus 和 Redis 和 Redis1.拉取镜像并启动容器● 在 C:\milvus_redis 目录下打开 PowerShell运行docker compose up -d● -d 表示后台运行容器。2.验证容器状态● 检查容器是否正常运行docker ps● 确认 milvus_standalone 和 redis 容器均处于 Up 状态。4.验证 Milvus 服务二、M1 芯片 macOS 系统部署 Milvus 和 Redis1.安装 Docker Desktop2.配置 Docker Compose 文件3.启动 Milvus 和 Redis4.验证 Milvus 服务5.验证 Redis 服务6.停止和清理常见问题与解决方法参考资源前提安装mysql、milvus、redis1.安装docker2.创建docker-compose.yml文件3.打开PowerShell运行docker compose up -d启动服务下载4.notebook/test_demo.py运行查看输出或者安装课件内容运行测试脚本第一章:项目背景基于 Docker 部署单机版 Milvus 和 Redis 教程本教程介绍如何在 Windows 11 和 M1 芯片的 macOS 系统上使用 Docker 同时部署和运行单机版 Milvus向量数据库和 Redis键值存储数据库。教程分为两部分分别针对不同操作系统提供详细步骤。前置条件硬件要求至少 8GB 内存建议 16GB 或更高。至少 20GB 可用磁盘空间Milvus 和 Redis 数据存储。软件要求已安装 Docker DesktopWindows 11 或 macOS。确保 Docker Compose 已包含在 Docker Desktop 中通常默认安装。网络要求稳定的互联网连接用于拉取 Docker 镜像。软件版本Milvus: 2.4.4最新稳定版。Redis: 7.2最新稳定版。端口要求Milvus: 19530 (gRPC)、9091 (RESTful API)。Redis: 6379 (默认端口)。确保以上端口未被占用。第三章:基于Mysql数据库构建问答系统第四章:基于Milvus数据库构建RAG问答系统第五章:RAG系统评估第六章:融合Mysql的RAG系统