分享
Langchain-Chatchat构建本地知识库工程部署
输入“/”快速插入内容
Langchain-Chatchat构建本地知识库工程部署
飞书用户6848
2023年9月21日修改
https://www.bilibili.com/video/BV13M4y1e7cN/?share_source=copy_web&vd_source=e6c5aafe684f30fbe41925d61ca6d514
https://zhuanlan.zhihu.com/p/652685138
LangChain-ChatGLM简介
LangChain-ChatGLM是一个基于ChatGLM等大预言模型的本地知识库问答实现,也就是一种利用 langchain 思想实现的基于本地知识库的问答应用,目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。
项目地址:基于本地知识库的 ChatGLM 等大语言模型应用实现
项目特点:
•
依托ChatGLM等开源模型实现,可离线部署
•
基于langchain实现,可快速实现接入多种
数据源
•
在分句、文档读取等方面,针对中文使用场景优化
•
支持PDF、txt、
md
、docx等文件类型接入,具备命令行demo、webui和vue前端
。
项目结构:
•
models:
LLM
的接口类和实现类,针对开源模型提供流式输出支持。
•
loader
:文档加载器的实现类
•
textsplitter:文本切分的实现类
•
chains:工作链路实现,如chains/local_doc_qa实现了基于本地文档的问答实现
•
content:用于存储上传的原始文件
•
vector_store:用于存储向量库文件、即本地知识库本体
•
configs:配置文件存储
项目优化的方向:
1.
模型微调:对
LLM
和embedding基于专业领域数据进行微调
2.
文档加工:在文本分段后,对每段分别进行总结,基于总结内容语义进行匹配
3.
借助不同模型能力:在text2sql、text2cpyher场景下需要产生代码时,可借助不同模型能力
LangChain 知识库技术原理
目前市面上绝大部分知识库都是
LangChain + LLM + embedding
这一套,实现原理如下图所示,过程包括
加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化
-> 在文本向量中匹配出与问句向量最相似的
top k
个 -> 匹配出的文本作为上下文和问题一起添加到 prompt 中 -> 提交给 LLM 生成回答。
💡
白话理解:
大模型
参数量大,训练成本高,周期长。某些场景下很多知识内容可能是天级别的,那为了保证该场景下大模型回答的准确性,可以通过langchain的方式将知识库与大模型结合起来,在使用大模型进行提问时,到知识库中搜索相关内容,通过组合实时的知识内容与问题形成新的prompt,利用大模型的摘要汇总能力,进行问题