网站首页 > 资源文章 正文
Langchain-ChatChat是现在用的很广的一个大模型应用框架,基于 ChatGLM 等大语言模型与 Langchain 等应用框架实现,开源、可离线部署的检索增强生成(RAG)大模型知识库项目。前一段时间用过几次,哪个时候还叫Langchain-ChatGLM,感觉很不错。最近正好要做一个RAG系统,就又装了一次。这次因为是在Windows上装的,踩了点坑,记录了一下。
GitHub: https://github.com/chatchat-space/Langchain-Chatchat
添加图片注释,不超过 140 字(可选)
介绍
一种利用 langchain 思想实现的基于本地知识库的问答应用,目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。
实现原理如下图所示,过程包括加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 在文本向量中匹配出与问句向量最相似的 top k个 -> 匹配出的文本作为上下文和问题一起添加到 prompt中 -> 提交给 LLM生成回答。
添加图片注释,不超过 140 字(可选)
从文档处理角度来看,实现流程如下:
添加图片注释,不超过 140 字(可选)
本项目未涉及微调、训练过程,但可利用微调或训练对本项目效果进行优化。
解决的痛点
该项目是一个可以实现 __完全本地化__推理的知识库增强方案, 重点解决数据安全保护,私域化部署的企业痛点。 本开源方案采用Apache License,可以免费商用,无需付费。
安装步骤
主要是按照文档进行的安装,针对环境和具体需求进行了一些调整。
1. 环境配置
- 首先,确保你的机器安装了 Python 3.8 - 3.11 (我们强烈推荐使用 Python3.11)。
$ python --version Python 3.11.7
接着,创建一个虚拟环境,并在虚拟环境内安装项目的依赖
python >= 3.11
conda create -n chatchat_env python=3.11
conda activate chatchat_env
# 后续如果要激活这个环境运行
# $ conda activate chatchat_env
# 关闭运行
# $ conda deactivate
# 拉取仓库
$ git clone https://github.com/chatchat-space/Langchain-Chatchat.git
# 进入目录
$ cd Langchain-Chatchat
# 安装全部依赖,为了提升速度修改为国内的源
$ pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
$ pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements_api.txt
$ pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements_webui.txt
# 默认依赖包括基本运行环境(FAISS向量库)。如果要使用 milvus/pg_vector 等向量库,请将 requirements.txt 中相应依赖取消注释再安装。
请注意,LangChain-Chatchat 0.2.x 系列是针对 Langchain 0.0.x 系列版本的,如果你使用的是 Langchain 0.1.x 系列版本,需要降级您的Langchain版本。
2, 模型下载
如需在本地或离线环境下运行本项目,需要首先将项目所需的模型下载至本地,通常开源 LLM 与 Embedding 模型可以从 HuggingFace 下载。
官方给的是默认使用的 LLM 模型 THUDM/ChatGLM3-6B 与 Embedding 模型 BAAI/bge-large-zh 为例:
下载模型需要先安装 Git LFS ,然后运行
$ git lfs install
$ git clone https://huggingface.co/THUDM/chatglm3-6b
$ git clone https://huggingface.co/BAAI/bge-large-zh
# 我因为使用私有大模型,所以没有下载ChatGLM3-6b3.
3. 初始化知识库和配置文件
按照下列方式初始化自己的知识库和简单的复制配置文件
$ python copy_config_example.py
$ python init_database.py --recreate-vs
我因为用的大模型服务而不是本地运行大模型,所以需要修改\Langchain-Chatchat\configs\model_config.py
修改ONLINE_LLM_MODEL部分对应的内容,放入自己的API Key。
在运行到$python init_database.py --recreate-vs 的时候,我这报错。
添加图片注释,不超过 140 字(可选)
网上查找原因,主要是langchain在windows环境下的一个问题。具体讨论参考:
import pwd on windows · Issue #17514 · langchain-ai/langchain
看提示换个版本应该也能解决,不过为了不引起其他问题,我按照这个方法:
community[patch]: Fix pwd import that is not available on windows by vorel99 · Pull Request #17532 · langchain-ai/langchain
直接修改了对应的文件:
添加图片注释,不超过 140 字(可选)
4. 一键启动
按照以下命令启动项目
$ python startup.py -a
5. 启动界面示例
FastAPI Docs 界面
添加图片注释,不超过 140 字(可选)
Web UI 启动界面示例:
- Web UI 对话界面:
添加图片注释,不超过 140 字(可选)
同时配置了智谱和千帆。
- Web UI 知识库管理页面:
添加图片注释,不超过 140 字(可选)
调用langchain-chatchat API的例代码
以调用知识库API为例
import requests
import json
def chat_knowledge(message,kb_name):
url = f"http://localhost:7861/chat/knowledge_base_chat"
payload = {
"query": message,
"knowledge_base_name": kb_name,
"model_name": "qianfan-api"
}
response = requests.post(url, json=payload)
return response
def format_kb_answer(response):
# 找到 JSON 数据的起始位置
json_start_index = response.text.find('{')
# 提取 JSON 数据部分
json_data = response.text[json_start_index:]
# 解析 JSON 格式的字符串
data = json.loads(json_data)
# 提取 answer 字段的值
answer = data['answer']
# 提取 docs 字段的值
docs = data['docs']
# 将 '\n' 替换为换行符
docs_with_newlines = [doc.replace('\\n', '\n') for doc in docs]
print("Answer:")
print(answer)
print("\nDocs:")
for doc in docs_with_newlines:
print(doc)
response=chat_knowledge("请介绍一下如何办理保险", "insurance")
format_kb_answer(response)
添加图片注释,不超过 140 字(可选)
猜你喜欢
- 2024-10-27 信创技术分享银河麒麟V10服务器操作系统网卡不能自启动问题处理
- 2024-10-27 一定不要用默认的设置运行MongoDB数据库,我的一次被黑经历
- 2024-10-27 被讯搜虐得怀疑人生?这份笔记教你正确打开方式
- 2024-10-27 内穿软件推荐(设计内衣的软件)
- 2024-10-27 如何实现限流功能?(如何实现限流功能)
- 2024-10-27 浏览器跨域问题以及常用解决方案(浏览器跨域问题以及常用解决方案)
- 2024-10-27 你真的会用ocelot吗?记一次排查系统串账号之旅
- 2024-10-27 VMware中vCenter密码忘记后如何重置?
- 2024-10-27 客户端navicat遇到问题怎么办?(navicat登录)
- 2024-10-27 小心,别被eureka坑了(eureka是干嘛的)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)