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密钥

  1. 访问 platform.openai.com/api-keys
  2. 点击「Create new secret key」
  3. 复制密钥(注意:关闭窗口后就看不到了)

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