【LangChain】如何本地部署基于chatGPT的实时文档和表格数据的助手,在自己的数据上构建chatGPT?

【LangChain】如何本地部署基于chatGPT的实时文档和表格数据的助手,在自己的数据上构建chatGPT

1 相关技术

(1)LangChain 是一个用于自然语言处理的 Python 库,它的目标是尝试简化自然语言处理任务,提高处理效率和准确性。

该库提供了一组易于使用的函数和工具,可以帮助你实现各种自然语言处理任务,例如语句分割、分词、词性标注、命名实体识别、情感分析等。与其它自然语言处理库相比,LangChain 更注重处理速度和准确性,并且支持多种自然语言的处理(包括中文、英文、日文等)。

(2)FAISS 是LangChain工具箱中的一个用于高效相似度搜索的 Python 库,它基于压缩和向量量化的算法实现了非常快速的相似度搜索。它特别适用于处理高维向量集合,例如图像、音频和自然语言处理中的向量表示等。

2 项目原理

首先读取pdf或者csv文件,使用LangChain的方法嵌入和矢量存储起来,称为Vectorstore。当用户提问新问题时,将当前新问题和之前的对话内容(上下文内容)整合成一个新的问题(Stanalone Question),利用chatGPT中查找答案得到文本1,同时使用相似度匹配方法,从Vectorstore中获取相似的文本内容,得到文本2。最终是将文本1和文本2,再用chatGPT总结,得出最终的答案。

在这里插入图片描述

3 项目搭建

(1)安装环境

conda create -n chat python=3.9

(2)安装包

pip install streamlit streamlit_chat langchain openai faiss-cpu tiktoken -i https://pypi.tuna.tsinghua.edu.cn/simple

(3)下载源码

git clone https://github.com/yvann-hub/Robby-chatbot.git

(4)安装依赖,如果报错,某个包有依赖问题,请先卸载这个包,重新安装一遍就可以。

cd Robby-chatbot

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

(5)配置OPENAI_API_KEY全局变量(非必要,可以在界面输入,配置后就不需要再界面输入)

Mac os或者LInux环境下,在~./bash_profile配置文件中配置

vim ~/.bash_profile

输入并保存退出,注意,“OPENAI_API_KEY=”中的 字母和等号之间是没有空格的。

export OPENAI_API_KEY= “你的key,从OenAI官网获取”

刷新配置生效

source ~./bash_profile

为了让以上变量永久生效,在~/.zshrc中配置以下内容

vim ~/.zshrc

在最后一行填入:source ~./bash_profile,再刷新文件

source ~/.zshrc

(6)修改源码中的部分代码

打开src/modules/utils.py中的

if os.path.exists(“.env”) and os.environ.get(“OPENAI_API_KEY”) is not None:

改为

if os.environ.get(“OPENAI_API_KEY”) is not None:

(6)运行项目

streamlit run src/robby_chatbot.py

在这里插入图片描述

此时加载自己的数据文件,就可以实现对当前数据集的数据进行提问。

目前的体验,相似度算法、token限制等问题,相似度匹配返回的文本再丢给GPT时,这过程中,是一个传统的相似度匹配算法过程,能力有限,并不能有效的去替代真正的用数据训练过的GPT。当提出的问题,在向量库中没有找到相似的内容时,最终的答案是无(有就是有,没有就是没有),不会像原始GPT一样,无论如何都会给出一个答案(甚至编造)。

4 参考资料

  1. https://betterprogramming.pub/build-a-chatbot-on-your-csv-data-with-langchain-and-openai-ed121f85f0cd

猜你喜欢

转载自blog.csdn.net/weixin_43935696/article/details/130564904