首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

读破万卷,神交古人,突破ChatGPT4096的Token限制,建立自己的垂直领域资料人工智能助理

ChatGPT的泛用性极高,上知天文,下通地理,参考古今,博稽中外,几乎无所不知,无所不晓。但如果涉及垂直领域的专业知识点,ChatGPT难免也会有语焉不详,闪烁其词的毛病,本次我们将特定领域的学习材料“喂”给ChatGPT,让它“学习”后再来回答专业问题。

专业领域语料问题

所谓专业领域语料问题,可以理解为特定范围内的知识图谱,也就是给GPT提供前置的检索维度,举个例子,大家都读过鲁迅的名篇《从百草园到三味书屋》,文章中涉及一个“美女蛇”的典故,假设我们没有给GPT设置一个特定范围,直接问“美女蛇”的相关问题:

一望而知,ChatGPT对于“美女蛇”典故的理解出现了信息偏差问题,它以为“美女蛇”指的是《白蛇传》中的白素贞和许仙以及法海的故事。

但其实我们都知道,《从百草园到三味书屋》中“美女蛇”指的是人首蛇身的怪物,能唤人名,倘一答应,夜间便要来吃这人的肉的故事。

所以,如果我们想谈论“美女蛇”相关的问题,必须让ChatGPT有一个特定的“语境”,它才能理解真正要谈论的话题,所以需要把《从百草园到三味书屋》作为语料“喂”给ChatGPT才可以,当然了《从百草园到三味书屋》作为人尽皆知的杂文,它肯定默认存储于ChatGPT的语料库中,但假设如果某一个领域的论文或者其他资料,并未出现在ChatGPT的语料库中,而该文章的长度又超过ChatGPT输入的4096个token的限制,那么就非常麻烦了,所以让ChatGPT具备学习“新材料”的能力就显得十分必要了。

llama_index配置语料索引

LlamaIndex(GPT Index)是一个针对特定语料检索的GPT项目,可以通过索引文件把外部语料数据和GPT连接起来,首先安装项目:

注意该项目依赖langchain模块,为了确保不出问题,最好升级一下langchain模块:

LlamaIndex所做的是将我们的原始语料数据转换成一个基于向量的索引,这对检索来说是非常高效的。它将使用这个索引,根据查询和数据的相似性,找到最相关的部分。然后,它将把检索到的内容插入到它将发送给GPT的引导词(prompt)中,这样GPT就有了回答问题的“语境”:

具体工作流:

将本地答案数据集,转为向量存储到向量数据(index.json)

当用户输入查询的问题时,把问题转为向量然后从向量数据库中查询相近的答案topK 这个时候其实就是我们最普遍的问答查询方案,在没有GPT的时候就直接返回相关的答案整个流程就结束了。

基于GPT可以优化回答内容的整体结构,在单纯的搜索场景下其实这个优化没什么意义。但如果在垂直领域特定的聊天场景下,引用相关领域内容回复时,数据检索会更加精准。

首先把《从百草园到三味书屋》这篇文章写入到项目的data目录中,随后编写代码:

这里通过GPTSimpleVectorIndex.from_documents方法读取data目录中的语料文章,随后转换为向量索引存储在本地磁盘的index.json文件中。

执行建立索引方法:

索引的内容:

llama_index根据向量索引进行语义化查询

llama_index可以在本地匹配向量索引后再构建提示词:

通过GPTSimpleVectorIndex.load_from_disk方法将向量索引导入,执行方法:

程序返回:

可以看到,“美女蛇”的故事终于是我们想要的“美女蛇”的故事了。

llama_index模型定制化

llama_index默认的答案生成模型方案为text-davinci-002,我们也可以定制化适合自己的模型配置:

这里通过初始化函数定制self.llm_predictor属性,生成本地向量索引时,通过service_context参数进行动态调用即可:index = GPTSimpleVectorIndex.from_documents(documents,service_context=self.service_context) 。

结语

藉此,我们就可以通过垂直领域语料来“定制化”ChatGPT的回答了,最后奉上项目地址:github.com/zcxey2911/llama_index_examples_python3.10,与君共觞。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230404A00VZC00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券