外观
项目结构
目录结构
- 项目采用接口层 (Controller) -> 业务层 (Service) -> 工具层 (Services) -> 配置层 (Config)的分层设计,职责单一,易于维护和扩展。
- 模块化设计:核心功能按业务拆分为子模块。子模块分层设计(Controller -> Service -> CRUD/Model)
- 工厂模式应用:底层服务(大模型 / 嵌入模型 / 向量库等)通过工厂模式封装,便于切换不同实现。
- 后台任务队列支持:通过 ARQ 处理耗时任务(文档解析 / 向量化),提升接口响应速度。
bash
my-rag # 项目根目录
|-- Dockerfile # Docker 构建文件
|-- app # 核心应用代码目录
| |-- api # API 接口层
| | `-- v1 # API v1 版本
| | |-- module_rag # RAG 核心模块
| | | |-- chat # 对话功能子模块
| | | | |-- controller.py # 对话接口控制器(处理请求/响应)
| | | | |-- schema.py # 对话接口数据模型(请求/响应结构体)
| | | | `-- service.py # 对话核心业务逻辑层
| | | |-- document # 文档管理子模块
| | | | |-- controller.py # 文档接口控制器
| | | | |-- crud.py # 文档数据库增删改查操作
| | | | |-- model.py # 文档数据库模型定义
| | | | |-- schema.py # 文档接口数据模型
| | | | |-- service.py # 文档核心业务逻辑层
| | | | `-- tasks.py # 文档相关异步任务(如解析、向量化)
| | | |-- kb # 知识库管理子模块
| | | | |-- controller.py # 知识库接口控制器
| | | | |-- crud.py # 知识库数据库增删改查操作
| | | | |-- model.py # 知识库数据库模型定义
| | | | |-- schema.py # 知识库接口数据模型
| | | | `-- service.py # 知识库核心业务逻辑层
| | | |-- rag # RAG 核心逻辑子模块
| | | | |-- agent_rag.py # 基于 Agent 的 RAG 实现
| | | | |-- basic_rag.py # 基础版 RAG 实现
| | | | |-- controller.py # RAG 接口控制器
| | | | |-- hybrid_rag.py # 混合检索 RAG 实现
| | | | |-- prompts.py # RAG 提示词模板定义
| | | | |-- rag_base.py # RAG 基础抽象类
| | | | `-- schema.py # RAG 接口数据模型
| | | `-- vs_milvus # Milvus 向量库子模块
| | | |-- controller.py # 向量库接口控制器
| | | |-- schema.py # 向量库接口数据模型
| | | `-- service.py # 向量库核心业务逻辑层
| | `-- routers.py # API 路由汇总(注册所有接口路由)
| |-- config # 配置文件目录
| | |-- arq_config.py # ARQ 异步任务配置
| | |-- base_model.py # 基础数据模型(数据库模型基类)
| | |-- db_config.py # 数据库配置
| | |-- exception_config.py # 异常处理配置(自定义异常/异常捕获)
| | |-- fs_config.py # 文件系统配置
| | |-- log_config.py # 日志配置(日志格式/级别/存储)
| | |-- response_config.py # 响应格式配置(统一返回格式)
| | `-- settings.py # 主配置文件(汇总所有配置项)
| `-- services # 底层服务/工具层
| |-- langchain # LangChain 相关工具服务
| | |-- chat_model_factory.py # 大模型工厂(统一创建不同厂商的大模型实例)
| | |-- document_loader_factory.py # 文档加载器工厂(支持多格式文档加载)
| | |-- embedding_model_factory.py # 嵌入模型工厂(统一创建嵌入模型)
| | |-- text_splitter_factory.py # 文本分割器工厂(不同分割策略)
| | `-- vector_store_factory.py # 向量库工厂(支持 Milvus/FAISS 等)
| `-- reranker # 重排序器相关工具服务
| |-- base.py # 重排序器基类(定义统一接口)
| |-- reranker_factory.py # 重排序器工厂(创建不同重排序器实例)
| `-- xinference_reanker.py # 基于 XInference 的重排序器实现
|-- arq_worker.py # ARQ 异步任务 worker(执行异步任务)
|-- devops # 运维相关文件目录
| `-- milvus # Milvus 运维配置
| |-- milvus-standalone-docker-compose.yml # Milvus 单机版 Docker 编排文件
| `-- standalone_embed.sh # Milvus 单机版部署脚本
|-- docker-compose.yml # 项目整体 Docker 编排文件(整合应用/Milvus 等)
|-- entrypoint.sh # 容器启动入口脚本(初始化/启动服务)
|-- main.py # 项目入口文件(启动 FastAPI 服务)
`-- requirements.txt # 项目依赖清单