本地 RAG 部署完全指南 (2026)

本地 RAG 部署完全指南

什么是 RAG?

RAG = Retrieval-Augmented Generation

简单来说:先从知识库检索相关文档,再让 LLM 根据检索结果生成答案。

用户问题 → 检索相似文档 → 拼接进Prompt → LLM生成答案

为什么本地部署 RAG?

优势 说明
🔒 隐私安全 数据不离开本地
💰 成本为零 无需API费用
🌐 离线可用 无需互联网
⚙️ 可定制 完全控制模型和数据

推荐的本地 RAG 方案

方案一:Ollama + LangChain(推荐入门)

最低配置: N100 + 8GB RAM

第一步:安装 Ollama

# Linux/Mac
curl -fsSL https://ollama.ai/install.sh | sh

# Windows: 下载安装包
# https://ollama.ai/download

第二步:拉取模型

ollama pull qwen3.5:0.8b   # 轻量,适合N100
ollama pull llama3.2         # 英文为主
ollama pull qwen2.5:3b      # 中英文,资源占用中等

第三步:安装依赖

pip install langchain langchain-ollama langchain-community
pip install chromadb          # 向量数据库
pip install beautifulsoup4    # 网页解析

第四步:基础 RAG 脚本

from langchain_community.document_loaders import WebLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_ollama import OllamaEmbeddings
from langchain.vectorstores import Chroma
from langchain_ollama import ChatOllama

# 1. 加载文档(可以是网页、PDF、TXT)
loader = WebLoader(["https://example.com/article"])
docs = loader.load()

# 2. 分块处理
splitter = RecursiveCharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=50
)
chunks = splitter.split_documents(docs)

# 3. 生成向量并存入向量数据库
embeddings = OllamaEmbeddings(model="qwen3.5:0.8b")
vectorstore = Chroma.from_documents(chunks, embeddings, persist_directory="./vector_db")

# 4. 构建检索链
retriever = vectorstore.as_retriever(search_kwargs={"k": 3})

# 5. 问答
llm = ChatOllama(model="qwen3.5:0.8b", temperature=0.7)

from langchain.chains import RetrievalQA
qa_chain = RetrievalQA.from_chain_type(llm=llm, retriever=retriever)

# 提问
result = qa_chain.invoke({"query": "这篇文章的主要内容是什么?"})
print(result["result"])

方案二:RAGFlow(生产级,推荐中文)

最低配置: 4GB RAM + Docker

安装步骤

# 克隆项目
git clone https://github.com/infiniflow/ragflow.git
cd ragflow

# 启动(Docker 环境)
docker compose up -d

# 访问界面
# http://localhost:9380

特点

  • 🌐 中文界面友好
  • 📄 支持 PDF, Word, TXT, Markdown
  • 🎨 可视化知识库管理
  • 🔍 多种检索算法

方案三:Dify(工作流自动化)

最低配置: 2GB RAM + Docker

# 安装
docker run -itd --name dify \
  -p 80:80 \
  -v ~/dify/data:/data \
  dify/dify-aio:latest

# 访问
# http://localhost:80

Dify vs RAGFlow

特性 RAGFlow Dify
定位 知识库问答 工作流自动化
中文优化 ⭐⭐⭐⭐⭐ ⭐⭐⭐
上手难度 简单 中等
定制性 一般 灵活

N100 (8GB RAM) 推荐配置

硬件:N100 + 8GB RAM + 256GB SSD
系统:Windows 11 或 Ubuntu Server

资源分配:
├── Ollama (Qwen3.5 0.8B): ~2GB RAM
├── ChromaDB: ~1GB RAM  
├── 操作系统: ~3GB RAM
└── 剩余: ~2GB RAM (缓冲)

推荐的模型组合

模型 用途 显存/内存
Qwen3.5 0.8B 轻量问答 2GB
Qwen2.5 3B 中等复杂度 4GB
Phi-3.5 3B 英文为主 4GB

RAG 优化技巧

1. 更好的分块策略

# 按段落分块,比固定长度更好
from langchain.text_splitter import MarkdownTextSplitter

splitter = MarkdownTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = splitter.split_documents(docs)

2. 混合检索

from langchain.retrievers import EnsembleRetriever

# 关键词检索 + 向量检索 混合
retriever = EnsembleRetriever(
    retrievers=[keyword_retriever, vector_retriever],
    weights=[0.3, 0.7]
)

3. 查询改写

# 将用户问题改写后再检索,效果更好
from langchain.prompts import PromptTemplate

prompt = PromptTemplate(
    template="""基于以下问题,改写成一个完整的检索查询:
    
    问题:{question}
    改写后:""",
    input_variables=["question"]
)

常见问题

Q: N100 能跑多大的模型?

A: 推荐 0.8B-3B 参数模型,更大的模型建议用 7B+ 但需要更多内存。

Q: 向量数据库占用多少空间?

A: 取决于文档量,一般 1万字文档 ~1MB 向量存储。

Q: 可以用 GPU 加速吗?

A: N100 没有独立GPU,但 Ollama 会用 CPU 推理,速度较慢但能用。

Q: 支持中文吗?

A: 是的,使用 qwen 系列模型中文支持很好。


下一步

  1. 先用 Ollama 跑通基础 RAG → 最简单
  2. 然后试 RAGFlow → 中文友好
  3. 最后 Dify → 复杂工作流

最后更新:2026-04-11