找回密码
 立即注册

微信扫码 , 快速开始

将ChatGPT接入个人知识库!Langchain示例+源码解析

2023-7-18 14:37| 发布者: admin| 查看: 944| 评论: 0|来自: 歪门正道

摘要: 这个能力还挺重要,之前使用ChatGPT就觉得他已经能很好理解人类的语言了,可惜会胡言乱语出现事实性错误。而且ChatGPT的训练数据只用到2021年之前的,对于之后发生的事情,就无法理解了。对于领域特定的(客服、医学 ...
 这个能力还挺重要,之前使用ChatGPT就觉得他已经能很好理解人类的语言了,可惜会胡言乱语出现事实性错误。而且ChatGPT的训练数据只用到2021年之前的,对于之后发生的事情,就无法理解了。对于领域特定的(客服、医学等),或者个人知识库,他就更不可能理解了。

如果ChatGPT能接入特定的知识库,保证回答的准确性,岂不是无敌?接下来要讲的工具就能一定程度解决这个问题。开源地址:github.com/hwchase17/la

顾名思义,这个项目想要连接起语言模型和其他工具。

Langchain示例

使用pip即可安装,后续可根据特定功能安装一些额外的包

pip install langchain

使用起来很方便,拿知识库问答举例只需要三步

第一步,设置OpenAI的apikey,并定义知识库文件加载类TextLoader。

os.environ["OPENAI_API_KEY"] = "sk-***"
from langchain.document_loaders import TextLoader
# 这里放知识库文件的路径 还可以读pdf等格式
loader = TextLoader('flok_doc.txt')

第二步,加载知识库并生成Vectorstore,方便后续检索。Vectorstore的作用后续分析

from langchain.indexes import VectorstoreIndexCreator
index = VectorstoreIndexCreator().from_loaders([loader])

第三步,问他

query = "Flok 是什么"
index.query(query)

效果对比

这里拿我的毕设项目做例子,可以看到,如果不加知识库,ChatGPT不认识“FloK是什么”。

下面是上文中flok_doc.txt中的文本,除了介绍FloK还有一些别的描述,实际中这个知识库文本也可以很长

Flow Knowledge(下文简称 FloK)是清华“数为”大数据软件栈之一,是一款大数据处理与分析平台,其意义在于:……
FloK 从创立开始,架构顺应着用户的需求和软件的发展在不断改善,目前演变为根据 WfMC 给出的所适应的架构。 WfMC架构是……
……FloK 同样有一个流程定义工具,生成流程定义(计算模型),再翻译成流程调度引擎支持的格式……

运行上文中加载知识库的langchain代码,可以得到

'FloK是清华“数为”大数据软件栈之一,是一款大数据处理与分析平台,可以通过交互式的操作方式降低大数据处理与分析和机器学习的门槛,丰富大数据分析工作流应用场景。'

ChatGPT已经认识了“FloK”!而且它的回答也不是直接照搬原文,而是重新梳理过了。

原理

这里使用了langchain-ChatGLM中的示例图,解释得很清晰。

来自https://github.com/imClumsyPanda/langchain-ChatGLM

langchain首先将知识库读取成文本,拆分成一个个段落(到步骤4)。每个段落做Embedding(步骤5、6),可以用OpenAI接口做或者用其他语言模型。Embedding就是生成能够表达该文本含义的一个向量。接着把每个段落产生的向量都存进VectorStore里。后续用户输入query时,也生成query的embedding,和VectorStore里面的向量做相似度匹配,相似度较高的文本可以认为是回答query最有用的“知识”。然后将“知识”文本,通过prompt的方法嵌入上下文,放在一起问模型,就能得到合理的回答啦。

比如这个prompt可以是

<知识库>
请根据上文回答下面的问题
<问题>

这个相似度匹配的过程有点像搜索,不妨猜一下,New Bing可能也是这么做的,让大模型利用起搜索引擎的能力。其实langchain也支持接入搜索引擎,用Bing的接口,或者Elastic Search。

后续考虑

VectorStore如何持久化保存?就不要每次启动程序都对知识库做一次Embedding消耗OpenAI的token数了

更适合中文的TextSplitter?

【文章来源】歪门正道特别声明:以上内容(如有图片或视频亦包括在内)来自网络,已备注来源;本平台仅提供信息和存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by user of ASKAI, which is a social media platform focused on technology of CHATGPT and only provides information storage services.


路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|手机版|小黑屋|博士驿站:连接全球智慧,共创博士人才生态圈 ( 浙ICP备2023018861号-3 )平台提供新鲜、免费、开放、共享的科技前沿资讯、博士人才招聘信息和科技成果交流空间。 平台特别声明:线上内容(如有图片或视频亦包括在内)来自网络或会员发布,均已备注来源;本站资讯仅提供信息和存储服务。Notice: The content above (including the pictures and videos if any) is uploaded and posted by user , which is a social media platform and only provides information storage services.

GMT+8, 2025-5-3 12:07

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

返回顶部