大语言模型虽然具备强大的生成能力,但其知识来源于训练数据集,对于小众知识、内部数据或私密个人数据往往无法准确回答,甚至产生幻觉。为了解决这一问题,将私有数据挂载到大模型上成为主流方案。外挂知识库(RAG)相比微调门槛更低,主要涉及文档加载、切分、向量化、持久化存储及相似度检索等环节。
知识库预处理核心概念
1. 文件加载
支持多种格式,包括纯文本、PDF、Word、Markdown 等。需确保编码正确,避免乱码影响后续处理。
2. 文本分割 (TextSplitter)
将长文本按规则切分为小块,以便向量化。关键参数包括:
- separator: 分隔符,如换行符或特定标点。
- chunk_size: 文本块长度,通常根据上下文窗口大小设定。
- chunk_overlap: 块之间重叠长度,保留上下文连贯性。
- length_function: 计算长度的方法,可按字符数或 Token 数统计。
合理的分块策略能显著提升检索准确率,建议采用递归字符分割器。
3. 文本向量化与嵌入 (Embedding)
将离散文本转换为连续向量空间中的点。常用开源模型包括 Text2Vec、Ernie-3.0、M3E 等。在检索时,将用户问题转化为向量,与文档向量计算余弦相似度,返回得分最高的片段。
4. 持久化存储
使用向量数据库存储向量索引,便于快速检索。常见选择有 Chroma、Qdrant、Faiss 等。
环境准备
运行本地 LLM 需要较强的硬件支持。建议配置至少 16GB 显存的 GPU 服务器。ChatGLM2-6B 推理需约 12GB 显存,加上 LangChain 其他组件及 Embedding 模型开销,16GB 是最低推荐标准。若显存不足,可考虑量化版本模型。
部署 ChatGLM2 模型
ChatGLM2 是开源中英双语对话模型第二代,中文处理能力更强,支持更长上下文和高效推理。
1. 克隆仓库与安装依赖
git clone https://github.com/THUDM/ChatGLM2-6B.git
cd ChatGLM2-6B
pip install -r requirements.txt -i https://mirror.baidu.com/pypi/simple
2. 模型下载
自动下载:直接运行 web_demo.py,程序会自动检测并下载模型至 ~/.cache/huggingface/hub/models--THUDM--chatglm2-6b/blobs,大小约 10GB。
手动下载:使用 Git LFS 下载。
git lfs install
git clone https://huggingface.co/THUDM/chatglm2-6b
修改 web_demo.py 中的模型路径指向本地目录,并启用量化以节省显存:
model = AutoModel.from_pretrained("/mnt/workspace/chatglm2-6b", trust_remote_code=True).quantize(4).cuda()
3. 部署验证
启动 Web 服务,默认端口 7860。如需外网访问,修改启动参数:
demo.queue().launch(share=True, inbrowser=)


