当前位置:   article > 正文

利用langchain-ChatGLM、langchain-TigerBot实现基于本地知识库的问答应用

利用langchain-ChatGLM、langchain-TigerBot实现基于本地知识库的问答应用

目录

1 原理

2 langchain-ChatGLM的开发部署

2.1 安装环境

2.2 加载本地模型

3 langchain-TigerBot的开发部署


刷B站的时候,无意中看到吴恩达的一个langchain的教程,然后去github上搜了下,发现别人利用langchain和chatGLM做的基于本地知识库的问答应用挺好的,学习下,同时增加了利用langchain-TigerBot实现的本地知识库。

1 原理

 基于本地知识库的问答应用原理如上图,首先把本地知识库的文档分割成片段,然后利用embedding模型将文字用向量表示,然后保存到向量库中,然后我们提问的问题也用向量表示,然后将我们的问题和向量库的向量进行匹配,得到相似的结果,然后组装成prompt,送到语言模型中,得到我们想要的答案,

  然后我看刘虔的培训教程中有个这样的代码示例

我的理解其实就是从文档中搜索出问题和答案,然后一起送到大模型,让大模型生成回答。 

2 langchain-ChatGLM的开发部署

2.1 安装环境

langchain-ChatGLM/docs/INSTALL.md at master · imClumsyPanda/langchain-ChatGLM · GitHub

  1. conda create -n langchain-chatglm-chw python=3.8
  2. conda activate langchain-chatglm-chw
  3. # 拉取仓库
  4. $ git clone https://github.com/imClumsyPanda/langchain-ChatGLM.git
  5. # 进入目录
  6. $ cd langchain-ChatGLM
  7. # 项目中 pdf 加载由先前的 detectron2 替换为使用 paddleocr,如果之前有安装过 detectron2 需要先完成卸载避免引发 tools 冲突
  8. $ pip uninstall detectron2
  9. # 检查paddleocr依赖,linux环境下paddleocr依赖libX11,libXext
  10. $ yum install libX11 #sudo apt-get install libx11-dev
  11. $ yum install libXext #sudo apt-get install libxext-dev
  12. # 安装依赖
  13. $ pip install -r requirements.txt
  14. # 验证paddleocr是否成功,首次运行会下载约18M模型到~/.paddleocr
  15. $ python loader/image_loader.py

然后执行 python loader/image_loader.py会报错

  1. Traceback (most recent call last):
  2. File "loader/image_loader.py", line 8, in <module>
  3. from configs.model_config import NLTK_DATA_PATH
  4. ModuleNotFoundError: No module named 'configs'

在github的issue里面搜索configs这个关键字发现

 按照这个修改了之后发现,出现了这个报错

  1. Traceback (most recent call last):
  2. File "loader/image_loader.py", line 36, in <module>
  3. from configs.model_config import NLTK_DATA_PATH
  4. ModuleNotFoundError: No module named 'configs.model_config'

然后继续在issues中搜索configs.model_config'

好吧,原因是python库中有个configs包,我们的工程中也有个configs文件夹,我们应该是要去工程文件夹configs中找而不是python的configs库中找,所以用下面命令卸载configs库就好了

pip uninstall configs

注:使用 langchain.document_loaders.UnstructuredFileLoader 进行非结构化文件接入时,可能需要依据文档进行其他依赖包的安装,请参考 langchain 文档

那我去看一下加载非结构化文档需要安装什么:https://www.wpsshop.cn/w/羊村懒王/article/detail/153075

推荐阅读
相关标签
  

闽ICP备14008679号