前言

之前基于txtai开源软件搭建RAG系统遇到了一些问题,可能是软件安装上的问题,觉得自己搭建太麻烦了,放弃。借助AI Agent重新开始。

用conda环境的好处是,每次重新开始只要新建一个env,不会影响到系统的软件配置,新建了一个rag_system的conda env,从头开始搭建RAG系统。

推荐的RAG技术栈

我的电脑环境有一个RTX4060,询问AI,获得的推荐技术栈如下:

  1. LLM 模型,建议Qwen2.5-7B-Instruct 或 Llama-3.2-3B-Instruct,7B模型需要 ~6-8GB VRAM(量化后),4060 可流畅运行,我想先验证简单功能,选择了一个较小的LLM模型:Qwen2.5-1.5B-Instruct;
  2. Embedding 模型,建议bge-m3 或 text2vec-large-chinese,我选择bge-m3 支持多语言,对IT术语友好;
  3. 向量数据库,建议ChromaDB 或 FAISS,轻量级,易上手;生产级可选 Qdrant,我选择ChromaDB;
  4. RAG 框架,建议LangChain 或 LlamaIndex 成熟生态丰富,我选择了LangChain;
  5. 部署方式,建议Ollama + AnythingLLM,最简方案,零配置运行,但是我想能够自己可控,所以不用建议的方案,而是选择使用 HuggingFace 方式直接加载本地模型。

环境准备

总结一下技术方案如下:

1.使用 HuggingFace 方式直接加载本地模型

2.conda 环境

3.LangChain 

4.ChromaDB 向量数据库

5.下载的Embedding模型是D:\nxk\ai_models\bge-m3

6.下载的LLM模型是D:\nxk\ai_models\Qwen2.5-1.5B-Instruct

7.我的技术文档在D:\nxk\ai_doc

【注意】由于创建环境,安装软件等需要消耗比较多的Token,所以选择自己创建环境和安装软件,通过这个准备过程也可以有更多的了解。

操作步骤

# 1. 打开 Anaconda Prompt

# 2. 创建新环境(Python 3.11 稳定版)

conda create -n rag_system python=3.11 -y

创建一个conda环境为rag_system,Python版本为3.11

# 3. 激活环境

conda activate rag_system

# 4. 安装 PyTorch

应该安装cu124,如下:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124

【注意】需要科学上网才能安装,且torch 不能用清华源 / 豆瓣源这些普通 PyPI 镜像!

之前安装了旧版本,这样安装的torch版本是2.5.1,不是2.6,加载Embedding模型有问题,要卸载了重新安装

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

# 如果之前已经安装错了,先卸载旧版本

pip uninstall torch torchvision torchaudio -y

# 5. 安装 其他软件

pip install langchain langchain-community langchain-huggingface

pip install llama-index llama-index-llms-huggingface llama-index-embeddings-huggingface

pip install chromadb sentence-transformers

pip install pypdf tiktoken python-dotenv

pip install bitsandbytes    #4bit量化需要额外安装这个

pip install pypdf unstructured  #LangChain的Doc loader

pip install python-docx  #LangChain的Doc loader

【参考】:

可以选择利用镜像安装以加快速度,比如单次设置:

pip install chromadb -i https://pypi.tuna.tsinghua.edu.cn/simple

或者全局设置镜像源:

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

取消全局设置:

pip config unset global.index-url

验证环境

安装完成之后,最好先提前验证一下,有如下验证项目:

验证项 命令/方法

GPU 可用 python -c "import torch; print(torch.cuda.is_available())"

Embedding 模型加载 加载 bge-m3 并测试 encode 一句话

LLM 模型加载 加载 Qwen2.5-1.5B-Instruct 并测试一次推理

ChromaDB 可用 python -c "import chromadb; print('OK')"

文档读取 用 LangChain 的 loader 读取一篇文档

验证结果如下:

(rag_system) PS C:\Users\37995> python -c "import torch; print(f'torch: {torch.__version__}')"

torch: 2.6.0+cu124

(rag_system) PS C:\Users\37995\miniconda3\envs\rag_system\nxktest> python -c "import chromadb; print('OK')"

OK

以下这些测试代码,询问AI都可以给出,具体内容不一样,大同小异:

Mode                 LastWriteTime         Length Name

-a----          2026/4/3     12:28            695 testdoc_loader.py

-a----          2026/4/2     12:08           1060 testembed.py

-a----          2026/4/2     11:57            200 testgpu.py

-a----          2026/4/3     11:53           2350 testllm.py

举例:

(rag_system) PS C:\Users\37995\miniconda3\envs\rag_system\nxktest> python testgpu.py

CUDA available: True

GPU: NVIDIA GeForce RTX 4060 Laptop GPU

VRAM: 8.0 GB

代码框架规划

先在ask模式让AI给出一个大致规划,看一下跟自己的预期是否类似,再转Agent模式比较安全,当然最后实现的跟这个其实有差异,可以对比后面的系统架构

d:\nxk\cursor1\rag1\          # 项目根目录

├── .env                      # 环境变量配置

├── requirements.txt         # 依赖清单

├── src/

│   ├── config.py             # 配置加载

│   ├── document_loader.py    # 文档加载与分块

│   ├── vector_store.py       # ChromaDB 向量库管理

│   ├── embedding_model.py    # Embedding 模型封装

│   ├── llm_model.py          # LLM 模型封装

│   └── rag_chain.py          # RAG 链(检索+生成)

├── data/

│   └── chroma_db/            # ChromaDB 持久化目录

└── tests/

└── test_basic.py         # 基础功能测试脚本

启动Agent

【注意】启动前,先设置一下Agent的行为模式,做一些限制。

不同的人需求不同,从安全角度考虑,我这里对Agent的设置限制比较多,主要是下面2个:

  1. 不允许Agent删除文件
  2. 每次Agent要执行命令时,都需要问我才能执行

更换为Agent模式,给Agent的提示词如下:

我想做一个IT技术类的RAG系统,本地有RTX4060,采用离线模型。之前讨论的方案是

1.使用 HuggingFace 方式直接加载本地模型

2.conda 环境

3.LangChain 

4.ChromaDB 向量数据库

5.下载的Embedding模型是D:\nxk\ai_models\bge-m3

6.下载的LLM模型是D:\nxk\ai_models\Qwen2.5-1.5B-Instruct

7. 我的技术文档在D:\nxk\ai_doc

打算在conda环境中进行调试,我在C:\Users\37995\miniconda3\envs\rag_system已经创建了一个conda环境为rag_system,Python版本为3.11,软件也已经安装且验证成功,请帮我做一个RAG系统,谢谢

Agent工作流程记录

AI Agent就开始工作了,Agent会默认检查环境,安装软件等,在安装软件的询问中,我就选择拒绝,然后Agent会检查一下软件是否都安装成功,然后一步步进行操作。

下面是Agent工作过程的一些关键记录:

首先列出12项全局工作内容,然后一项项完成:

  1. 创建 RAG 系统目录结构
  2. 编写 config.py 全局配置
  3. 编写 document_loader.py 文档加载模块
  4. 编写 text_splitter.py 文本分块模块
  5. 编写 embedding_model.py Embedding 模型封装
  6. 编写 vector_store.py 向量数据库模块
  7. 编写 retriever.py 检索模块
  8. 编写 llm_model.py LLM 模型封装
  9. 编写 rag_chain.py RAG 主流程链
  10. 编写 main.py 入口程序
  11. 编写 requirements.txt 依赖文件
  12. 安装依赖并调试运行

目录结构已创建。现在开始编写各个模块文件。让我批量创建所有文件。

目录创建成功。现在批量编写所有模块文件。

现在批量创建所有模块文件。

现在批量编写核心模块。

现在编写检索器、RAG 链、日志工具和入口程序。

。。。。。 一系列的代码生成过程,太多了就只选了几个。。。。。

然后检查环境是否满足:

All the required packages are already installed. Let me verify:

langchain: ✅ 1.2.14

langchain-core: ✅ 1.2.24

langchain-community: ✅ 0.4.1

chromadb: ✅ 1.5.5

sentence-transformers: ✅ 5.3.0

transformers: ✅ 4.57.6

torch: ✅ 2.6.0+cu124

bitsandbytes: ✅ 0.49.2

accelerate: ✅ 1.13.0

pypdf: ✅ 6.9.2

unstructured: ✅ 0.22.12

numpy: ✅ 2.4.3

tqdm: ✅ 4.67.3

所有依赖已安装。现在验证代码语法正确性。

所有模块语法正确。再创建一个 README 和一个快速验证脚本。

系统架构

main.py                 # 入口程序,交互式问答界面

└── rag_system/

    ├── config/         # 全局配置(路径、参数)

    ├── documents/      # 文档加载 + 文本分块

    ├── models/         # Embedding 模型 + LLM 模型

    ├── vectorstore/    # ChromaDB 向量库 + 检索器

    ├── rag_chain.py    # RAG 主流程(加载→分块→检索→生成)

└── utils/          # 日志工具

数据流向

技术文档 (D:\xk\ai_doc)  

    ↓

DocumentLoader (文档读取)

    ↓

TextSplitter (语义分块)

    ↓

BGEEmbeddings (生成向量)

    ↓

ChromaDB (向量存储)

    ↓

Retriever (相似度检索)

    ↓

QwenLLM (RAG Prompt + LLM 推理)

    ↓

最终回答

Agent总结

RAG 系统已全部完成,所有模块导入验证通过。以下是最终总结:

直接运行 python main.py 即可,有任何报错告诉我。

错误反馈

执行有问题,反馈给Agent,会自动修改代码,需要安装的软件会反馈给我来自行安装,可能是因为最初的软件安装我是拒绝的,所以Agent没有自动安装软件

比如识别docx文档时,还是需要补充安装了这个软件:

pip install python-docx

识别pdf文档时,遇到错误,反馈后Agent自行修改了软件,重新运行即可

运行效果

RAG前期初始化,加载模型

根据私有文档创建向量数据库

RAG问答测试1,验证pdf文档内容是否可以理解,验证成功

RAG问答测试2,验证docx和txt文档内容是否可以理解,重复内容是否可以处理,验证成功

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐