# RagPro **Repository Path**: yang-dianbing/rag-pro ## Basic Information - **Project Name**: RagPro - **Description**: Rag系统升级版 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-14 - **Last Updated**: 2026-10-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RAG-Pro 智能问答系统 基于 BM25 检索和缓存机制的智能问答系统。 ## 项目简介 RAG-Pro 是一个高效的问答检索系统,采用 BM25 算法进行文本相似度匹配,结合 Redis 缓存和 MySQL 数据库实现快速问答服务。系统设计注重性能和可扩展性,通过多级缓存机制提升响应速度。 ## 技术栈 - **Python 3.x**: 核心开发语言 - **BM25**: 文本检索算法 - **Redis**: 高速缓存层 - **MySQL**: 持久化数据存储 - **Docker**: 容器化部署 ## 项目结构 ``` rag-pro/ ├── base/ │ ├── config.py # 配置管理 │ └── logger.py # 日志模块 ├── qa_system/ │ ├── main.py # 主程序入口 │ ├── qa_cache.py # Redis 缓存客户端 │ ├── qa_db.py # MySQL 数据库客户端 │ ├── qa_search.py # BM25 搜索引擎 │ └── qa_utils.py # 文本预处理工具 ├── docker/ │ └── docker-compose.yml ├── config.ini └── requirements.txt ``` ## 核心模块 ### 1. 配置管理 (base/config.py) 使用 `BaseSettings` 进行配置管理,支持从环境变量和配置文件加载参数。 ### 2. 日志模块 (base/logger.py) 提供统一的日志配置,支持调试级别的日志输出。 ### 3. BM25 搜索引擎 (qa_system/qa_search.py) - 支持自定义最低分数阈值(默认 8.0) - 结合 Redis 缓存和 MySQL 数据源 - 返回匹配答案及是否命中的标志 ### 4. 缓存模块 (qa_system/qa_cache.py) Redis 客户端实现: - 问题键值生成 - 答案缓存存储与读取 - TTL 过期时间管理 ### 5. 数据库模块 (qa_system/qa_db.py) MySQL 客户端实现: - 数据表创建 - CSV 数据导入 - 问题与答案查询 ### 6. 文本预处理 (qa_system/qa_utils.py) 文本分词和预处理功能。 ## 安装 ### 1. 安装依赖 ```bash pip install -r requirements.txt ``` ### 2. 配置环境 编辑 `config.ini` 文件,配置数据库和 Redis 连接参数。 ### 3. Docker 部署 ```bash cd docker docker-compose up -d ``` ## 使用方法 ### 初始化数据库 将问答数据导入 MySQL 数据库: ```python from qa_system.qa_db import MySQLClient mysql_client = MySQLClient() mysql_client.create_table() mysql_client.insert_data('your_data.csv') ``` ### 发起问答 ```python from qa_system.main import QASystem qa_system = QASystem() answer = qa_system.query("您的问题") print(answer) ``` ### 直接使用搜索 ```python from qa_system.qa_search import BM25Search searcher = BM25Search() answer, hit = searcher.search("查询内容") ``` ## 配置说明 | 参数 | 说明 | 默认值 | |------|------|--------| | CACHE_KEY_PREFIX | Redis 缓存键前缀 | - | | min_score_threshold | BM25 最低匹配分数 | 8.0 | | default_ttl | 缓存默认过期时间 | 3600秒 | ## 贡献指南 欢迎提交 Pull Request,请确保代码符合项目规范。 ## 许可证 本项目仅供学习参考使用。