【RAG扫盲系列·2】从零开始构建你的 RAG 项目:环境配置与向量库实战

前言

在上一篇扫盲文章中,我们了解了 RAG(Retrieval-Augmented Generation)的基本原理和应用场景。本篇将正式进入实战环节,带你从零开始搭建一个可运行的 RAG 项目。

本节目标
✅ 配置一个稳定的 Python 环境,避免依赖冲突
✅ 安装必要的库(含 LangChain、ModelScope、FAISS 等)
✅ 构建本地向量库,为后续问答系统打好基础

无论你是第一次接触 RAG,还是正在踩环境配置的坑,这篇文章都能帮你快速跑通项目。

一、环境配置(前提:已经安装Anaconda)

1. 在 D 盘创建 Conda 虚拟环境并激活

  • 创建环境

打开 Anaconda Prompt,运行:

conda create --prefix D:\my_rag_env python=3.10

说明:

  • --prefix 指定环境路径为 D 盘
  • my_rag_env 是你自定义的环境名(可以改成你项目名)
  • python=3.10 是推荐版本,兼容性好
  • 激活环境
conda activate D:\my_rag_env

你会看到提示变成了类似:

(D:\my_rag_env) C:\Users\Admin> # Admin是个人的用户名

说明你已经进入了 D 盘的环境。

2. 安装Pytorch(就在这个环境里)

CPU版本(推荐大多数用户)

conda install pytorch torchvision torchaudio cpuonly -c pytorch

GPU 版本(如果有 NVIDIA 显卡 + CUDA 11.8,且希望加速)

conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

测试是否安装成功:

python #先在Anaconda Prompt中输入python切换成python语法
import torch
print(torch.__version__) #若输出版本号则安装成功
print(torch.cuda.is_available()) #输出false说明用的是CPU版本,是正常的;说安装并启用GPU版本则输出True
exit() #测试完后退出python

3. 安装项目依赖(就在这个环境里)

pip install \
  numpy==1.26.4 \
  pyarrow==12.0.1 \
  pandas==2.2.2 \
  datasets==2.18.0 \
  modelscope==1.15.0 \
  transformers==4.36.2 \
  langchain==1.0.2 \
  langchain-community==0.4 \
  langchain-text-splitters==1.0.0 \
  langchain-openai==2.6.1 \
  faiss-cpu==1.12.0 \
  tiktoken==0.12.0 \
  pypdf rapidocr-onnxruntime addict chardet charset-normalizer
  # 在构建 RAG 系统时,很多底层库(如 numpy、pyarrow、datasets、transformers、modelscope)的更新节奏并不同步,如果直接安装最新版可能有兼容问题,因此推荐安装固定版本

如果在国内,建议加上链接加速安装 -i https://mirrors.aliyun.com/pypi/simple/ ;这是阿里的镜像源,可以加速国内下载。

pip install -i https://mirrors.aliyun.com/pypi/simple/ numpy==1.26.4 pyarrow==12.0.1 pandas==2.2.2 datasets==2.18.0 modelscope==1.15.0 transformers==4.36.2 langchain==1.0.2 langchain-community==0.4 langchain-text-splitters==1.0.0  langchain-openai==2.6.1 faiss-cpu==1.12.0 tiktoken==0.12.0 pypdf rapidocr-onnxruntime addict chardet charset-normalizer}

PS:这些包是为了支持 RAG 系统的各个模块,解释如下:

包名 作用 推荐版本 说明
numpy / pyarrow / pandas / datasets 底层依赖 numpy 1.26.4, pyarrow 12.0.1, pandas 2.2.2, datasets 2.18.0 必须锁版本,否则会报 ABI 错误或缺少类
modelscope 阿里模型平台 1.15.0 与 transformers 4.36.2 搭配稳定
transformers HuggingFace 模型库 4.36.2 新版不兼容 ModelScope
langchain 系列 RAG 框架 langchain 1.0.2, community 0.4, text-splitters 1.0.0,, openai==2.6.1 只保留必要模块
faiss-cpu 向量检索 1.12.0 构建向量索引
tiktoken Tokenizer 0.12.0 计算 token 数量
pypdf / rapidocr-onnxruntime 文档解析 & OCR 最新版即可 可选模块
addict / chardet / charset-normalizer 辅助依赖 最新版即可 ModelScope 依赖链

4. 准备项目目录

你可以在 D 盘创建一个项目文件夹,然后把后续的代码和用到的文件等都放进这个文件夹里。

5. 选中新创建的环境

  • 在VS Code中选中期望环境前提:已安装 VS Code

    • 方法一:直接点击右下角的当前Interpreter,如 Python 3.10.10 切换 Interpreter
    • 方法二
    1. 打开 VS Code → 打开 D:\rag_project 文件夹
    2. Ctrl+Shift+P → 输入 Python: Select Interpreter
    3. 选择你刚才创建的环境路径(D:\my_rag_env)

    成功后,VS Code的右下角会显示当前Interpreter,如Python 3.10.19,鼠标悬浮选中会看到详细路径。这样你就可以在 VS Code 里运行项目代码了,所有依赖都在 D 盘环境里。

  • 在Jupyter Notebook中选中期望环境前提:已安装 Jupyter Notebook

(1)在环境里安装 Jupyter 支持

conda activate D:\my_rag_env #激活环境
pip install jupyter ipykernel #安装 Jupyter 和内核绑定工具

💡 注意:虽然你之前在 base 环境里已经安装过 Jupyter Notebook,但是也需要在新建的环境里安装 ipykernel,并注册为 Notebook 内核。这样才能在 Notebook 中选择并使用该环境运行代码。

(2)把环境注册为 Jupyter 内核

依旧在同一个环境里运行:

python -m ipykernel install --user --name my_rag_env --display-name "Python (my_rag_env)"
# --name my_rag_env 是自己起的环境名字,记得改
# --display-name "Python (my_rag_env)" 是在 Notebook 界面里显示的该环境的名字,可以起一个自己喜欢的

(3)启动 Jupyter Notebook:进入项目目录后直接输入 jupyter notebook,浏览器会自动打开 Jupyter 页面。

可以用最原始的方式双击进入项目文件夹,然后右键点击文件夹空白处,选择“在终端中打开”,然后直接输入jupyter notebook。

(4)在 Notebook 中选择正确的内核:打开.ipynb 文件 → 点击菜单栏 Kernel → Change Kernel → 选择 Python (my_rag_env)

二、构建向量库(FAISS)

在本节中,我们将完成 RAG 系统的第一步:将原始文档转化为可搜索的向量数据库。这一步的步骤是:

加载PDF文档并提取内容 → 把 PDF 文档中的内容(包括图片里的文字)切分成小片段 → 转换成向量 → 存入本地 FAISS 向量库。

首先,我们要找一份小一些的 PDF 文档,并将其保存在当前目录下。本示例中用到了之前的博文中提到的 Google 官方的 Prompt Engineering 教学文档,并命名为 Google Prompt Guidance

下面是完整的代码流程:

from langchain_community.document_loaders import PyPDFLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_community.embeddings import ModelScopeEmbeddings
from langchain_community.vectorstores import FAISS

# 1. 加载 PDF 并提取文字(含 OCR)
pdf_loader = PyPDFLoader('Google Prompt Guidance.pdf', extract_images=True) #此处文件名要改为自己的文件名

# 2. 切分文本为 chunk
chunks = pdf_loader.load_and_split(
    text_splitter=RecursiveCharacterTextSplitter(chunk_size=100, chunk_overlap=10)
) #切成chunk片段,每 100 个字符切一段,相邻段之间有 10 个字符重叠

# 3. 加载中文句向量模型
embeddings = ModelScopeEmbeddings(
    model_id='iic/nlp_corom_sentence-embedding_chinese-base'
) 

# 4. 构建并保存 FAISS 向量库
vector_db = FAISS.from_documents(chunks, embeddings)
vector_db.save_local('faiss_index/LLM')

print('faiss saved!') #帮助确认代码运行到此处

运行成功后,会在当前目录下生成一个 faiss_index/LLM 文件夹,里面保存了向量索引数据。后续我们可以用它来进行语义搜索和问答。

如果你第一次运行时看到模型下载进度条,不用担心,这是 ModelScope 在自动拉取 embedding 模型文件,下载后会缓存到本地。

小结:你已经完成了 RAG 项目的第一步!

到这里,我们已经完成了:

✅ 环境配置与依赖安装
✅ PDF 文档解析与切分
✅ 向量化处理与 FAISS 本地索引构建

下一节,我们将正式进入 语义检索与问答系统 的构建,让你的 RAG 项目真正“动起来”!

posted @ 2026-07-18 15:01  Alkaid2077  阅读(48)  评论(0)    收藏  举报