本地AI知识库搭建教程:RAG系统实战指南
很多粉丝问我怎么在本地搭建一个属于自己的AI知识库。今天安排上,用Ollama + LangChain + Chroma,纯本地运行,隐私有保障。
什么是RAG?
RAG = 检索增强生成。简单说就是:
- 把你的文档 Embedding 成向量
- 存到向量数据库
- 问问题时先检索相关段落
- 把检索结果喂给大模型生成答案
这样就不需要把隐私文档上传到云端了。
环境准备
硬件要求
- 显存:至少16GB(跑大模型用)
- 内存:32GB以上
- 硬盘:至少100GB SSD
软件环境
- Ubuntu 22.04 或 Windows WSL2
- Ollama
- Python 3.10+
- LangChain
- Chroma 向量数据库
搭建步骤
第一步:安装Ollama
curl -fsSL https://ollama.com/install.sh | sh
拉取模型:
ollama pull qwen2.5:7b
7B模型16GB显存够用,想要更强效果可以用14B或32B。
第二步:安装Python依赖
pip install langchain langchain-community langchain-chroma
pip install pypdf python-docx
pip install sentence-transformers
第三步:准备知识库文档
支持格式:PDF、Word、TXT、Markdown
我测试用的是PDF文档,把文件放到 docs/ 目录下。
第四步:编写代码
核心代码很简单,分三部分:
# 1. 文档加载
from langchain_community.document_loaders import PyPDFLoader
loader = PyPDFLoader("docs/yourfile.pdf")
docs = loader.load()
# 2. 文本分割
from langchain.text_splitter import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(chunk_size=500)
splits = splitter.split_documents(docs)
# 3. 向量化存储
from langchain_chroma import Chroma
from langchain_ollama import OllamaEmbeddings
embedding = OllamaEmbeddings(model="nomic-embed-text")
vectorstore = Chroma.from_documents(splits, embedding)
# 4. 问答
from langchain_ollama import ChatOllama
llm = ChatOllama(model="qwen2.5:7b")
qa = RetrievalQA.from_chain_type(llm, retriever=vectorstore.as_retriever())
answer = qa.invoke("你的问题")
第五步:运行测试
python rag.py
问一些文档相关的问题,比如:“这份文档的核心观点是什么?”
性能测试
我用N100 + 32GB内存实测:
| 模型 | 首次响应时间 | 内存占用 |
|---|---|---|
| qwen2.5:7b | 3-5秒 | 8GB |
| qwen2.5:14b | 6-8秒 | 16GB |
| deepseek-r1:14b | 8-10秒 | 18GB |
文档越多,检索时间会相应增加,但一般不会超过2秒。
常见问题
回答质量差
- 调大chunk_size
- 调整分割overlap
- 换更强的embedding模型
显存不够
- 用4bit量化模型
- 减少同时加载的文档量
总结
本地RAG知识库是个好东西,不用交会员费,不用担心隐私泄露。N100小主机就能跑,适合个人或小团队使用。
有问题的评论区见!记得一键三连!