> 自媒体 > (AI)人工智能 > 基于GPT4+Llamaindex+LangChain搭建本地知识库AI机器人
基于GPT4+Llamaindex+LangChain搭建本地知识库AI机器人
来源:app4gpt
2023-07-07 14:11:56
1848
管理

大家好,在日常生活工作中我们会和很多文档打交道,今天这期我们将一起看下如何使用LlamaIndex和LangChain来构建一个基于GPT-4的本地文档知识库聊天机器人。

下面开始我们的教程,首先介绍一些本地AI聊天知识库的原理,核心可以分为两部分:

一、数据的摄取/建立索引阶段:这个阶段主要通过 LlamaIndex 和 LangChain 将你的文档转化为矢量数据并建立索引数据;

OK,下面我们来看下具体如何实现:

首先需要在本地环境中安装Python,另外需要准备一个OpenAi 的ApiKey,这里因为我的官方账号只有GPT3.5接口所以我用了国内一家代理提供的GPT4接口来进行演示(app4gpt)。

这里简单介绍一下这些库在项目中的作用:

第一个 OpenAi库:

引用的目的有2个:一、通过OpenAI的嵌入模型来完成数据的转化、提取并建立索引;二、我们最后会调用OpenAI的GPT4的模型生成自然语言;

第四个 P Y Pdf是一个免费开源的python PDF库,能够分割,合并,裁剪和转换PDF文件的页面。我们将使用这个库来解析我们的PDF文件。

第五个 Gradio是一个开源Python库,只需要通过几行代码就可以快速的搭建一个机器学习相关的应用程序。

接下来我们需要为项目添加数据源pdf文件,并存放在项目的data目录下,基于这些文档来训练我们的本地知识库聊天机器人。

聊天机器人具体实现步骤及主要函数讲解:

1.在ChatDemo文件夹中新建一个Demo 点 Python文件,并导入需要使用的模块和类:

from llama_index import SimpleDirectoryReader, LLMPredictor, PromptHelper, StorageContext, ServiceContext, GPTVectorStoreIndex, load_index_from_storagefrom langchain.chat_models import ChatOpenAIimport gradio as grimport sysimport osimport openai

2.设置OpenAI_API_KEY ,这里由于我们需要使用到gpt4的接口,所以需要先将Base Url改为国内代理的U R L,再填入国内代理提供的key。

openai.api_base = "https://api.app4gpt.com/v1"os.environ["OPENAI_API_KEY"] = 'sk-YOU-API-KEYXXXXXXXXXXXXXXXXXXXXXXXXXXX'

3.上下文环境函数

这个函数主要作用有两方面:一方面主要设置一些约束参数,如输入的最大数量、输出的数量、块重叠的最大值和文本块大小的限制。另外,它还实例化了两个类,即PromptHelper 和 L L M Predictor。

PromptHelper主要负责生成适当的提示语句,使模型能够理解并有效地响应我们的查询。而L L M Predictor则负责调用gpt-4语言模型来生成我们期望的回答。

def create_service_context(): #constraint parameters max_input_size = 4096 num_outputs = 512 max_chunk_overlap = 20 chunk_size_limit = 600 #allows the user to explicitly set certain constraint parameters prompt_helper = PromptHelper(max_input_size, num_outputs, max_chunk_overlap, chunk_size_limit=chunk_size_limit) #LLMPredictor is a wrapper class around LangChain's LLMChain that allows easy integration into LlamaIndex llm_predictor = LLMPredictor(llm=ChatOpenAI(temperature=0.5, model_name="gpt-3.5-turbo", max_tokens=num_outputs)) #constructs service_context service_context = ServiceContext.from_defaults(llm_predictor=llm_predictor, prompt_helper=prompt_helper) return service_context

4.数据提取/索引建立函数

该函数负责提取pdf数据,并根据我们知识库中的内容来创建并保存索引,来用于后面的数据查询场景。

主要功能有以下几点:

·这个函数中通过Simple Directory Reader从指定的目录路径加载数据;

·通过GPT Vector Store Index将文档建立为索引;

·最后将转化完的索引存放在默认的storage文件夹下,并返回index索引对象。

def data_ingestion_indexing(directory_path): #loads data from the specified directory path documents = SimpleDirectoryReader(directory_path).load_data() #when first building the index index = GPTVectorStoreIndex.from_documents( documents, service_context=create_service_context() ) #persist index to disk, default "storage" folder index.storage_context.persist() return index

5.查询函数

通过这个函数我们可以从磁盘上的存储位置来加载索引。然后查询input中输入文本的相关索引,最终返回查询后的内容。

def data_querying(input_text): #rebuild storage context storage_context = StorageContext.from_defaults(persist_dir="./storage") #loads index from storage index = load_index_from_storage(storage_context, service_context=create_service_context()) #queries the index with the input text response = index.as_query_engine().query(input_text) return response.response

6.G R.Interface函数

通过这个函数使用Gradio库创建一个交互式的Web用户界面。它将上面的data_querying函数作为用户输入的处理函数,并设置了输入框和输出框的一些属性。

iface = gr.Interface(fn=data_querying, inputs=gr.components.Textbox(lines=7, label="Enter your question"), outputs="text", title="chatpdf-demo")

7.最后调用之前的数据索引提取函数, 并传入"data"作为参数,这个data就是我们存储pdf文档的地址,最终会返回一个index索引的实例。

index = data_ingestion_indexing("data")

到这里本地知识库GPT4机器人就搭建好啦,完整的代码链接我会放在评论区,大家也可以通过私信我来索取代码。

接下来我们通过终端来运行一下并看看效果。

python3 kb.py

在浏览器中打开本地URL可以看到这个web应用程序,我们向机器人提出一个和文档内容比较相关的问题,以此来对比一下原版GPT和自定义知识库GPT答案的区别;

可以看出自定义知识库GPT 由于我们喂了更多相关的文档资料,所以他的回答能更精准有效,给出的回答也是更专业一些。

好了本期的视频就到这里,如果你觉得本视频能对你带来帮助的话还请一键三连哦,我们下期再见!

2
点赞
赏礼
赏钱
0
收藏
免责声明:本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本网证实,对本文以及其中全部或者 部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。 凡本网注明 “来源:XXX(非本站)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对 其真实性负责。 如因作品内容、版权和其它问题需要同本网联系的,请在一周内进行,以便我们及时处理。 QQ:617470285 邮箱:617470285@qq.com
相关文章
gpt4.0强大到没朋友,总有一天人工智能负责生产,人类只管消费..
gpt4.0强大到没朋友,智能超过百分之八十的普通人,这个是国内没有软件的..
人工智能ChatGPT:人到中年,该如何努力?
中年是生命的一个重要阶段,对于许多人来说,这是一个事业和家庭都相对稳..
投资策略转变为进攻,软银孙正义称ChatGPT令人兴奋
“是时候将投资策略转变为进攻了。”6月21日,在第43届年度股东大会上,..
如何掌握高情商聊天技巧?
高情商聊天是一种艺术,它能让你在社交场合中更加自信自然,让你的交流更..
ChatGPT正式发布iOS端,免费还没有广告,支持语音输入 | 最前线..
作者 | 周愚 编辑 | 邓咏仪美国时间5月18日晚间,OpenAI正式发布ChatGPT..
普通人能靠ChatGPT逆袭吗?如何避免被割韭菜?
是的,整合多任务的人工智能系统,是一种发展方向,先不说能不能真正实现..
OpenAI正在杀死创业公司?|甲子光年
基于GPT二次开发的“套壳产品”面临洗牌。作者|李晗 朱悦编辑|赵健谁也..
36氪首发 | 当ChatGPT火爆全球,中国交互AI平台「聆心智能」获得千万元融资..
36氪获悉,北京聆心智能科技有限公司(以下简称“聆心智能”)宣布完成数..
英伟达AI智能体接入GPT-4,自主写代码独霸我的世界无需人类插手..
编辑:Aeneas 好困【新智元导读】给游戏行业来点GPT-4式震撼?这个叫Voya..
关于作者
朴一生(普通会员)
文章
345
关注
0
粉丝
0
点击领取今天的签到奖励!
签到排行

成员 网址收录40329 企业收录2981 印章生成184222 电子证书781 电子名片48 自媒体19809

@2022 All Rights Reserved 浙ICP备19035174号-7
2
0
分享
请选择要切换的马甲:

个人中心

每日签到

我的消息

内容搜索