Skip to content

项目结构

目录结构

  • 项目采用接口层 (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               # 项目依赖清单