LangChain本地RAG私有知识库住宅服务器部署教程

为什么要在住宅服务器部署本地 RAG 知识库

很多人想把公司文档、个人笔记、电子书整理成一个能搜索问答的私有知识库。
如果直接调用云端 API,数据会上传第三方,存在隐私风险。
LangChain 本地 RAG 私有知识库 完全在本地运行,数据不出屋。
用家里的旧迷你主机或 NAS 搭建一台住宅服务器,就能跑起来。
本文从零开始,手把手带你完成整套部署。

准备一台能跑的住宅服务器

硬件最低要求:4 核 CPU、8GB 内存、40GB 空闲硬盘
如果运行 7B 参数的模型(如 llama3),建议 16GB 内存以上。
推荐系统为 Ubuntu 22.04 LTS(Debian 12 也可)。
你需要先装好 Docker 和 Docker Compose:

# 安装 Docker
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
# 退出 SSH 重新登录,让用户组生效

接着安装 Python 3.10+(推荐 3.11)和 pip:

sudo apt update
sudo apt install python3.11 python3.11-venv python3-pip -y

搭建本地模型与向量数据库

本地 RAG 需要两个模型:嵌入模型(把文本转成向量)和 生成模型(回答问题)。
用 Ollama 一键管理:

# 用 Docker 启动 Ollama
docker run -d -v /mnt/ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
# 拉取轻量嵌入模型(约 500MB)
docker exec -it ollama ollama pull nomic-embed-text
# 拉取对话模型(以 qwen2:7b 为例)
docker exec -it ollama ollama pull qwen2:7b

向量数据库选择 ChromaDB,轻量且兼容 LangChain。
同样用 Docker 启动:

docker run -d -p 8000:8000 --name chromadb chromadb/chroma:latest

编写 LangChain 检索问答代码

创建一个项目目录并安装依赖:

mkdir ~/langchain-rag && cd ~/langchain-rag
python3.11 -m venv venv
source venv/bin/activate
pip install langchain langchain-community chromadb sentence-transformers pdfplumber

新建 app.py,实现从 PDF/文本文件加载、向量化、检索并回答的流程:

import os
from langchain_community.document_loaders import PDFPlumberLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.embeddings import OllamaEmbeddings
from langchain_community.vectorstores import Chroma
from langchain_community.llms import Ollama
from langchain.chains import RetrievalQA

# 1. 加载文档(支持 PDF 和纯文本)
loader = PDFPlumberLoader("/path/to/your/doc.pdf")  # 替换为你的文件
docs = loader.load()

# 2. 切分文本
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
splits = splitter.split_documents(docs)

# 3. 生成向量并存入 Chroma
embed = OllamaEmbeddings(model="nomic-embed-text", base_url="http://localhost:11434")
vectordb = Chroma.from_documents(splits, embed, persist_directory="./chroma_db")

# 4. 创建问答链
llm = Ollama(model="qwen2:7b", base_url="http://localhost:11434")
qa = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=vectordb.as_retriever())

# 5. 提问
question = "这篇文章主要讲了什么?"
result = qa.invoke({"query": question})
print(result["result"])

运行前把 /path/to/your/doc.pdf 换成你的文档实际路径。
第一次运行会下载 embedding 模型(约 500MB)。
运行命令:

python app.py

避坑指南与高频问题

  • Ollama 端口无法连接:检查 docker ps 确保 ollama 容器在运行,且端口正确映射。也可以在容器内测试:docker exec -it ollama curl http://localhost:11434/api/tags
  • 向量数据库报错“duplicate entry”:每次重新运行前删除 ./chroma_db 目录,或者换一个持久化路径。
  • 内存不足导致 Ollama 崩溃:7B 模型至少需要 8GB 空闲内存,建议关闭其他容器或桌面环境。可以用 ollama pull qwen2:7b 替代部分大模型。
  • 中文回答质量差:选择对中文支持更好的模型(比如 Qwen2 系列),并确保文档内容为真实文本,而不是扫描图片。

验证效果与后续扩展

运行上述代码后,修改 question 变量测试不同问题。
如果返回的答案与文档内容吻合,说明 LangChain 本地 RAG 私有知识库已经成功搭建。
后续你可以:

  • 通过 GradioStreamlit 编写一个简单的网页对话框。
  • 批量导入多个文档,用文件夹加载器。
  • 调整 chunk_sizechunk_overlap 优化检索精度。
  • 用 Nginx 反代将 API 暴露给内网其他设备。

遇到报错时优先检查模型是否已拉取、向量数据库是否正确持久化。
这篇 LangChain本地RAG私有知识库住宅服务器部署教程 提供的就是一套可复现的基线,你可以根据自己的知识库需求灵活调整。

分享到:
上一篇
ReAct思维框架搭建自动化故障排查智能机器人完整教程
下一篇
vLLM多GPU张量并行大模型推理完整实操教程
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意