人人都会AI编程

Python 环境、依赖库安装

更新时间:2026-07-12

开始搭建 RAG 系统前,需要先准备好 Python 运行环境并安装必要的依赖库。以下步骤以 macOS/Linux 终端或 Windows PowerShell 为例,均基于 Python 3.10 及以上版本,依赖库版本建议锁定在稳定组合。

1. 创建虚拟环境(推荐)

虚拟环境可以隔离项目依赖,避免不同项目的库版本冲突。在项目根目录下执行:

python -m venv rag_env

激活环境:

  • macOS / Linux:
  source rag_env/bin/activate
  
  • Windows:
  rag_env\Scripts\activate
  

激活后,终端提示符前会出现 (rag_env) 标识。

2. 安装核心依赖库

RAG 系统通常涉及:大模型调用、向量嵌入生成、向量数据库存储与检索、文档加载解析等。以下库是实践中高频使用的组合,一次性安装即可。

pip install langchain==0.2.0
pip install langchain-openai==0.1.0
pip install chromadb==0.5.0
pip install sentence-transformers==3.0.0
pip install pypdf==4.2.0
pip install python-dotenv==1.0.0

如果网络受限,可在命令后添加国内镜像源,例如 -i https://pypi.tuna.tsinghua.edu.cn/simple

各库用途简介:

| 库 | 用途 |
|----|------|
| langchain | RAG 流程编排,连接检索、提示模板、模型调用等环节 |
| langchain-openai | 提供对 OpenAI 模型(如 GPT-4o、GPT-3.5)的统一调用接口 |
| chromadb | 轻量级向量数据库,适合本机开发和小规模部署 |
| sentence-transformers | 提供开源嵌入模型(如 BGE、E5 系列),用于文本向量化 |
| pypdf | 解析 PDF 文档,提取文本用于索引 |
| python-dotenv | 从 .env 文件加载环境变量,安全存储 API Key |

注意:若使用开源的嵌入模型,通常不需要额外申请 API Key;若调用 OpenAI 的 Embeddings 服务,则需在 .env 中配置 OPENAI_API_KEY 并在代码中加载。

3. 配置环境变量(API Key)

在项目目录下创建 .env 文件,内容示例:

OPENAI_API_KEY=sk-你的密钥

确保 .gitignore 中已包含 .env,避免将密钥提交到代码仓库。

在脚本中加载:

from dotenv import load_dotenv
load_dotenv()

4. 验证安装

在 Python 交互环境或脚本中依次导入核心模块,无报错即为安装成功:

import langchain
import chromadb
from langchain_openai import ChatOpenAI
from sentence_transformers import SentenceTransformer
import pypdf
import dotenv

print("所有依赖库加载正常")

若使用开源嵌入模型,还可测试一下向量化是否可用:

model = SentenceTransformer("BAAI/bge-small-zh-v1.5")
vector = model.encode("测试文本")
print(len(vector))

输出向量维度(如 512),说明嵌入模块工作正常。

5. 常见问题与处理

  • pip 提示权限不足:不要在系统 Python 中直接安装,务必先激活虚拟环境。
  • chromadb 启动报错:某些环境缺少 C++ 运行时,可尝试用 sqlite3 作为存储后端,或改用 chromadb 的内存模式先行测试。
  • 下载嵌入模型缓慢sentence-transformers 首次加载模型会从 Hugging Face 下载,可通过设置环境变量 HF_ENDPOINT=https://hf-mirror.com 使用国内镜像加速。
  • pypdf 解析中文 PDF 出现乱码:确认 PDF 本身为文本型而非扫描件;若为扫描件,需引入 OCR 流程(不在基础环境范围内)。

以上步骤完成后,Python 运行环境和 RAG 开发所需的核心依赖就准备好了。接下来可以进入文档加载、索引构建以及问答链路的搭建阶段。