当前位置: 首页 > article >正文

基于大语言模型的垂直领域知识问答系统流程学习

什么是垂直领域大语言模型应用

当前基于大模型的知识问答十分火热,大模型虽然能回答大多数通用问题,但在垂直领域中,回答的深度、准确度及时效性均有限。因此为了解决这一问题,可以结合“本地“知识结合大模型来解决。垂直领域即在某个领域内专有的知识问答,企业或个人可以利用向量数据库结合大模型及自有知识资产来构建。

为什么使用向量数据库构建垂直领域大模型应用

基于大模型构建垂直领域的大模型应用服务,主要有两种选择:第一是基于FineTuning方式,但是需要较大的综合投入成本和较低的更新频率,适用性不是很高,并非适用于所有行业团队。第二是使用Prompt Engineering,相比 Fine tuning,该方法则更加经济和便捷,门槛相对较低,只要有高质量的本地文档,以及会写prompt即可实现。

垂直领域问答系统工作流程

  • 数据准备:我们前置会准备垂直领域内的知识,知识可以通过各种不同的形式提供,例如excel、ppt、word、文本文件等,
  • 文本切割:为了避免大模型对超长文本的限制,以及提高检索的准确性,我们需要将原始的文本切分成多个段落,通常称为(text chunks)
  • 向量化:向量化过程通常称为Embedding,经过分割后的文本段落,需要转换成可以计算的特征向量然后存储到向量数据库中。这里的文本到向量的模型可以按需选择适合的 NLP 模型,例如 BERT 或者 OpenAI提供的 text-embedding-ada-002。
  • 向量存储(Vector Store) :向量存储通常有两种常见的方案,第一是向量化后的向量和原始文本分开存储,向量通过向量数据库提供的接口写入,并且每个向量都记录一个文档id,并将该 id与对应的 原始文本信息存储到关系数据库或查询引擎中(ES等),通过id关联。第二种向量和原始t文本块均存储在向量数据库中。好处是向量进行相似度匹配的时候,可以很方便的得到对应的原始文本内容。
  • 相似性检索(Similarity Search):对于任意一个用户的提问 (query),需要用上述同样的模型将问题转换成相应的向量,并从向量数据库中检索与之最相似的 topK个目标向量,并返回该 topK 向量对应的文本块。在相似性检索的时候,可以直接使用向量数据库提供的相似度接口来实现,并指定合适的相似性度量方式。
  • 提示(Prompting):基于向量数据库进行相似度搜索后,得到了领域专有知识,接着我们需要构造Prompt,例如Prompt模版如下:
上下文信息:<上下文>
请根据上述<>中的上下文信息,回答下列问题:
问题:<问题>

使用从向量数据库返回的topK的原始文本信息作为上下文,利用prompt 模板构造新的prompt并传给大模型,让其解答。如果达模型给出的结果可能存在输出结果冗余、文本过长、请求超时、prompt中包含非法语句导致失败等非预期结果,这个时候需要对结果进行二次处理。

此外还可以借助 LangChain等工具更方便地实现更多样、有趣的能力。

常用向量数据库介绍

常用的向量数据库有以下几种,具体信息可参考对应Github官网。

  • milvus
  • chroma
  • pinecone
  • qdrant
  • typesense
  • weaviate

http://www.kler.cn/news/156225.html

相关文章:

  • 【【ZYNQ-自定义IP核-IP核封装于接口定义实验】】
  • [Golang] 高频次和高并发下的随机数重复问题的解决方案
  • 35、AD模数转换DA数模转换
  • geemap学习笔记019:监督分类与精度验证(上)
  • 组网技术-交换机
  • 【线下赛游记】2023 ICPC合肥区域赛 游记
  • 你不得不知道的工业镜头使用中的常见问题
  • 2023年11月个人工作生活总结
  • 什么是事务?事务的特性是什么?
  • 《python每天一小段》--(1)与GPT-3.5-turbo 模型进行对话
  • Leetcode1094. 拼车
  • 泊车功能专题介绍 ———— 记忆泊车评价规程(征求意见稿)
  • 某60区块链安全之Create2实战二学习记录
  • CRM在设备制造行业的应用,优化资源配置
  • 字符串冲刺题
  • 【STM32】STM32学习笔记-STM32简介(02)
  • Elasticsearch SQL插件调研与问题整理
  • go语言学习-包管理
  • Linux驱动开发学习笔记2《LED驱动开发试验》
  • STM32的HAL库串口编程
  • 提权(1), 脱裤, dirty-cow 脏牛提权
  • Oracle-CDB容器数据库修改service_names踩坑
  • 每周一算法:背包问题(二)完全背包
  • 致我那为数不多的粉丝
  • 分布式系统中最基础的 CAP 理论及其应用
  • Springboot 使用 阿里的 druid 连接池 启用 wall sql防火墙的情况下怎么支持多sql同时执行?
  • 使用pandas将字符串格式数据转换为单独的行
  • 继阿里云、滴滴、语雀后,腾讯视频也出现重大系统故障
  • Leetcode2661. 找出叠涂元素
  • Android Audio实战——音频属性设置(二十二)