2. 环境与工具准备:Python环境搭建、LangChain框架安装、OpenAI/本地模型API配置
说实话,做RAG项目最怕什么?不是算法难,而是环境配三天,代码跑不通。我见过太多新手卡在第一步——Python版本冲突、依赖包打架、API密钥找不到。这一章,咱们就把这些坑一个个填平。
2.1 Python环境搭建:别小看这一步
我个人习惯用 Python 3.10+。为什么?因为LangChain和很多新库已经放弃3.8了。你想想看,装个旧版本回头还得升级,何必呢?
2.1.1 安装Python
- Windows用户:去python.org下载安装包,记得勾选「Add Python to PATH」。我当年第一次装就忘了勾,结果命令行打python没反应,折腾了半小时。
- Mac用户:推荐用Homebrew安装——
brew install python@3.10。系统自带的Python千万别动,那是给macOS自己用的。 - Linux用户:
sudo apt install python3.10 python3.10-venv,一步到位。
2.1.2 虚拟环境:你的项目隔离舱
嗯,这里要注意。千万别把依赖直接装到全局!我在项目中遇到过两次惨案:一次是同事把项目A的torch升级了,结果项目B直接崩了。从那以后,我每个项目必建虚拟环境。
推荐方案:使用venv
# 创建虚拟环境
python -m venv rag_env
# 激活(Windows)
rag_env\Scripts\activate
# 激活(Mac/Linux)
source rag_env/bin/activate
# 退出
deactivate
小技巧:我习惯在项目根目录建一个 .venv 文件夹,然后用VS Code自动识别。这样每次打开终端,环境自动激活,省心。
2.2 LangChain框架安装:核心依赖一览
LangChain现在更新很快,版本号蹭蹭往上涨。我个人建议锁定 0.1.x 版本,因为0.2.x有些API变了,教程跟不上容易踩坑。
2.2.1 安装命令
# 核心包
pip install langchain==0.1.20
# 社区扩展(各种模型、向量库的集成)
pip install langchain-community
# OpenAI相关
pip install openai tiktoken
# 文档加载器(PDF、网页等)
pip install pypdf beautifulsoup4
# 向量数据库(我们后面会用到)
pip install chromadb faiss-cpu
避坑指南:我曾经因为没装 tiktoken,结果调用OpenAI模型时报错「tokenizer not found」。说白了,tiktoken是用来计算token数量的,没有它,LangChain没法准确切分文本。
2.2.2 验证安装
装完之后,跑个简单的测试,看看能不能正常导入:
python -c "from langchain.llms import OpenAI; print('LangChain安装成功')"
如果没报错,恭喜你,环境通了。如果报错,多半是版本冲突。我建议用 pip list 看看已安装的包,然后一个个排查。
2.3 OpenAI API配置:密钥管理与调用
说白了,OpenAI的API就是你的「AI大脑」。但密钥这东西,千万不能硬编码在代码里。为什么?因为一旦你上传到GitHub,别人就能用你的额度了。我有个朋友就吃过这个亏,一晚上被刷了200美金。
2.3.1 获取API密钥
- 访问 platform.openai.com/api-keys
- 点击「Create new secret key」
- 复制密钥(注意:关闭窗口后就看不到了)
2.3.2 配置环境变量
我个人习惯用 .env 文件管理密钥:
# 安装python-dotenv
pip install python-dotenv
# 创建 .env 文件
echo "OPENAI_API_KEY=sk-你的密钥" > .env
然后在代码里加载:
from dotenv import load_dotenv
import os
load_dotenv() # 加载.env文件
api_key = os.getenv("OPENAI_API_KEY")
重要:记得把 .env 加到 .gitignore 里!否则一提交就泄露了。
2.3.3 测试API连通性
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "你好"}]
)
print(response.choices[0].message.content)
如果返回了内容,说明API配置成功。如果报401错误,检查密钥是不是复制完整了。
2.4 本地模型API配置:省钱又省心
你想想看,每次调OpenAI都要花钱,调试阶段动不动就几十次调用,钱包受不了。所以我建议本地也搭一套模型,至少用来做开发和测试。
2.4.1 使用Ollama(推荐)
Ollama是目前最方便的本地模型管理工具。安装很简单:
# Mac/Linux
curl -fsSL https://ollama.com/install.sh | sh
# Windows:去ollama.com下载安装包
然后拉取模型:
# 拉取一个轻量模型(2GB左右)
ollama pull qwen2:1.5b
# 或者用更强的模型
ollama pull llama3:8b
2.4.2 配置LangChain连接本地模型
from langchain_community.llms import Ollama
# 初始化本地模型
llm = Ollama(model="qwen2:1.5b")
# 调用
response = llm.invoke("什么是RAG?")
print(response)
个人经验:我开发时先用 qwen2:1.5b 调通流程,上线前再切换到GPT-4。这样既省了调试费用,又保证了最终效果。你想想看,是不是很划算?
2.5 环境验证:跑通第一个RAG Demo
最后,咱们来个完整的「Hello RAG」测试,确保所有组件都正常工作:
from langchain_community.llms import Ollama
from langchain_community.embeddings import OllamaEmbeddings
from langchain_community.vectorstores import Chroma
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.document_loaders import TextLoader
# 1. 加载文档
loader = TextLoader("sample.txt")
documents = loader.load()
# 2. 切分文本
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=500,
chunk_overlap=50
)
docs = text_splitter.split_documents(documents)
# 3. 创建向量库
embeddings = OllamaEmbeddings(model="qwen2:1.5b")
vectorstore = Chroma.from_documents(docs, embeddings)
# 4. 检索+生成
llm = Ollama(model="qwen2:1.5b")
retriever = vectorstore.as_retriever()
# 简单测试
query = "文档里说了什么?"
results = retriever.get_relevant_documents(query)
print(f"检索到 {len(results)} 个相关片段")
print(results[0].page_content[:200])
注意:第一次运行会下载模型,大概需要几分钟。别着急,去泡杯咖啡回来就好了。我曾经以为程序卡死了,强行中断了三次...后来才发现是在下载。
2.6 常见问题速查表
| 问题 | 原因 | 解决方案 |
|---|---|---|
| pip安装超时 | 网络问题 | 使用国内镜像:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple |
| OpenAI报401 | 密钥无效或未加载 | 检查.env文件路径,确认密钥前缀是sk- |
| Ollama连接失败 | 服务未启动 | 运行 ollama serve 启动服务 |
| LangChain版本冲突 | 依赖包不兼容 | 用 pip freeze 导出依赖,重新安装 |
好了,环境准备就到这儿。说白了,这一步虽然枯燥,但基础打好了,后面写代码才顺畅。下一章咱们开始真正动手——搭建第一个RAG流水线。
本章核心要点:
- Python 3.10+ + 虚拟环境,是项目的标配
- LangChain 0.1.x 版本最稳定,配合langchain-community使用
- API密钥用.env管理,永远不要硬编码
- 本地模型用Ollama,开发调试省钱利器
公众号:蓝海资料掘金营,微信deep3321