前言
在数据隐私日益重要的今天,使用云端AI服务处理敏感信息存在风险。本文将指导你使用LangChain框架结合本地部署的开源大模型(如Llama 3、Mistral等),搭建一个完全离线、私有的AI知识库。
环境准备
硬件要求
- 至少16GB显存的GPU(推荐RTX 4090或A100)
- 64GB系统内存
- 100GB可用磁盘空间
软件依赖
- Python 3.10+
- LangChain 0.3+
- Ollama 或 llama.cpp 用于本地模型部署
- ChromaDB 作为向量数据库
步骤一:部署本地大模型
使用Ollama快速部署Llama 3 70B模型:
ollama pull llama3:70b
ollama serve
或者使用llama.cpp进行更灵活的部署:
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make
./main -m llama-3-70b-q4_K_M.gguf --interactive
步骤二:安装LangChain及依赖
pip install langchain langchain-community chromadb
步骤三:加载文档并构建向量索引
from langchain.document_loaders import DirectoryLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import Chroma
# 加载文档
loader = DirectoryLoader("./docs", glob="**/*.md")
documents = loader.load()
# 分割文本
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
docs = text_splitter.split_documents(documents)
# 使用本地嵌入模型
embeddings = HuggingFaceEmbeddings(model_name="BAAI/bge-small-zh-v1.5")
# 创建向量数据库
vectorstore = Chroma.from_documents(docs, embeddings, persist_directory="./chroma_db")
步骤四:构建RAG链路
from langchain.llms import Ollama
from langchain.chains import RetrievalQA
# 连接本地模型
llm = Ollama(model="llama3:70b", base_url="http://localhost:11434")
# 创建检索QA链
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=vectorstore.as_retriever()
)
# 提问
question = "公司的数据安全政策是什么?"
answer = qa_chain.run(question)
print(answer)
步骤五:启动Web界面(可选)
使用Gradio或Streamlit快速构建聊天界面:
import gradio as gr
def answer_question(question):
return qa_chain.run(question)
iface = gr.Interface(fn=answer_question, inputs="text", outputs="text")
iface.launch()
注意事项
- 确保本地模型已正确部署并可通过API访问。
- 文档分割的块大小和重叠度会影响检索质量,建议实验不同参数。
- 对于中文场景,推荐使用BGE或M3E等中文嵌入模型。
总结
通过以上步骤,你已成功搭建了一个私有化AI知识库。所有数据和计算都在本地完成,无需担心隐私泄露。你可以扩展此方案,添加更多文档源、优化检索策略,甚至结合多模态模型。