Langchain-Chatchat在windows平台离线部署(2)

本文详细介绍了如何在Windows平台上离线部署Langchain-Chatchat,包括下载所需的大语言模型和文本嵌入模型,以及如何配置model_config.py以适应本地环境,确保模型的准确识别和运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Langchain-Chatchat在windows平台离线部署(2)

离线模型的准备

如需要将大语言模型放在本地或者离线环境下运行Langchat-chatchat,首先需要将项目所需要的模型下载到本地。
通常可用的开源模型都可使用。在本项目中,使用的是ChatGML3-6B的大语言模型和bge-Large-zh的文本嵌入模型。
相应模型的下载地址如下
LLM模型
Embedding模型

注意

下载后的模型,为了保证能准确的识别,需要放置在项目文件夹下的THUDM文件夹中。

C:\VM\Chatbot\Langchain-Chatchat-master\THUDM

离线模型的配置

项目的模型的配置文件来源于,命名为model_config.py。

C:\VM\Chatbot\Langchain-Chatchat-master\configs

其中需要更新的内容包括:
模型的根目录:MODEL_ROOT_PATH
Embedding 模型的名称:EMBEDDING_MODEL
Embedding 模型运行设备:EMBEDDING_DEVICE
运行的 LLM 名称:LLM_MODELS
LLM 模型运行设备:LLM_DEVICE
本地模型存储位置:MODEL_PATH
本项目中,修改后的配置文件如下:

import os

# 可以指定一个绝对路径,统一存放所有的Embedding和LLM模型。
# 每个模型可以是一个单独的目录,也可以是某个目录下的二级子目录。
# 如果模型目录名称和 MODEL_PATH 中的 key 或 value 相同,程序会自动检测加载,无需修改 MODEL_PATH 中的路径。
MODEL_ROOT_PATH = r"C:\VM\Chatbot\Langchain-Chatchat-master\THUDM"

# 选用的 Embedding 名称
EMBEDDING_MODEL = "bge-large-zh-v1.5"

# Embedding 模型运行设备。设为 "auto" 会自动检测(会有警告),也可手动设定为 "cuda","mps","cpu","xpu" 其中之一。
EMBEDDING_DEVICE = "cpu"

# 选用的reranker模型
RERANKER_MODEL = "bge-reranker-large"
# 是否启用reranker模型
USE_RERANKER = False
RERANKER_MAX_LENGTH = 1024

# 如果需要在 EMBEDDING_MODEL 中增加自定义的关键字时配置
EMBEDDING_KEYWORD_FILE = "keywords.txt"
EMBEDDING_MODEL_OUTPUT_PATH = "output"

# 要运行的 LLM 名称,可以包括本地模型和在线模型。列表中本地模型将在启动项目时全部加载。
# 列表中第一个模型将作为 API 和 WEBUI 的默认模型。
# 在这里,我们使用目前主流的两个离线模型,其中,chatglm3-6b 为默认加载模型。
# 如果你的显存不足,可使用 Qwen-1_8B-Chat, 该模型 FP16 仅需 3.8G显存。

LLM_MODELS = ["chatglm3-6b"] # ["chatglm3-6b", "zhipu-api", "openai-api"]
Agent_MODEL = None

# LLM 模型运行设备。设为"auto"会自动检测(会有警告),也可手动设定为 "cuda","mps","cpu","xpu" 其中之一。
LLM_DEVICE = "cpu"

HISTORY_LEN = 3

MAX_TOKENS = 2048

TEMPERATURE = 0.7

ONLINE_LLM_MODEL = {
    # 智谱AI API
    #"chatglm3-6b": {
    #    "name": "chatglm3-6b",
    #    "pretrained_model_name": "THUDM/chatglm2-6b",
    #    "local_model_path": r"C:\VM\Chatbot\Langchain-Chatchat-master\THUDM\chatglm3-6b",
     #   "provides": "ChatGLMLLMChain"
    #},
}

# 在以下字典中修改属性值,以指定本地embedding模型存储位置。支持3种设置方法:
# 1、将对应的值修改为模型绝对路径
# 2、不修改此处的值(以 text2vec 为例):
#       2.1 如果{MODEL_ROOT_PATH}下存在如下任一子目录:
#           - text2vec
#           - GanymedeNil/text2vec-large-chinese
#           - text2vec-large-chinese
#       2.2 如果以上本地路径不存在,则使用huggingface模型

MODEL_PATH = {
    "embed_model": {
        "bge-large-zh-v1.5":r"C:\VM\Chatbot\Langchain-Chatchat-master\THUDM\bge-large-zh-v1.5",
    },

    "llm_model": {
        "chatglm3-6b": r"C:\VM\Chatbot\Langchain-Chatchat-master\THUDM\chatglm3-6b",
    },

    "reranker": {
        "bge-reranker-large": "BAAI/bge-reranker-large",
        "bge-reranker-base": "BAAI/bge-reranker-base",
    }
}

# 通常情况下不需要更改以下内容

# nltk 模型存储路径
NLTK_DATA_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), "nltk_data")

# 使用VLLM可能导致模型推理能力下降,无法完成Agent任务
VLLM_MODEL_DICT = {
    "chatglm2-6b": "THUDM/chatglm2-6b",
    "chatglm2-6b-32k": "THUDM/chatglm2-6b-32k",
    "chatglm3-6b": "THUDM/chatglm3-6b",
    "chatglm3-6b-32k": "THUDM/chatglm3-6b-32k",

    "Llama-2-7b-chat-hf": "meta-llama/Llama-2-7b-chat-hf",
    "Llama-2-13b-chat-hf": "meta-llama/Llama-2-13b-chat-hf",
    "Llama-2-70b-chat-hf": "meta-llama/Llama-2-70b-chat-hf",

    "Qwen-1_8B-Chat": "Qwen/Qwen-1_8B-Chat",
    "Qwen-7B-Chat": "Qwen/Qwen-7B-Chat",
    "Qwen-14B-Chat": "Qwen/Qwen-14B-Chat",
    "Qwen-72B-Chat": "Qwen/Qwen-72B-Chat",

    "baichuan-7b-chat": "baichuan-inc/Baichuan-7B-Chat",
    "baichuan-13b-chat": "baichuan-inc/Baichuan-13B-Chat",
    "baichuan2-7b-chat": "baichuan-inc/Baichuan-7B-Chat",
    "baichuan2-13b-chat": "baichuan-inc/Baichuan-13B-Chat",

    "BlueLM-7B-Chat": "vivo-ai/BlueLM-7B-Chat",
    "BlueLM-7B-Chat-32k": "vivo-ai/BlueLM-7B-Chat-32k",

    "internlm-7b": "internlm/internlm-7b",
    "internlm-chat-7b": "internlm/internlm-chat-7b",
    "internlm2-chat-7b": "internlm/Models/internlm2-chat-7b",
    "internlm2-chat-20b": "internlm/Models/internlm2-chat-20b",

    "aquila-7b": "BAAI/Aquila-7B",
    "aquilachat-7b": "BAAI/AquilaChat-7B",

    "falcon-7b": "tiiuae/falcon-7b",
    "falcon-40b": "tiiuae/falcon-40b",
    "falcon-rw-7b": "tiiuae/falcon-rw-7b",
    "gpt2": "gpt2",
    "gpt2-xl": "gpt2-xl",
    "gpt-j-6b": "EleutherAI/gpt-j-6b",
    "gpt4all-j": "nomic-ai/gpt4all-j",
    "gpt-neox-20b": "EleutherAI/gpt-neox-20b",
    "pythia-12b": "EleutherAI/pythia-12b",
    "oasst-sft-4-pythia-12b-epoch-3.5": "OpenAssistant/oasst-sft-4-pythia-12b-epoch-3.5",
    "dolly-v2-12b": "databricks/dolly-v2-12b",
    "stablelm-tuned-alpha-7b": "stabilityai/stablelm-tuned-alpha-7b",
    "open_llama_13b": "openlm-research/open_llama_13b",
    "vicuna-13b-v1.3": "lmsys/vicuna-13b-v1.3",
    "koala": "young-geng/koala",
    "mpt-7b": "mosaicml/mpt-7b",
    "mpt-7b-storywriter": "mosaicml/mpt-7b-storywriter",
    "mpt-30b": "mosaicml/mpt-30b",
    "opt-66b": "facebook/opt-66b",
    "opt-iml-max-30b": "facebook/opt-iml-max-30b",

}

SUPPORT_AGENT_MODEL = [
    #"openai-api",  # GPT4 模型
    #"qwen-api",  # Qwen Max模型
    #"zhipu-api",  # 智谱AI GLM4模型
    #"Qwen",  # 所有Qwen系列本地模型
    "chatglm3-6b",
    #"internlm2-chat-20b",
    #"Orion-14B-Chat-Plugin",
]

### 关于 Langchain-Chatchat 的开发信息 #### 项目概述 Langchain-Chatchat 是一个基于大语言模型与应用框架实现的知识库项目,支持开源并可以离线部署。此项目利用检索增强生成 (RAG) 技术来提升对话系统的性能和准确性[^1]。 #### 文件加载器配置 对于 `.docx` 等非结构化文件的处理,可以通过 `langchain.document_loaders.UnstructuredFileLoader` 来完成。需要注意的是,在某些情况下可能还需要额外安装一些依赖包以确保正常工作,请参照官方文档获取更多信息[^2]。 #### Windows 平台上的环境搭建指南 为了在 Win11 上成功部署该大型模型,以下是具体的操作步骤: - 使用 Git 命令克隆远程仓库到本地计算机上: ```bash git clone https://github.com/chatchat-space/Langchain-Chatchat.git ``` - 切换至刚下载下来的项目根目录下继续操作: ```bash cd Langchain-Chatchat ``` - 执行 Python 脚本来批量安装所需的第三方库: ```bash pip install -r requirements.txt ``` 上述命令将会自动解析并下载所有必要的软件包版本,从而简化了前期准备工作流程[^3]。 #### 示例代码片段展示如何创建简单的聊天机器人实例 下面给出了一段简短的例子用来说明怎样快速启动一个基于 Langchain-Chatchat 架构的应用程序: ```python from langchain.chains import RetrievalQAWithSourcesChain from langchain.embeddings.openai import OpenAIEmbeddings from langchain.vectorstores.faiss import FAISS from langchain.llms.base import LLM import os os.environ["OPENAI_API_KEY"] = "your_api_key_here" embeddings_model = OpenAIEmbeddings() vector_store = FAISS.load_local("path_to_your_vectorstore", embeddings=embeddings_model) qa_chain = RetrievalQAWithSourcesChain.from_llm( llm=LLM(), retriever=vector_store.as_retriever() ) query = "What is the capital of France?" result = qa_chain({"question": query}) print(f"Answer: {result['answer']}") ``` 这段脚本展示了通过集成向量数据库以及调用预训练好的自然语言理解模块,实现了针对特定查询返回最相关答案的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值