赞
踩
基于embedding+LangChain+ChatGLM2-6B 构建行业知识库
本文使用的Langchain-Chatchat版本是0.2.7
方案一:使用开源LLM本地部署和微调
方案二:基于LLM+向量数据库
1. 下载代码仓库准备基础环境
# 拉取仓库
git clone https://github.com/chatchat-space/Langchain-Chatchat.git
# 进入目录
cd Langchain-Chatchat
# 安装全部依赖
pip install -r requirements.txt
pip install -r requirements_api.txt
pip install -r requirements_webui.txt
# 默认依赖包括基本运行环境(FAISS向量库)。如果要使用 milvus/pg_vector 等向量库,请将 requirements.txt 中相应依赖取消注释再安装。
2. 下载模型文件
git lfs install
# 下载ChatGLM2模型
git-lfs clone https://huggingface.co/THUDM/chatglm2-6b
# 下载文本转向量模型
git-lfs clone https://huggingface.co/shibing624/text2vec-base-chinese
3. 初始化参数配置
python copy_config_example.py
该脚本将会将所有config目录下的配置文件样例复制一份到config目录下,方便开发者进行配置。 接着,开发者可以根据自己的需求,对配置文件进行修改。
该配置基负责记录日志的格式和储存路径,通常不需要修改。
模型配置项 model_config.py的核心参数
知识库配置项 kb_config.py
配置与知识库相关的参数,包括知识库的名称,使用的向量数据库类型,文本拆分策略,采用哪种分词器等
提示词配置项 prompt_config.py
prompt模板使用Jinja2语法,简单点就是用双大括号代替f-string的单大括号 请注意,本配置文件支持热加载,修改prompt模板后无需重启服务。
配置服务绑定的IP和端口,以及相应超时时间等参数
4. 初始化知识库
python init_database.py --recreate-vs
5. 加载LoRA微调后的baichuan模型
基于LLaMA-Factory开源代码使用LoRA方法微调baichuan2-base基座模型。
python src/export_model.py --model_name_or_path XXX --template default --finetuning_type lora --checkpoint_dir XXX --export_dir XXX
其中,–model_name_or_path对应基座模型的路径,–checkpoint_dir对应LoRA微调之后保存的参数李静,–export_dir对应合并之后保存的路径
Langchain-Chatchat基于 FastChat 加载 LLM 服务,故需以 FastChat 加载 PEFT 路径。针对chatglm,falcon,codet5p以外的模型,以及非p-tuning以外的peft方法,需对peft文件进行修改,步骤如下:
针对p-tuning和chatglm模型,需要对fastchat进行较大幅度的修改。参考微调模型加载实操
6. 启动服务
python startup.py --all-webui
参考下列文章:
【知识库问答】-LangChain实战提升指南(强烈推荐)
大模型行业问答应用实践:数据向量化、RAG、langchain、Agent技术
1. 加载baichuan模型失败
问题: Langchain-Chatchat加载baichuan模型报错 AttributeError: ‘BaichuanTokenizer’ object has no object ‘sp_model’
解决办法:
[BUG] ‘BaichuanTokenizer’ object has no attribute ‘sp_model’ #1665
AttributeError: ‘BaichuanTokenizer’ object has no attribute ‘sp_model’ #204
2. 文本相似度计算不准确
问题: 基于query文本检索不到知识库中对应的上下文内容,导致模型回复的内容不准确
解决办法: 可以参考【知识库问答】-LangChain实战提升指南的解决方案
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。