RAG3 课

关键词索引

es 数据库:是后台运行的数据库,不管 python 是否运行都会运行

但是实际 RAG 开源项目中使用 es 数据库的不多,企业中 60% 都不用

顾虑 1:es 本身部署是需要 8g 或以上内存的机器,10 亿条以内的文档检索都可以

顾虑 2:es 高版本(8.x)支撑全文检索(倒排,bm25)+ 向量检索(向量检索、混合检索、多路召回,但需要考虑成本--专人维护、版权--用作商用有限制)

elasticsearch 是用于全文检索的文档数据库-》查询、插入、删除、管理、性能调优的细节,如如何做分词、索引管理等

语义检索

用 sentencetransformer 加载 MTEB 榜单上的模型

image

gemma:是谷歌开源的大模型

wen2:是千问大模型

acge:还有一些事 bert 模型

可以加载 7b 的大模型去做编码,但是要考虑硬件问题

mteb 榜单可以反应模型在文本编码、检索和聚类上的精度,但并不是完全参考

image

使用 bge 或者 bce

image

文档切分可以同时设多个尺寸,最小的尺寸在 20 以上,如果设置为两个值意味着文章会被切分两次,一个值和两个值都很常见

image

提示词

prompt=“你是一个{domain}领域的专家,请帮我结合资料回答下面的问题。如果问题无法从资料中获取,则回答不知道

-提问

{question}

-相关资料

{related——document1}

{related——document2}

{related——document3}

文档返回

检索出来文本以后会将上下文甚至整页都返回给大模型,对于边界的文本,会扩展到下一页的内容

可以通过语义匹配判断一下前后页的内容是否相同,然后判断内容是否相同

也可以通过解析 pdf 目录解析标题段落信息来判断

但是不能给大模型过多的资料

  • prompt 文字太多,大模型的返回速度也会越慢
  • 最相关的信息会被埋没

给大模型资料会受到资料的长度和相关度大小的影响

重排序

多路召回之后使用重排序

一般不用大模型进行排序,效果不好,大模型对于定量化的逻辑做的不好

bert 模型

句子 1 [nsp] 句子 2 -》模型(模型内部做句子交叉)-》完成分类 概率打分

因为检索的时候是没有做句子交叉的,做一下句子交叉做相似度结果会更可信

image

先语义召回、全文召回然后做 rrf 合并,然后对合并结果重排序

image

image重排序模型的输入

RAG 改进方向

大模型的版本

提示词模板

返回一个或多个资料输入大模型

image

query 改写(重要)

  • 拆解:如果用户同时输入两个提问,需要拆解单独回答,否则大模型会重点回答第一个问题
  • query 拓展:
  • 语义补全

image

image

1.通过大模型进行改写

prompt=你是一个汽车知识服务的专家,请对用户的提问理解,并改为用户真实的困扰{question}

2.让大模型先回答,再让大模型的回答去检索知识库,即 HyDE

image

  1. 确定用户的意图(意图识别、分类),缩小检索范围

    将用户的提问按照文件和章节进行 归类image

  2. 扩展查询(语义检索)

    用户提问检索得到知识段落,让 top10 的知识段落向量求均值,进行二次检索。

判断路由,有些问题模型可以执行,但是有一些不行

用户提问的类型:

  1. 汽车如何启动
  2. 帮我找到汽车的出场型号
  3. 帮我找到汽车的照片
  4. 帮我判断 xxx 是否合理

系统上线之后会收集到一些问题

对提问的类别进行肘部法进行聚类

image

路由就是针对用户提问的类别设置专用的回答方式

image

image

基于文本、基于数据库、非结构化数据(视频音频)

image

评价

偏向面试

image

不是绝对的唯一,还有很多其他的指标,如以下两个指标,他们的计算结果与 rags 的结果是正相关的。

用户提问检索到相关知识的召回率(从文档级别、从页码级别算召回率)

用户提问的回答与真实回答的语义相似度、字符交叉比

一般还是用客观的准确率和召回率

image

image

image

向量数据路

facebook

相关帖子

回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...