本地AI知识库搭建教程:RAG系统实战指南

本地AI知识库搭建教程:RAG系统实战指南

很多粉丝问我怎么在本地搭建一个属于自己的AI知识库。今天安排上,用Ollama + LangChain + Chroma,纯本地运行,隐私有保障。

什么是RAG?

RAG = 检索增强生成。简单说就是:

  1. 把你的文档 Embedding 成向量
  2. 存到向量数据库
  3. 问问题时先检索相关段落
  4. 把检索结果喂给大模型生成答案

这样就不需要把隐私文档上传到云端了。

环境准备

硬件要求

  • 显存:至少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:7b3-5秒8GB
qwen2.5:14b6-8秒16GB
deepseek-r1:14b8-10秒18GB

文档越多,检索时间会相应增加,但一般不会超过2秒。

常见问题

回答质量差

  • 调大chunk_size
  • 调整分割overlap
  • 换更强的embedding模型

显存不够

  • 用4bit量化模型
  • 减少同时加载的文档量

总结

本地RAG知识库是个好东西,不用交会员费,不用担心隐私泄露。N100小主机就能跑,适合个人或小团队使用。

有问题的评论区见!记得一键三连!


← 返回首页