一个基于 RAG (检索增强生成) 的代码库智能问答系统,使用 LangChain、LangGraph 和多智能体模式构建。
项目性质: 学习项目 - 从基础 LangChain 用法逐步进阶到多智能体编排和 API 服务
- RAG 管道: 使用 ChromaDB 向量存储实现高效的语义检索
- 多智能体架构: 基于 LangGraph 的状态图编排多个专用智能体
- LLM 兼容性: 支持任何 OpenAI 兼容的 API(默认配置 GLM/Zhipu AI)
- 流式响应: 通过 FastAPI + LangServe 提供实时流式 API
- 文本处理: 支持代码和文档的智能分割与索引
- 灵活配置: 基于 Pydantic Settings 的环境变量配置系统
- Python >= 3.11
- OpenAI 兼容 API 密钥
- 示例: GLM (智谱清言) 的 API 端点:
https://open.bigmodel.cn/api/paas/v4 - 也支持 OpenAI、Azure OpenAI 等其他兼容服务
- 示例: GLM (智谱清言) 的 API 端点:
# 克隆并进入项目目录
cd CodeBase-Intelligence-Hub
# 复制环境配置模板
cp .env.example .env
# 编辑 .env 填入 API 密钥和基础 URL
# 必需变量:
# - OPENAI_API_KEY=your_api_key_here
# - OPENAI_API_BASE=https://your-api-base-url/api/paas/v4使用 uv (推荐):
uv sync或使用 pip:
pip install -e .安装开发工具 (可选):
uv sync --extra dev启动主程序:
uv run python main.py
# 或
python main.py启动 API 服务器:
uv run python api/serve.py
# 服务可在 http://localhost:8000 访问项目按学习阶段递增增长:
| 目录 | 阶段 | 功能描述 |
|---|---|---|
main.py |
0–1 | 入口点;基础 LangChain 链 |
config/ |
1+ | Pydantic 配置管理 (settings.py) |
retrieval/ |
2+ | 文档加载、文本分割、向量存储 |
chains/ |
1+ | LCEL 链定义;RAG 链 (rag.py) |
agents/ |
5+ | ReAct 模式的工具使用智能体 |
graph/ |
6+ | LangGraph 状态图定义 |
api/ |
8 | FastAPI + LangServe HTTP 服务 |
docs/ |
— | 学习教程和设计文档 |
用户查询
↓
LangGraph 编排器
↓
路由到专用智能体 (检索、推理等)
↓
ChromaDB 向量检索
↓
结果聚合
↓
FastAPI/LangServe 流式响应
- LangChain - LLM 应用开发框架
- LangGraph - 多智能体编排
- LangServe - LLM 应用 REST API 服务
- ChatOpenAI (OpenAI 兼容 API)
- ChromaDB - 向量数据库
- Sentence Transformers - 文本嵌入模型
- FastAPI - 现代异步 Web 框架
- Uvicorn - ASGI 服务器
- SSE Starlette - 服务器发送事件支持
- Pydantic - 数据验证和配置管理
- python-dotenv - 环境变量加载
- Unstructured - 文档解析
- rank-bm25 - BM25 关键词搜索
使用管道操作符 (|) 组合链:
chain = prompt | llm | parser所有配置通过环境变量管理,在 config/settings.py 中定义:
from config.settings import Settings
settings = Settings()
print(settings.openai_api_key)- 加载: 使用
retrieval/中的加载器读取代码文件 - 分割: 根据文件类型智能分割文本
- 嵌入: 使用 Sentence Transformers 转换为向量
- 存储: 保存到 ChromaDB
- 检索: 基于语义相似度查询相关代码片段
项目包含完整的开发工具链:
# 代码质量检查
uv run ruff check . # Linting
uv run pyright --verifytypes . # Type checking
uv run pylint src/ # Code quality
uv run radon mi . # 可维护性指数
# 安全性检查
uv run bandit -r src/ # 安全漏洞扫描
uv run semgrep --config=p/owasp-top-ten src/
uv run pip-audit # 依赖漏洞检查
# 单元测试
uv run pytest # 运行所有测试
uv run pytest --cov # 覆盖率报告必需配置:
OPENAI_API_KEY- LLM 提供商的 API 密钥OPENAI_API_BASE- API 基础 URL
可选配置:
LOG_LEVEL- 日志级别 (default:INFO)CHROMA_DB_PATH- ChromaDB 数据库路径 (default:./chroma_db)MODEL_NAME- 使用的模型名称
参考 .env.example 获取完整列表。
详细的学习教程和阶段说明,请参考:
docs/phased-tutorial/00-总览与阶段索引.md- 完整学习路线图- 各阶段的代码注释和设计文档
欢迎提交 PR 和 Issue。请确保:
- 遵循项目的代码风格 (由 Ruff 定义)
- 添加必要的测试用例
- 更新相关文档
- 通过所有质量检查:
uv run ruff check --fix . uv run pyright --verifytypes . uv run pytest
- 当前版本: 1.0.1
- 主要特性: 基础 RAG 管道、多智能体编排、API 服务
- 开发阶段: 学习项目 - 持续迭代中
本项目采用 MIT 许可证。详见 LICENSE 文件。
A: 修改 .env 中的 OPENAI_API_BASE 和 OPENAI_API_KEY,或在 config/settings.py 中修改 ChatOpenAI 初始化参数。
A: 项目使用 Unstructured 库,支持代码文件、文档、PDF 等多种格式。详见 retrieval/loaders.py。
A: 修改 retrieval/ 中的相关文件,调整分割策略或嵌入模型。
A: 在 agents/ 目录中添加新的智能体类,在 graph/ 中的状态图中注册。
如有问题,欢迎提交 GitHub Issue。
🎓 学习目标: 通过逐步构建完整的 RAG 系统,深入理解 LangChain、LangGraph 和 AI 应用架构的最佳实践。