# RAG-CREATE **Repository Path**: dubious/rag-create ## Basic Information - **Project Name**: RAG-CREATE - **Description**: No description available - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-19 - **Last Updated**: 2026-04-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RAG 知识库 — 代码检索与开发辅助工具 将 Java 代码仓库转化为可检索、可问答的向量知识库,支持代码问答和需求驱动开发工作流。 ## 功能 - **代码问答**:自然语言提问,检索相关代码并生成回答 - **混合检索**:向量语义搜索 + BM25 关键词搜索,Per-Collection RRF 融合 - **需求驱动开发**:输入需求 → 分析 → 检索代码 → 设计方案 → 生成代码 - **文档索引**:同时索引代码(.java/.xml)和文档(.md/.txt) - **增量更新**:基于文件哈希的增量索引,避免全量重建 - **本地运行**:嵌入模型、向量库、数据全部本地存储 ## 快速开始 ### 1. 环境准备 ```bash cd rag-kb python -m venv .venv # Windows .venv\Scripts\activate # Linux/Mac source .venv/bin/activate pip install -r requirements.txt ``` ### 2. 配置 编辑 `config.yaml`: ```yaml # 必须配置:LLM API(用于问答和工作流) generation: provider: openai # openai 或 anthropic api_base: https://api.minimaxi.com/v1 model: MiniMax-M2.7-Highspeed api_key: ${MINIMAX_API_KEY} # 建议用环境变量 # 可选配置:嵌入模型(默认已包含在 model/ 目录) embedding: model_path: ./model # 本地模型路径 device: cuda # cuda(GPU)或 cpu ``` 设置 API Key 环境变量: ```bash # Windows set MINIMAX_API_KEY=your-api-key # Linux/Mac export MINIMAX_API_KEY=your-api-key ``` ### 3. 构建索引 ```bash # 全量索引(首次运行,约 3 分钟) python -m src.main index --full # 指定模块索引 python -m src.main index --full --module service-fee # 增量索引(日常更新) python -m src.main index ``` ### 4. 使用 ```bash # 查看索引统计 python -m src.main stats # 交互式搜索 python -m src.main search --top-k 10 # 单次问答 python -m src.main ask "缴费流程涉及哪些类" # 保存问答结果到文件 python -m src.main ask "报修流程" -o output.md # 仅输出检索上下文(不调用 LLM) python -m src.main ask "缴费流程" --context-only # 交互式对话 python -m src.main chat --mode qa # 需求驱动开发工作流 python -m src.main workflow "实现投诉建议功能" # 全自动工作流(跳过确认,生成代码到目录) python -m src.main workflow "新增车位租赁功能" --yes -o output/ # 只到设计阶段 python -m src.main workflow "添加访客管理" --step design ``` ## CLI 命令参考 | 命令 | 说明 | |------|------| | `index --full` | 全量索引 | | `index` | 增量索引 | | `stats` | 查看索引统计 | | `search` | 交互式搜索 | | `ask "问题"` | 单次问答 | | `chat` | 交互式对话 | | `workflow "需求"` | 需求驱动开发工作流 | ### workflow 选项 | 选项 | 说明 | |------|------| | `--step analyze` | 只运行需求分析 | | `--step search` | 运行到代码检索 | | `--step design` | 运行到方案设计 | | `--step code` | 完整运行(默认) | | `--yes` | 跳过交互确认 | | `-o dir` | 生成代码输出目录 | ## 项目结构 ``` rag-kb/ ├── config.yaml # 配置文件 ├── model/ # 嵌入模型文件(bge-small-zh-v1.5) ├── requirements.txt # Python 依赖 ├── DESIGN.md # 详细设计文档 ├── src/ │ ├── main.py # CLI 入口 │ ├── utils.py # 共享工具函数 │ ├── metadata/ # Pydantic 数据模型 + 元数据提取 │ ├── indexer/ # 解析器(Java/Mapper XML/配置/文档) │ ├── chunking/ # 分块策略(自适应三级分块) │ ├── embedding/ # 嵌入模型封装 │ ├── vectorstore/ # ChromaDB 存储封装 │ ├── retrieval/ # 混合检索 + 上下文组装 │ ├── generation/ # LLM 客户端 + 提示词模板 │ ├── workflow/ # 4 阶段开发工作流 │ └── incremental/ # 增量索引(变更检测 + 状态管理) ├── data/ │ └── chroma_db/ # ChromaDB 持久化数据(索引后生成) └── tests/ # 单元测试 ``` ## 复刻到其他项目 本工具已将项目特定配置提取到 `config.yaml`,复刻到其他 Java 项目只需修改配置: ```yaml project: name: YourProject repo_path: .. # 模块名前缀(从文件路径识别模块归属) module_prefixes: - your-module-prefix- # 层级检测规则(路径模式 / 注解 / 类名后缀) layers: - name: controller path_patterns: ["/controller/"] annotations: ["RestController", "Controller"] class_suffixes: ["Controller"] - name: service path_patterns: ["/service/"] annotations: ["Service"] class_suffixes: ["Service", "ServiceImpl"] # ... 按需添加 # 代码生成约定 conventions: package_base: "com.yourcompany" mapper_resource_dir: "your-db-module/src/main/resources/mapper" default_module: "your-default-module" ``` 非 Java 项目需替换 `indexer/` 下的解析器(如用 tree-sitter-python 替换 tree-sitter-java),其余模块通用。 ## 依赖 | 依赖 | 用途 | |------|------| | chromadb | 向量数据库 | | tree-sitter + tree-sitter-java | Java AST 解析 | | sentence-transformers | 本地嵌入模型 | | rank-bm25 | BM25 关键词检索 | | click + rich | CLI 交互 | | pydantic | 数据模型 | | openai / anthropic | LLM 客户端 |