掌柜智库项目 Day 01|RAG 理解与项目环境搭建
从 RAG 的基本原理讲起,完整记录 uv 包管理工具的安装与镜像配置、项目基本包结构搭建、公共类代码导入与首次 Git 提交。
本篇要点
- 理解 RAG 的基本流程,明确项目为什么用 RAG
- 掌握 uv 的安装、镜像配置、项目初始化与依赖同步
- 搭建项目的基本包结构,导入项目公共类代码
- 把项目交给 git 管理并完成第一次提交
内容回顾
1、为什么使用 RAG
- 现在模型的上下文窗口已经巨大了,但每次真的使用都会消耗 token;塞进去过多的内容,回答反而不准确了。
- 模型在某些方面有知识欠缺,不会也答(幻觉)。
2、RAG 的两条链路
- 准备:各种数据文件 -> text -> 嵌入式模型 -> 向量 -> 向量数据库
- 检索:用户提问 -> 嵌入式模型 -> 向量 -> 相似度 -> chunk -> 问题 + 上下文 -> 提示词 -> LLM -> 结果
1 | 准备 各种数据文件 -> text -> 嵌入式模型 -> 向量 -> 向量数据库 |
- 掌柜智库项目的整条流程,就是这条 RAG 流程的工程化扩展:准备阶段 7 个节点、检索阶段 7 个节点,后面每天实现其中一部分。
今天内容
1、使用 uv 管理我们的项目
1.1 安装 uv
两种方式:
- 25+ 的 pycharm -> new project -> uv 即可【安装 uv 包管理工具 | 创建一个项目使用 uv 管理】
- 使用命令安装:
1 | pip install uv |
1.2 uv 配置镜像
全局配置: 在 C:\Users\登录用户名\AppData\Roaming\uv 下创建 uv.toml:
1 | # 配置默认的 PyPI 镜像源 (清华源) |
局部配置: 使用 uv 管理的项目,写在 pyproject.toml 里 -> 包信息 | 配置镜像:
1 | # 项目下配置环境变量(更推荐) |
局部配置放在项目里、跟着项目走,更推荐这种方式。
1.3 创建使用 uv 管理的项目和创建虚拟环境
IDE 方式:
- 25+ pycharm + 直接 new project - uv【安装 uv、使用 uv 管理项目、自动创建
.venv虚拟环境】
命令方式:
- 初始化 uv 管理的项目:
1 | uv init ai_班级号_knowledge_base --bare # 纯净版本 |
然后 使用 pycharm - open - 打开 -> pyproject.toml【项目描述和依赖信息以及镜像配置文件】。
- 24 版本有问题 -> 没有创建
.venv虚拟环境,使用 uv 创建虚拟环境:
1 | uv venv --python=3.11 # 或者 3.12 |
坑: python 解释器版本 3.09 / 3.10 / 3.11 / 3.12 / 3.13 / 3.14 都要注意
path变量,解释器选错后面导入会直接报错。
- pycharm 手动指定解释器:右下角 -> intercepters settings -> add intercepter -> add local intercepter。
激活当前虚拟环境:
1 | ./.venv/Scripts/activate.bat |
在 pycharm 的命令窗口前面显示 (项目名),就算激活了。
- 如果在 pycharm 中,使用 uv 命令报错,就切换 pycharm 中的命令工具:file - setting -> Terminal,切换 cmd 或者 power shell。
这一步的完整流程小结:
1 | 安装 uv -> 配置镜像 |
提示: 命令行前面如果出现
(base) (项目名) x.x.x.x,说明 conda 的 base 环境还激活着,用conda deactivate取消。
1.4 同步项目依赖
需要共享两个文件:
pyproject.toml-> 项目信息、依赖信息(很多都不是固定的版本,是范围版本)、镜像信息uv.lock-> 记录下载时刻的具体版本,作用是避免依赖同步版本漂移!
1 | uv sync |
uv sync 想要同步所有依赖配置(下载)时,会先检查 pyproject.toml 的依赖信息(范围版本),再检查 uv.lock 中具体的版本,最后进行下载。
同步项目配置的步骤:
- 找到 掌柜智库 / 资料 / 依赖配置 这 2 个文件
- 粘贴到当前项目下,适当修改项目基本信息(项目名)
- 执行
uv sync进行依赖同步 - 校验:
uv tree看见依赖树 - 校验:创建
xx.py,写from langchain ...能导入成功(导入失败一般是解释器选择的不对)
1.5 uv 包管理说明
- 兼容 pip:
uv pip安装的包不会记录到pyproject.toml中,适合临时测试的包;uv pip的命令都是兼容的【保留你的习惯,兼容 uv 的速度】。
1 | uv pip install xxx |
- uv 自己的方式:
1 | uv add 依赖=xx |
2、搭建项目的基本架构
2.1 搭建项目的基本包结构
1 | 项目名文件夹 |
说明:
process放 langgraph 的节点,rag放核心业务代码,两者都按import_ / query分目录,和项目”准备 / 检索”两条链路一一对应。api分成http(接口)和schema(数据类型);infra是对外统一的公共出口。utils / shared是工具模块,像 minio、mongodb、milvus 这些原则上不需要我们自己写。
2.2 导入项目的公共类代码
- 2.2.1 配置文件
.env/.env.sample - 2.2.2 日志文件
shared / runtime / logger.py【日志级别 / 日志配置 / 动态参数 / 装饰器node_log、step_log】 - 2.2.3 配置加载类
config …、mcp_config …、common->load_env(override=True) - 2.2.4 其他的
shared / doc - 2.2.5 封装了一个公共类
infra / config / providers / InfraConfig-> 包容了 8 个配置类,属性写法:类型 = Field(default_factory=lambda: xxx)
1 | # InfraConfig 中的属性写法示意 |
这些公共类代码直接拿来用即可,重点是先把”配置、日志、工具”这三块能力接进项目。
2.3 项目代码提交到 git
- 下载一个忽略文件插件(它可以帮我们创建一个带有完整忽略内容的忽略文件):file / settings / plugins /
.ignore - 创建忽略文件:项目 -> 右键 -> new file -> ignore file -> Git -> python 项目 -> 生成
1 | logs/ |
- 项目被 git 管理 / 并且完成第一次提交
2.4 打开进度统计
- 每个人按组 / 2 个
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 𝐺ℎ𝑎𝑜 の 𝐵𝑙𝑜𝑔!
评论
