
在人工智能飞速发展的当下,自然语言处理领域的创新成果层出不穷。Langchain-Chatchat-V0.3 便是其中备受瞩目的存在,它是基于 Langchain 思想精心打造的、面向本地知识库的智能问答应用,旨在为中文场景和开源模型提供极为友好的支持,并且能够实现离线运行,为用户打造独特的知识库问答解决方案 。简单来说,Langchain-Chatchat-V0.3 就像是一个知识渊博的智能助手,你不仅能和它进行日常的聊天对话,还能向它询问各种专业问题,它都能依据你提供的本地知识储备,给出准确且令人满意的回答。
一、强大功能大揭秘
1.1 广泛的模型兼容性
Langchain-Chatchat-V0.3 有着极为出色的模型兼容性,能够无缝集成各类主流开源 LLM 和 Embedding 模型,为用户提供了丰富的选择空间。无论你是青睐于使用本地的离线模型,享受数据隐私保护和稳定运行的便利;还是更倾向于借助在线 API,利用云端强大的计算资源和最新的模型更新,它都能完美适配 。就像在一个大型的知识超市里,你可以自由挑选最符合自己需求的 “知识商品”,无论是开源的 “平价好物”,还是功能强大的 “高端精品”,Langchain-Chatchat-V0.3 都能帮你轻松整合,让它们在你的知识问答场景中发挥最大效用。支持四种方式接入LLM 和 Embedding 模型,分别是Xinference、ollama、openai、oneapi,前两种只需要在model\_settings.yaml文件中配置对应的模型名字即可,后两种还需要配置base\_url和API-key。
1.2 多样化检索机制
在信息爆炸的时代,高效准确的检索至关重要。除了向量检索这种常见且高效的方式外,Langchain-Chatchat-V0.3 还新增了对 BM25 和 KNN 等多种检索算法的支持 。这就好比一位经验丰富的图书管理员,面对读者的各种问题,不仅能通过一种索引方式快速找到相关书籍,还能根据不同的问题类型和需求,灵活运用多种检索方法,为读者提供更精准的答案。比如,在处理一些需要对文本内容进行深度语义分析的问题时,向量检索能够发挥其优势;而当面对一些更注重关键词匹配和文本相关性的场景,BM25 算法就能大显身手,帮助用户快速定位到所需信息 。这些多样化的检索机制,大大提升了 Langchain-Chatchat-V0.3 在复杂查询需求下的应对能力,确保用户总能得到满意的回答。
1.3 强大的 Agent 能力
在智能交互的过程中,Agent 的作用举足轻重。Langchain-Chatchat-V0.3 针对 ChatGLM3 和 Qwen 等模型进行了深度优化,使得 Agent 对工具调用的理解和执行效率得到了极大提升 。以实际场景为例,当用户询问一个涉及到复杂知识或需要调用外部工具才能回答的问题时,如 “最近有哪些关于人工智能的重要学术会议,以及会议的主要内容是什么?”Agent 能够迅速理解问题的意图,准确调用相关的工具,比如学术数据库搜索工具、信息提取工具等,然后有条不紊地执行这些工具的操作,最终整合信息,为用户提供全面且准确的回答 。这种强大的 Agent 能力,让 Langchain-Chatchat-V0.3 在处理复杂任务时表现得更加智能和高效,真正实现了与用户的深度交互。
1.4 全面的功能覆盖
从简单的日常对话,到复杂的数据库对话;从新兴的多模态图像对话,到专业性极强的 ARXIV 文献和 Wolfram 知识对话,Langchain-Chatchat-V0.3 可谓应有尽有。它就像是一个功能齐全的瑞士军刀,无论你身处何种场景,面对何种需求,都能从中找到合适的 “工具” 来解决问题。比如,在企业内部的知识管理系统中,它可以帮助员工快速查询各类文档资料,解答工作中的疑惑;在教育领域,作为辅助教学工具,它能够回答学生的各种学科问题,提供丰富的学习资料;在科研工作中,对于研究人员查询 ARXIV 文献,探讨专业知识,它也能提供有力的支持 。这种全面的功能覆盖,使得 Langchain-Chatchat-V0.3 能够广泛应用于各个领域,满足不同用户的多样化需求。
1.5 用户友好的 WebUI
为了让用户能够更便捷地使用这些强大的功能,Langchain-Chatchat-V0.3 提供了直观的 WebUI 操作界面 。在这里,用户就像是进入了一个布局合理、标识清晰的操作控制台,所有的功能都一目了然。无论是管理不同的会话,就像整理自己的对话记录档案一样轻松;还是自定义系统提示词,根据自己的使用习惯和需求,为模型设定个性化的提示,WebUI 都能让这些操作变得简单易懂。即使是对于那些对技术不太熟悉的用户,也能在这个友好的界面引导下,快速上手,充分享受 Langchain-Chatchat-V0.3 带来的智能问答服务。
1.6 高度定制化
每个人的需求都是独特的,Langchain-Chatchat-V0.3 充分考虑到了这一点,为用户提供了高度定制化的选项 。其中,“启用 Agent” 选项就是一个非常灵活的定制开关。用户可以根据自己的个人偏好和具体场景需求,自由调整这个选项。如果你使用的是像 ChatGLM3/Qwen 这样具备强大 Agent 能力的模型,选中 “启用 Agent” 并选择多个工具,LLM 就会自动进行工具调用,充分发挥模型的智能优势,为你高效地解决复杂问题;而当你使用的模型 Agent 能力一般,或者你希望更精准地控制工具的使用,你可以选择单个工具,让 LLM 仅解析工具参数 。甚至,如果你使用的模型不具备 Agent 能力,或者你想完全手动操作,不选中 “启用 Agent”,手动填入参数进行工具调用即可 。这种高度定制化的设计,让用户能够根据实际情况,打造最适合自己的智能问答体验,真正实现了个性化服务。
二、技术原理
实现原理如下图所示,过程包括加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 在文本向量中匹配出与问句向量最相似的 top k个 -> 匹配出的文本作为上下文和问题一起添加到 prompt中 -> 提交给 LLM生成回答。
从文档处理角度来看,实现流程如下:
三、应用场景大放送
3.1 企业知识管理
在企业的日常运营中,往往会积累大量的文档资料,包括规章制度、业务流程说明、技术文档、会议纪要等等 。这些资料是企业的宝贵知识财富,但如何高效地管理和利用这些知识,一直是企业面临的难题。Langchain-Chatchat-V0.3 的出现,为企业知识管理提供了全新的解决方案 。企业可以将这些文档资料整合到 Langchain-Chatchat-V0.3 构建的本地知识库中,员工在工作中遇到问题时,只需通过简单的提问,就能快速获取相关的知识和信息 。比如,新员工想要了解公司的请假流程,只需在系统中输入 “公司请假流程是怎样的?”Langchain-Chatchat-V0.3 就能迅速从知识库中检索出相关的文档内容,并给出准确的回答 。这不仅大大提高了员工获取知识的效率,减少了查找资料的时间成本,还能确保员工获取到的信息是最新、最准确的,提升了企业整体的工作效率和协作能力 。
3.2 客户服务聊天机器人
客户服务是企业与客户沟通的重要桥梁,快速准确地回应客户的咨询和问题,对于提升客户满意度和忠诚度至关重要 。Langchain-Chatchat-V0.3 可以被部署为客户服务聊天机器人,为客户提供 24 小时不间断的服务 。当客户咨询产品信息、使用方法、售后服务等问题时,它能够根据企业设定的知识库内容,快速理解客户的问题,并给出精准的回答 。以一家电商企业为例,客户询问某款商品的尺码信息、材质特点以及是否有优惠活动时,Langchain-Chatchat-V0.3 能够瞬间从商品知识库中提取相关信息,为客户提供详细的解答 。而且,通过其强大的自然语言处理能力,它能够理解客户各种自然语言表达的问题,即使客户的提问方式比较模糊或随意,也能准确把握意图,给出满意的回复 。这大大提升了客户服务的质量和效率,减轻了人工客服的工作压力,同时也为企业树立了良好的品牌形象 。
3.3 教育辅助教学
在教育领域,Langchain-Chatchat-V0.3 可以作为一种强大的教育辅助工具,为教师和学生提供多方面的支持 。对于学生而言,在学习过程中难免会遇到各种问题,无论是对知识点的疑惑,还是对作业、考试的疑问,都可以向 Langchain-Chatchat-V0.3 寻求帮助 。比如,学生在学习数学时遇到一道难题,不理解某个公式的应用,或者在学习历史时对某个历史事件的背景和影响不清楚,都能通过与 Langchain-Chatchat-V0.3 对话,获取详细的解释和解答 。它就像是一位随时在线的专属辅导老师,能够根据学生的问题,从丰富的教育知识库中提取相关知识,以通俗易懂的方式呈现给学生 。对于教师来说,Langchain-Chatchat-V0.3 也能辅助教学工作 。教师可以利用它来生成教学资料,如教案、练习题、教学案例等,节省备课时间和精力 。同时,它还可以帮助教师解答学生的共性问题,让教师有更多时间和精力关注学生的个性化需求和发展 。
四、安装与配置全攻略
4.1 准备工作
在安装 Langchain-Chatchat-V0.3 之前,需要确保你的系统满足一定的条件:
-
操作系统:Windows、Linux 或 macOS 均可,不过从稳定性和兼容性考虑,更推荐使用 Linux 系统。
-
Python 版本:Python 3.8 及以上版本,建议使用 Python 3.10 或 3.11,以获取更稳定的性能和更好的兼容性。
-
硬件配置:因 0.3.0 版本已修改为支持不同模型部署框架接入,因此可在 CPU、GPU、NPU、MPS 等不同硬件条件下使用。
-
依赖工具:安装 Git,用于克隆项目仓库;准备好 Python 虚拟环境管理器,如 conda 或 venv,以避免不同项目间的依赖冲突。
4.2 安装步骤详解
Langchain-Chatchat框架有Docker安装、源码安装、和pip安装三种方式,下面分别进行介绍:
4.2.1 Docker安装
不需要在宿主机上安装CUDA,但需要安装NVIDIA Driver以及NVIDIA Container Toolkit,安装方法参考https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html,接下来使用docker一键部署:
docker run -d --gpus all -p 8501:8501 --name langchain-chatchat registry.cn-beijing.aliyuncs.com/chatchat/chatchat:0.2.7
镜像43.1G,需要等待较长时间。部署成功后访问:http://localhost:8501
4.2.2 源码部署
1)克隆源码
git clone https://github.com/chatchat-space/Langchain-Chatchat.git
2)切换到chatchat-server目录
cd libs\chatchat-server
3)建议先安装虚拟机
conda create -n chatchat python=3.11
# 进入到虚拟机
conda activate chatchat
4)安装poetry
pip install poetry
5)给当前项目创建一个虚拟环境
poetry env use python
6)安装项目依赖
poetry install --with lint,test -E xinference
此时会读取项目中的以下文件,并开始安装各种环境。
poetry.toml
pyproject.toml
4.2.3 pip安装部署
1)安装python虚机环境
conda create -n chatchat python=3.11
2)进入虚机环境,并安装相关包
# 进入到虚机环境
conda activate chatchat
# 安装相关python包
pip install langchain-chatchat -U
pip install "langchain-chatchat[xinference]" -U
3)设置Chatchat存储配置文件和数据文件的目录,否则存储到当前目录。
# 修改配置文件
vim ~/.bash_profile
# on linux or macos
export CHATCHAT_ROOT=/path/to/chatchat_data
# on windows
set CHATCHAT_ROOT=/path/to/chatchat_data
4)上传文件(Optional),后续启动可视化界面,也可以再维护
5)执行初始化
chatchat init
该命令会执行以下操作:
-
创建所有需要的数据目录;
-
复制 samples 知识库内容;
-
生成默认 yaml 配置文件
6)修改配置文件(Optional)
在CHATCHAT_ROOT目录下配置如下文件
a)配置模型(model_settings.yaml)
指定大模型和Embedding模型
# 默认选用的 LLM 名称
DEFAULT_LLM_MODEL: qwen1.5-chat
# 默认选用的 Embedding 名称
DEFAULT_EMBEDDING_MODEL: bge-large-zh-v1.5
# 将 `LLM_MODEL_CONFIG` 中 `llm_model, action_model` 的键改成对应的 LLM 模型
# 在 `MODEL_PLATFORMS` 中修改对应模型平台信息
b)配置知识库路径(basic_settings.yaml)(可选)
默认知识库位于 CHATCHAT\_ROOT/data/knowledge\_base,如果你想把知识库放在不同的位置,或者想连接现有的知识库,可以在这里修改对应目录即可。
# 知识库默认存储路径
KB_ROOT_PATH: D:\chatchat-test\data\knowledge_base
# 数据库默认存储路径。如果使用sqlite,可以直接修改DB_ROOT_PATH;如果使用其它数据库,请直接修改SQLALCHEMY_DATABASE_URI。
DB_ROOT_PATH: D:\chatchat-test\data\knowledge_base\info.db
# 知识库信息数据库连接URI
SQLALCHEMY_DATABASE_URI: sqlite:///D:\chatchat-test\data\knowledge_base\info.db
c)配置知识库(kb_settings.yaml)(可选)
默认使用 FAISS 知识库,如果想连接其它类型的知识库,可以修改 DEFAULT\_VS\_TYPE 和 kbs\_config。
7)初始化知识库
进行知识库初始化前,请确保已经启动模型推理框架及对应 embedding 模型,且已按照上述步骤3完成模型接入配置。
chatchat kb -r
更多功能可以查看 chatchat kb --help
8)启动项目
chatchat start -a
出现以下界面即为启动成功:
由于 chatchat 配置默认监听地址 DEFAULT_BIND_HOST 为 127.0.0.1, 所以无法通过其他 ip 进行访问。
如需通过机器ip 进行访问(如 Linux 系统), 需要到 basic_settings.yaml 中将监听地址修改为 0.0.0.0。
五、未来展望
展望未来,Langchain-Chatchat-V0.3 在技术和应用方面都有着广阔的发展空间 。在技术上,随着人工智能技术的不断进步,它有望进一步提升模型的性能和效率 。一方面,对更多新型模型的支持将不断拓展其能力边界 。比如,未来可能会集成一些具有更强推理能力、上下文理解能力的模型,使得它在处理复杂问题时更加得心应手 。就像现在的模型已经能够处理很多复杂的知识问答,但未来的模型可能会在理解语义的细微差别、进行更深入的逻辑推理等方面有更大的突破,从而让 Langchain-Chatchat-V0.3 的回答更加准确和智能 。另一方面,在检索技术上也可能会有新的创新 。或许会出现更加高效的检索算法,能够在海量的知识库中更快地找到最相关的信息 。例如,结合一些新兴的图数据库技术,利用知识图谱来进行更精准的语义检索,进一步提升检索的准确性和效率,让用户在提问后能够在更短的时间内得到满意的回答。
在应用上,Langchain-Chatchat-V0.3 将更加深入地渗透到各个行业 。在医疗领域,它可以辅助医生进行疾病诊断和治疗方案的制定 。通过对大量医学文献、病例数据的学习和分析,它能够为医生提供最新的医学研究成果、相似病例的治疗经验等信息,帮助医生做出更准确的诊断和更合理的治疗决策 。在金融领域,它可以作为智能投资顾问,根据用户的财务状况、投资目标和风险偏好,提供个性化的投资建议 。同时,还能实时跟踪市场动态,分析各种金融数据,为用户提供及时的市场信息和风险预警 。此外,在智能家居、智能交通等新兴领域,Langchain-Chatchat-V0.3 也有可能发挥重要作用 。比如,在智能家居系统中,它可以理解用户的语音指令,控制各种智能设备,实现更加智能化的家居生活体验 。总之,Langchain-Chatchat-V0.3 的未来充满了无限的可能性,相信在不断的发展和创新中,它将为我们的生活和工作带来更多的便利和惊喜 。
参考文献