目录
引言
上文我们说到LangChain与Agent实现,本文来简单说说其“衍生品”LangChain-Chatchat的概念和实例,为落地实践做好准备。目前小马的项目上用的是旧版Langchain-ChatGLM,但同样也计划升级为LangChain-Chatchat。
一、什么是LangChain-Chatchat
LangChain-Chatchat (原Langchain-ChatGLM)
基于 ChatGLM 等大语言模型与 Langchain 等应用框架实现,开源、可离线部署的 RAG 与 Agent 应用项目。一种利用 LangChain思想实现的基于本地知识库的问答应用,目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。
源码:https://github.com/chatchat-space/Langchain-Chatchat
源码安装文档:https://github.com/chatchat-space/Langchain-Chatchat/blob/master/docs/contributing/README_dev.md
二、LangChain与LangChain-Chatchat区别
LangChain-Chatchat(原 Langchain-ChatGLM)是基于Langchain与ChatGLM等大语言模型的本地知识库问答应用实现。小马理解是两者类似框架脚手架和工程实现的区别。
如果需要快速实现本地知识库问答应用RAG,选LangChain-Chatchat最快了。
三、LangChain-Chatchat 例子
这里有两篇关于LangChain-Chatchat安装配置启动部署的文章《Langchain-Chatchat大语言模型本地知识库》、《部署 LangChain-ChatChat-02配置参考》。
不同版本有差异,大概核心总结为需要配置模型配置项model_config.py,大模型LLM分远程在线的和本地的模型配置。远程是配置api,本地模型如果没有本地已下载好的模型则会自动下载模型到本地。如图。
配置完模型,然后配置当前需要启动/开启的模型,即直接将LLM配置的name再对应配置进加载数组LLM_MODELS中。
比如下面几个配置参考:
调用本地LLM模型
配置了本地LLM模型chatglm3-6b的本地路径并开启了模型加载chatglm3-6b。
模型本地路径配置。
LLM_MODELS开启加载模型。
Langchain-Chatchat调用本地Qwen/Qwen-1_8B-Chat模型(流程)的例子:https://zhuanlan.zhihu.com/p/693726392
调用远程在线LLM模型API
Langchain-Chatchat调用远程的接口的例子:https://www.bilibili.com/read/cv35801336/
涉及如何配置(ONLINE_LLM_MODEL),配置好远程LLM,然后将你想使用的API添加到LLM_MODELS的[ ]里,才能在启动项目时加载。
新版本不再支持本地模型路径直接进行加载
从 0.3.0 版本起,Langchain-Chatchat 不再根据用户输入的本地模型路径直接进行模型加载,涉及到的模型种类包括LLM、Embedding、Reranker及后续会提供支持的多模态模型等,均改为支持市面常见的各大模型推理框架接入,如 Xinference、Ollama、LocalAI、FastChat、One API
等。
因此,请确认在启动 Langchain-Chatchat 项目前,首先进行模型推理框架的运行,并加载所需使用的模型。
最新版本的Langchain-Chatchat配置文件。
运行log界面参考如下:
依次输出了3个开启加载的模型的调用方式和具体服务信息。
一直很疑惑Langchain-Chatchat是如何封装能做到所有模型都能兼容调用的?这大概是不是和Langchain本身的实现有关,抽象了模型的用。这块小马也想之后通过实践具体来探索一份,期待整理文章的输出^^。
Langchain所有ChatModel聊天模型都实现了Runnable接口,该接口带有所有方法的默认实现,即ainvoke、batch、abatch、stream、astream。这使得所有聊天模型都能基本支持异步、流式传输和批量处理。具体支持情况官方文档有列出。
更多AI落地资料还可以参看这里AI应用落地。还有疑问可以来公众号【贝可林】私信我,我骑共享单车到你家探讨。
- 彩蛋时间~