知识库问答和数据库问答

铁佛  论坛元老 | 2024-8-11 10:24:29 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1021|帖子 1021|积分 3063

知识库问答

一、概念



  • 大语言模子(LLM)
    LLM是一类底子模子,颠末大量数据训练,使其能够明白和生成自然语言和其他范例的内容,以实行各种使命。如,GPT,qwen,文心一言…
  • 知识库
    知识库是一个存储和管理知识的系统,它可以资助我们更有效地检索、组织和利用知识。知识库的构建是一个复杂的过程,涉及到知识的提取、表示、存储和检索等多个方面。
  • 知识库问答
    通俗来说:提问者提出问题,LLM将问题通过检索、匹配知识库中存储的知识,举行总结,来解答问题。
二、为什么要实现知识库问答


  • 传统的LLM问答
    利用互联网的公共信息和大模子本身的能力对问题举行解答。
    LLMs的问题:


  • 问题1:LLMs并不相识你的数据,且无法获取与此相干的最新数据,它们是事先利用来自互联网的公共信息训练好的,因此并不是专有数据库的专家也不会针对该数据库举行更新。
  • 问题2:上下文窗口-每个LLM都有一个tokens的最大限制,用于限制用户每次提交的tokens数据(超长上下文的大模子破例),这会导致丢失上下文窗口之外的上下文,进而影响精确性、产生检索问题和幻觉等。幻觉问题:大模子的底层原理是基于概率,在没有答案的环境下经常会胡说八道,提供虚伪信息
  • 问题3:中心遗失-即使LLMs可以一次性接收所有的数据,但它存在根据信息在文档中的位置来检索信息的问题。研究表明假如相干信息位于文档中心(而非开头或结尾时)时就会导致严重的性能降级。
  • 问题4:时效性问题-规模越大(参数越多、tokens 越多),大模子训练的本钱越高。类似 ChatGPT3.5,起初训练数据是截止到 2021 年的,对于之后的事变就不知道了。
  • 问题5:数据安全-OpenAI 已经遭到过频频隐私数据的投诉,而对于企业来说,假如把自己的经营数据、合同文件等机密文件和数据上传到互联网上的大模子,非常不安全。既要保证安全,又要借助 AI 能力,那么最好的方式就是把数据全部放在当地,企业数据的业务盘算全部在当地完成。而在线的大模子仅仅完成一个归纳的功能,甚至,LLM 都可以完全当地化部署。

  • 基于LLM和RAG技术的知识库问答
    为相识决传统的LLM问答的问题,需要一些方式来改变模子的举动来更好的贴近我们的盼望,一样平常来说有三种方式提示工程、微调和RAG。

    • 提示工程:通过编写提示词来引导大模子思索回答问题。一样平常包罗:指示(Instructions),上下文(背景信息,Context),例子(Examples),输入(Input),输出(Output)。仍然局限在模子在初始训练期间学到的内容上。
    • 微调:指找来一个语言模子并让它学习一些新的或特别的东西。在微调的环境下,模子需要大量新信息和时间来精确学习各种内容,带来的结果就是需要大量的资源,算力和时间。
    • RAG:检索加强生成(RAG)技术,该技术将常见的语言模子与知识库之类的东西混淆在一起。当模子需要回答问题时,它起首从知识库中查找并收集相干信息,然后根据该信息回答问题。模子会快速检查信息库,以确保它能给你最好的答案。
      通过这种方式能够有效降低大模子问题带来的影响,比如幻觉,数据安全,时效性等问题。
      当然上面三种方式并不是互相排斥,提示、RAG 和微调可以相互补充,从而在差异条理上加强模子的能力。在特定环境下,结合这三种方法可以达到模子性能的最佳状态。

三、知识库问答的实现

过程包罗加载文件 -> 读取文本 -> 文天职割 -> 文本向量化 -> 问句向量化 -> 在文本向量中匹配出与问句向量最相似的 top k个 -> 匹配出的文本作为上下文和问题一起添加到 prompt中 -> 提交给 LLM生成回答。


四、知识库的问答缺陷

1. RAG本身会带来的缺陷

(1)关键文档可能不会出现在系统检索组件返回的最上面的结果中。假如精确的答案被忽略,那么会导致系统无法提供精确的响应。
(2)系统从提供的上下文中提取精确的答案,但是在信息过载的环境下会遗漏关键细节,这会影响复兴的质量。
(3)部分结果没有错;但是它们并没有提供所有的细节,尽管这些信息在上下文中是存在的和可访问的。
2 其他问题

(1)用户的问题不够明确,导致查询不到精确结果
(2)机器性能的影响
(3)难以将复杂文档精确识别切分并向量化(例如含有复杂表格的PDF)
(4)大模子无法识别专业性和一些带有特别寄义的名词

数据库问答

一、什么是数据库问答

与知识库问答类似,但数据库问答不在是去切分文本匹配相似度,而是通过大模子以及text2sql的方式利用sql语句查询数据库中的数据,举行回答。
二、数据库问答的实现


  • 用户提出问题
  • 根据用户问题利用大模子推理出生成sql所需的数据库和数据表
  • 根据推理出的数据库和数据表将表的结构信息查询出来,并组装到提示词里,在利用大模子和提示词推理生成sql语句。
  • 查询生成的sql语句
  • 将查询的结果再次利用大模子和提示词举行总结,得出答案
三、数据库问答的缺陷


  • 受用户问题的影响,大模子不能保证推理出完全精确的数据表。对策:尽力将表格的形貌信息写详细,可以让提问者自行选择表格。
  • 通常大模子对Text2SQL的表现不佳,生成的sql语句不一定能够实行(如,经常将字段备注当成字段名,没有利用提示词提供的表格信息而是胡编乱造)。对策:优化提示词去限制大模子,引入few_shot_examples(少量样本示例)。
   少量样本示例:为LLM提供少量Q&A示例来资助它明白如何构建请求,通过这种方式可以提升10~15%的精确性。根据示例的质量和利用的模子,添加更多的示例可以获得更高的精确性。在有大量示例的环境下,可以将其生存在向量存储中,然后通过对输入查询举行语义搜索,动态选择此中的一部分。
  

  • 回答速度慢。例如我们的实现方式:推理数据表+生成sql+匹配few_shot+生成echarts+总结,一共利用了五次大模子。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

铁佛

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表