基于LLM+向量库的文档对话 经验篇

一、基于LLM+向量库的文档对话 基础面

  1. 为什么 大模型 需要 外挂(向量)知识库?

如何 将 外部知识 注入 大模型,最直接的方法:利用外部知识对大模型进行微调

  • 思路:构建几十万量级的数据,然后利用这些数据 对大模型进行微调,以将 额外知识注入大模型
  • 优点:简单粗暴
  • 缺点:
    i. 这 几十万量级的数据 并不能很好的将额外知识注入大模型;
    ii. 训练成本昂贵。不仅需要 多卡并行,还需要 训练很多天;

既然 大模型微调 不是 将 外部知识 注入 大模型 的 最优方案,那是否有其它可行方案?

基于LLM+向量库的文档对话 思路是怎么样?

  1. 加载文件
  2. 读取文本
  3. 文本分割
  4. 文本向量化
  5. 问句向量化
  6. 在文本向量中匹配出与问句向量最相似的top k个
  7. 匹配出的文本作为上下文和问题一起添加到 prompt 中
  8. 提交给 LLM 生成回答
    版本一
    在这里插入图片描述
    在这里插入图片描述

基于LLM+向量库的文档对话 核心技术是什么?

  • 基于LLM+向量库的文档对话 核心技术:embedding
  • 思路:将用户知识库内容经过 embedding 存入向量知识库,然后用户每一次提问也会经过 embedding,利用向量相关性算法(例如余弦算法)找到最匹配的几个知识库片段,将这些知识库片段作为上下文,与用户 问题一起作为 promt 提交给 LLM 回答

基于LLM+向量库的文档对话 prompt 模板 如何构建?

已知信息:
{context} 


根据上述已知信息,简洁和专业的来回答用户的问题。如果无法从中得到答案,请说 “根据已知信息无法回答该问题” 或 “没有提供足够的相关信息”,不允许在答案中添加编造成分, 答案请使用中文。 
问题是:{question}

二、基于LLM+向量库的文档对话 优化面

痛点1:文档切分粒度不好把控,既担心噪声太多又担心语义信息丢失 问题描述

问题1:如何让LLM简要、准确回答细粒度知识?

  • 举例及标答如下:
    在这里插入图片描述

用户:2023年我国上半年的国内生产总值是多少?
LLM:根据文档,2023年的国民生产总值是593034亿元。

  • 需求分析:一是简要,不要有其他废话。二是准确,而不是随意编造。

问题2:如何让LLM回答出全面的粗粒度(跨段落)知识?

-举例及标答如下:
在这里插入图片描述

用户:根据文档内容,征信中心有几点声明?

LLM:根据文档内容,有三点声明,分别是:一、…;二…;三…。

  • 需求分析:

要实现语义级别的分割,而不是简单基于html或者pdf的换行符分割。
笔者发现目前的痛点是文档分割不够准确,导致模型有可能只回答了两点,而实际上是因为向量相似度召回的结 果是残缺的。

有人可能会问,那完全可以把切割粒度大一点,比如每10个段落一分。但

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xianghan收藏册

极简精品作,一分也是一份鼓励哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值