五个配置 认识到langchain chatchat中用到的深度学习技术 包括向量搜索引擎、生成式语言模型、重排序模型与生成式语言模型在线接口。 chatchat-space/Langchain-Chatchat: Langchain-Chatchat(原Langchain-ChatGLM)基于 Langchain 与 ChatGLM 等语言模型的本地知识库问答 | Langchain-Chatchat (formerly langchain-ChatGLM), local knowledge based LLM (like ChatGLM) QA app with langchain (github.com)
第一个配置 向量引擎配置
python
"embed_model": {
"ernie-tiny": "nghuyong/ernie-3.0-nano-zh",
"ernie-base": "nghuyong/ernie-3.0-base-zh",
"text2vec-base": "shibing624/text2vec-base-chinese",
"text2vec": "GanymedeNil/text2vec-large-chinese",
"text2vec-paraphrase": "shibing624/text2vec-base-chinese-paraphrase",
"text2vec-sentence": "shibing624/text2vec-base-chinese-sentence",
"text2vec-multilingual": "shibing624/text2vec-base-multilingual",
"text2vec-bge-large-chinese": "shibing624/text2vec-bge-large-chinese",
"m3e-small": "moka-ai/m3e-small",
"m3e-base": "moka-ai/m3e-base",
"m3e-large": "moka-ai/m3e-large",
"bge-small-zh": "BAAI/bge-small-zh",
"bge-base-zh": "BAAI/bge-base-zh",
"bge-large-zh": "BAAI/bge-large-zh",
"bge-large-zh-noinstruct": "BAAI/bge-large-zh-noinstruct",
"bge-base-zh-v1.5": "BAAI/bge-base-zh-v1.5",
"bge-large-zh-v1.5": "BAAI/bge-large-zh-v1.5",
"bge-m3": "BAAI/bge-m3",
"piccolo-base-zh": "sensenova/piccolo-base-zh",
"piccolo-large-zh": "sensenova/piccolo-large-zh",
"nlp_gte_sentence-embedding_chinese-large": "damo/nlp_gte_sentence-embedding_chinese-large",
"text-embedding-ada-002": "your OPENAI_API_KEY",
}
这个配置文件中列出了多种嵌入模型,主要用于文本的向量表示,以便于后续的数据分析和处理。下面是这些模型的详细介绍:
- ERNIE 模型
ernie-tiny
: 这是一个小型化的 ERNIE 模型,适用于需要较小模型尺寸的场景。ernie-base
: 标准尺寸的 ERNIE 模型,提供了较好的性能和效率平衡。
- Text2Vec 模型
text2vec-base
: 基础的 Text2Vec 模型,用于生成文本的基本向量表示。text2vec
: 较大的 Text2Vec 模型,可以生成更丰富的文本向量表示。text2vec-paraphrase
: 用于生成文本同义词的向量表示。text2vec-sentence
: 用于生成句子级别的文本向量表示。text2vec-multilingual
: 多语言版本的 Text2Vec 模型,适用于多种语言的文本向量生成。text2vec-bge-large-chinese
: 基于 BGE 框架的较大中文文本向量模型。
- M3E 模型
m3e-small
: 小型化的 M3E 模型,适用于资源有限的环境。m3e-base
: 标准尺寸的 M3E 模型。m3e-large
: 较大的 M3E 模型,适用于需要更高性能的场景。
- BGE 模型
bge-small-zh
: 较小尺寸的 BGE 中文模型。bge-base-zh
: 标准尺寸的 BGE 中文模型。bge-large-zh
: 较大尺寸的 BGE 中文模型。bge-large-zh-noinstruct
: 去指令版本的 BGE 中文模型,适用于不需要指令的场景。bge-base-zh-v1.5
: BGE 中文模型的早期版本。bge-large-zh-v1.5
: BGE 中文模型的早期较大版本。bge-m3
: 结合了 BGE 和 M3E 特点的模型。
- Piccolo 模型
piccolo-base-zh
: 基础的 Piccolo 中文模型。piccolo-large-zh
: 较大尺寸的 Piccolo 中文模型。
- NLP GTE 模型
nlp_gte_sentence-embedding_chinese-large
: 用于中文句子嵌入的大模型。
- 其他模型
text-embedding-ada-002
: 这是一个 OpenAI 的模型,需要使用 API 密钥来访问。
这些模型通常用于文本分析、推荐系统、搜索引擎、自然语言生成和对话系统等领域。它们能够将文本转换为数字向量,从而使得计算机能够更好地理解和处理文本数据。
第二个配置生成式语言模型配置
python
"llm_model": {
"chatglm2-6b": "THUDM/chatglm2-6b",
"chatglm2-6b-32k": "THUDM/chatglm2-6b-32k",
"chatglm3-6b": "THUDM/chatglm3-6b",
"chatglm3-6b-32k": "THUDM/chatglm3-6b-32k",
"Orion-14B-Chat": "OrionStarAI/Orion-14B-Chat",
"Orion-14B-Chat-Plugin": "OrionStarAI/Orion-14B-Chat-Plugin",
"Orion-14B-LongChat": "OrionStarAI/Orion-14B-LongChat",
"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",
# Qwen1.5 模型 VLLM可能出现问题
"Qwen1.5-0.5B-Chat": "Qwen/Qwen1.5-0.5B-Chat",
"Qwen1.5-1.8B-Chat": "Qwen/Qwen1.5-1.8B-Chat",
"Qwen1.5-4B-Chat": "Qwen/Qwen1.5-4B-Chat",
"Qwen1.5-7B-Chat": "Qwen/Qwen1.5-7B-Chat",
"Qwen1.5-14B-Chat": "Qwen/Qwen1.5-14B-Chat",
"Qwen1.5-72B-Chat": "Qwen/Qwen1.5-72B-Chat",
"baichuan-7b-chat": "baichuan-inc/Baichuan-7B-Chat",
"baichuan-13b-chat": "baichuan-inc/Baichuan-13B-Chat",
"baichuan2-7b-chat": "baichuan-inc/Baichuan2-7B-Chat",
"baichuan2-13b-chat": "baichuan-inc/Baichuan2-13B-Chat",
"internlm-7b": "internlm/internlm-7b",
"internlm-chat-7b": "internlm/internlm-chat-7b",
"internlm2-chat-7b": "internlm/internlm2-chat-7b",
"internlm2-chat-20b": "internlm/internlm2-chat-20b",
"BlueLM-7B-Chat": "vivo-ai/BlueLM-7B-Chat",
"BlueLM-7B-Chat-32k": "vivo-ai/BlueLM-7B-Chat-32k",
"Yi-34B-Chat": "https://huggingface.co/01-ai/Yi-34B-Chat",
"agentlm-7b": "THUDM/agentlm-7b",
"agentlm-13b": "THUDM/agentlm-13b",
"agentlm-70b": "THUDM/agentlm-70b",
"falcon-7b": "tiiuae/falcon-7b",
"falcon-40b": "tiiuae/falcon-40b",
"falcon-rw-7b": "tiiuae/falcon-rw-7b",
"aquila-7b": "BAAI/Aquila-7B",
"aquilachat-7b": "BAAI/AquilaChat-7B",
"open_llama_13b": "openlm-research/open_llama_13b",
"vicuna-13b-v1.5": "lmsys/vicuna-13b-v1.5",
"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",
"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",
}
这个配置文件中列出了多种大型语言模型(LLM),主要用于对话系统、文本生成和理解等任务。下面是这些模型的详细介绍:
- ChatGLM 模型
ChatGLM2-6b
: 较小尺寸的 ChatGLM 模型。ChatGLM2-6b-32k
: 较大尺寸的 ChatGLM 模型,支持32k token 生成长度。ChatGLM3-6b
: 较小尺寸的 ChatGLM3 模型。ChatGLM3-6b-32k
: 较大尺寸的 ChatGLM3 模型,支持32k token 生成长度。
- Orion 模型
Orion-14B-Chat
: 较小尺寸的 Orion 模型。Orion-14B-Chat-Plugin
: 较大尺寸的 Orion 模型,支持插件扩展。Orion-14B-LongChat
: 用于长对话的 Orion 模型。
- Llama 模型
Llama-2-7b-chat-hf
: 较小尺寸的 Llama 模型。Llama-2-13b-chat-hf
: 较大尺寸的 Llama 模型。Llama-2-70b-chat-hf
: 非常大的 Llama 模型。
- Qwen 模型
Qwen-1_8B-Chat
: 较小尺寸的 Qwen 模型。Qwen-7B-Chat
: 较大尺寸的 Qwen 模型。Qwen-14B-Chat
: 更大尺寸的 Qwen 模型。Qwen-72B-Chat
: 非常大的 Qwen 模型。
- Qwen1.5 模型
Qwen1.5-0.5B-Chat
: 较小尺寸0.5B的 Qwen1.5 模型。Qwen1.5-1.8B-Chat
: 较大尺寸1.8B的 Qwen1.5 模型。Qwen1.5-4B-Chat
: 更大尺寸4B的 Qwen1.5 模型。Qwen1.5-7B-Chat
: 更大尺寸7B的 Qwen1.5 模型。Qwen1.5-14B-Chat
: 非常大14B的 Qwen1.5 模型。Qwen1.5-72B-Chat
: 非常非常大72B的 Qwen1.5 模型。
- Baichuan 模型
baichuan-7b-chat
: 较小尺寸的 Baichuan 模型。baichuan-13b-chat
: 较大尺寸的 Baichuan 模型。baichuan2-7b-chat
: 新一代的 Baichuan 模型。baichuan2-13b-chat
: 新一代的较大尺寸 Baichuan 模型。
- InternLM 模型
internlm-7b
: 较小尺寸的 InternLM 模型。internlm-chat-7b
: 用于对话的 InternLM 模型。internlm2-chat-7b
: 新一代的 InternLM 模型。internlm2-chat-20b
: 新一代的较大尺寸 InternLM 模型。
- BlueLM 模型
BlueLM-7B-Chat
: 较小尺寸的 BlueLM 模型。BlueLM-7B-Chat-32k
: 较大尺寸的 BlueLM 模型,内存占用更高。
- Yi 模型
Yi-34B-Chat
: 这是一个大型 Yi 模型,具体信息需要访问链接查看。
- AgentLM 模型
agentlm-7b
: 较小尺寸的 AgentLM 模型。agentlm-13b
: 较大尺寸的 AgentLM 模型。
第三个模块是重排序配置
python
"reranker": {
"bge-reranker-large": "BAAI/bge-reranker-large",
"bge-reranker-base": "BAAI/bge-reranker-base",
}
这个配置文件中列出了两种基于 BAAI(北京人工智能研究院)的 reranker 模型,用于提高自然语言处理任务的性能,尤其是在机器翻译、文本摘要和问答系统中。以下是这两种 reranker 模型的详细介绍:
bge-reranker-large
:- 这是一个大型的 reranker 模型,它具有更深的网络结构和更多的参数,因此通常能够提供更高的性能。
- 这种模型适合需要大量计算资源的任务,能够处理更复杂的文本数据。
bge-reranker-base
:- 这是一个基础版的 reranker 模型,相比于大型模型,它具有较少的参数和较浅的网络结构。
- 基础版模型在资源有限的情况下仍然能够提供不错的性能,适合中小型的应用场景。
这些 reranker 模型可以用来对文本序列进行重排序,以便更好地匹配用户的查询意图或者提高文本的质量。在实际应用中,reranker 模型通常会结合其他 NLP 模型一起使用,以实现更高效和准确的自然语言处理。
除了这些基础模型部分,langchain chatchat项目中引入了vllm用来加速模型推理效率。这样可以在同样的设备上获取到更快的生成速度。 在项目中支持vllm进行推理的模型包括以下几类。
python
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",
}
在项目中支持agent的模型包括以下几类
python
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",
]
这些模型都是支持智能体(agent)功能的大型语言模型。下面是对这些模型的简要介绍: openai-api:这可能指的是 OpenAI 提供的 GPT-4 模型,这是一种非常先进的自然语言处理模型,能够生成高质量的自然语言文本。 qwen-api:这可能是指 Qwen Max 模型,这是一种大型的语言模型,也用于生成自然语言文本。 zhipu-api:这指的是智谱 AI 公司提供的 GLM-4 模型,这是一种基于清华大学 KEG 实验室提出的 GLM 模型结构的先进语言模型。 Qwen:这可能指的是所有 Qwen 系列的本地下载模型,这些模型也可以用于自然语言生成。 ChatGLM3-6b:这是智谱 AI 公司开发的另一个模型,可能是指具有 600 亿参数的 ChatGLM3 模型,专门用于聊天机器人应用。 internlm2-chat-20b:这可能是指一种内部使用的 200 亿参数的语言模型,用于聊天机器人。 Orion-14B-Chat-Plugin:这可能是指一种基于 1400 亿参数的语言模型 Orion-14B 的聊天插件,用于增强聊天机器人的功能。 这些模型都是大型的预训练模型,具有强大的自然语言理解和生成能力,可以用于构建智能体、聊天机器人、文本生成等各种自然语言处理应用。在使用这些模型时,通常需要通过相应的 API 或接口进行调用。
这里我们看到了很多的在线的模型。在langchain chatchat项目中可以通过以下配置来使用千亿参数量级生成式语言模型能力
arduino
ONLINE_LLM_MODEL = {
"openai-api": {
"model_name": "gpt-4",
"api_base_url": "https://api.openai.com/v1",
"api_key": "",
"openai_proxy": "",
},
# 智谱AI API,具体注册及api key获取请前往 http://open.bigmodel.cn
"zhipu-api": {
"api_key": "",
"version": "glm-4",
"provider": "ChatGLMWorker",
},
# 具体注册及api key获取请前往 https://api.minimax.chat/
"minimax-api": {
"group_id": "",
"api_key": "",
"is_pro": False,
"provider": "MiniMaxWorker",
},
# 具体注册及api key获取请前往 https://xinghuo.xfyun.cn/
"xinghuo-api": {
"APPID": "",
"APISecret": "",
"api_key": "",
"version": "v3.5", # 你使用的讯飞星火大模型版本,可选包括 "v3.5","v3.0", "v2.0", "v1.5"
"provider": "XingHuoWorker",
},
# 百度千帆 API,申请方式请参考 https://cloud.baidu.com/doc/WENXINWORKSHOP/s/4lilb2lpf
"qianfan-api": {
"version": "ERNIE-Bot", # 注意大小写。当前支持 "ERNIE-Bot" 或 "ERNIE-Bot-turbo", 更多的见官方文档。
"version_url": "", # 也可以不填写version,直接填写在千帆申请模型发布的API地址
"api_key": "",
"secret_key": "",
"provider": "QianFanWorker",
},
# 火山方舟 API,文档参考 https://www.volcengine.com/docs/82379
"fangzhou-api": {
"version": "chatglm-6b-model",
"version_url": "",
"api_key": "",
"secret_key": "",
"provider": "FangZhouWorker",
},
# 阿里云通义千问 API,文档参考 https://help.aliyun.com/zh/dashscope/developer-reference/api-details
"qwen-api": {
"version": "qwen-max",
"api_key": "",
"provider": "QwenWorker",
"embed_model": "text-embedding-v1" # embedding 模型名称
},
# 百川 API,申请方式请参考 https://www.baichuan-ai.com/home#api-enter
"baichuan-api": {
"version": "Baichuan2-53B",
"api_key": "",
"secret_key": "",
"provider": "BaiChuanWorker",
},
# Azure API
"azure-api": {
"deployment_name": "", # 部署容器的名字
"resource_name": "", # https://{resource_name}.openai.azure.com/openai/ 填写resource_name的部分,其他部分不要填写
"api_version": "", # API的版本,不是模型版本
"api_key": "",
"provider": "AzureWorker",
},
# 昆仑万维天工 API https://model-platform.tiangong.cn/
"tiangong-api": {
"version": "SkyChat-MegaVerse",
"api_key": "",
"secret_key": "",
"provider": "TianGongWorker",
},
# Gemini API https://makersuite.google.com/app/apikey
"gemini-api": {
"api_key": "",
"provider": "GeminiWorker",
}
}
在 langchain chatchat
项目中,通过配置文件 ONLINE_LLM_MODEL
可以使用不同的大型语言模型(LLM)服务。这些配置允许项目接入各种千亿参数量级生成式语言模型的能力。下面是对这些配置的详细解释:
- openai-api :配置了 OpenAI 的 GPT-4 模型。你需要填写
api_base_url
(API的基础 URL),api_key
(API 密钥),以及可选的openai_proxy
(OpenAI 代理)。 - zhipu-api :配置了智谱 AI 的 GLM-4 模型。你需要填写
api_key
(API 密钥)和选择provider
(工作器)。 - minimax-api :配置了 Minimax 模型的使用。你需要填写
group_id
(组 ID),api_key
(API 密钥),以及is_pro
(是否为专业版本)和provider
(工作器)。 - xinghuo-api :配置了讯飞星火大模型的使用。你需要填写
APPID
(应用 ID),APISecret
(API 密钥),api_key
(API 密钥),以及version
(模型版本)和provider
(工作器)。 - qianfan-api :配置了百度千帆模型的使用。你需要填写
version
(模型版本),api_key
(API 密钥),secret_key
(密钥密钥),以及provider
(工作器)。 - fangzhou-api :配置了火山方舟模型的使用。你需要填写
version
(模型版本),version_url
(模型版本 URL),api_key
(API 密钥),secret_key
(密钥密钥),以及provider
(工作器)。 - qwen-api :配置了 Qwen 系列模型的使用。你需要填写
version
(模型版本)和api_key
(API 密钥),以及选择provider
(工作器)和embed_model
(嵌入模型)。 - baichuan-api :配置了百川模型的使用。你需要填写
version
(模型版本),api_key
(API 密钥),secret_key
(密钥密钥),以及provider
(工作器)。 - azure-api :配置了 Azure 模型的使用。你需要填写
deployment_name
(部署容器的名字),resource_name
(资源名称),api_version
(API 版本),api_key
(API 密钥),以及provider
(工作器)。 - tiangong-api :配置了昆仑万维天工模型的使用。你需要填写
version
(模型版本),api_key
(API 密钥),secret_key
(密钥密钥),以及provider
(工作器)。 - gemini-api :配置了 Gemini 模型的使用。你需要填写
api_key
(API 密钥)和选择provider
(工作器)。
每种模型服务都需要相应的 API 密钥和可能的其他配置信息,这些信息通常需要用户在模型服务提供商的官方网站上注册获取。通过这些配置,langchain chatchat
项目可以调用这些模型服务来实现自然语言生成和其他相关功能。