掘金 人工智能 07月04日 14:28
大模型 19 RAG多样使用方法
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入探讨了RAG(Retrieval-Augmented Generation)技术,该技术通过检索增强生成,显著提升了LLM(大型语言模型)在处理复杂问题时的准确性和信息量。文章详细介绍了RAG的工作流程、关键技术要点、以及如何通过改进知识库、查询词和模型选择来优化RAG系统的性能,最终实现更精准、更可靠的LLM应用。

🧠 RAG的核心在于结合检索与生成:RAG技术通过从外部知识库中检索相关信息,并将这些信息与用户提问相结合,增强LLM的回答,从而提高答案的准确性和信息量。

💡 知识切片是RAG成功的关键:构建高质量的知识库是RAG项目的核心,需要对知识进行精细的切片和处理,根据用户可能提出的问题,设计知识切片,而不是简单地将现有文件导入。

🛠️ 改造知识库与查询词是提升准确率的有效手段:通过将不同类型的文件整理成统一的Excel格式,并对用户提问进行改造,可以显著提高RAG系统的检索准确性,从而为LLM提供更精准的上下文信息。

🚀 Embedding与Rerank模型协同工作:Embedding模型负责将知识库切分成向量,并进行检索;Rerank模型则对检索到的知识片段进行打分排序,选出最相关的片段,从而提升RAG系统的整体性能。

⚖️ 垂直领域微调Embedding模型:针对特定领域(如教育、医疗等),对Embedding模型进行微调,可以使其更好地理解和处理该领域的专业知识,进一步提高RAG系统的效果。

RAG多样使用方法

一、回顾 Function Call & RAG

Function Call

是LLM的一种能力:LLM 理解所有的用户对话内容,评估自己是否有能力直接回答,不然就应该决策使用工具,再通过输出固定格式的文字,表达自己决定使用某个工具(有哪些可用工具,需要提前告知 LLM)`

RAG

    RAG:通过检索到的知识片段,塞到prompt里,辅助 LLM 回答用户问题LLM 无法看你的知识库,也无法真正学习你知识库里的知识将你的知识切片,变成向量的,是Embedding模型也是Embedding模型,把用户的问题变成了向量拿用户的问题向量,去检索知识库的,是程序员写的代码coze平台只是提前做好了这些功能,企业也可以自己开发检索到的知识,最终会被塞到prompt中,作为一种参考资料网络信息搜索、数据库检索,也是 RAG 的一种

PS: Embedding 模型和大语言模型,不是一个模型

总之

Prompt 是我们唯一可以和LLM 打交道的方式,在应用技术层,无论我们做了多么炫酷的设计,最终都是为了找到合适传递给LLM 的Prompt

二、几个必须清楚的重点

2.1 想象中的RAG
2.2 真实的RAG

1、列举要覆盖的场景,哪些类型的用户问题,是我们打算用RAG解决的

2、测试每个典型问题,在prompt里塞什么样的参考资料、样例,是可以有好的回答的

3、我应该如何从大量文件资料中,通过大量的处理工作,得到我需要的知识切片

4、faq(常见问题答案)格式的问答对,往往是效果更好的选择

5、能用问答对,去覆盖的用户问题,尽量用问答对,不能收集到问答对的,再准备普通文件切片

6、要点总结:是从用户会问什么问题出发,测试出需要什么样的知识切片,不是从手里的大堆文件资料出发,考虑到底应该怎么切片

三、用Excel做知识库(改造知识库)

1、区分用户的需求涉及到的文件,是跟这一次的需求有关,还是某一类需求都要涉及到某个文件

2、提升准确率的重要方法 1:改造知识库,被检索的是用户问题,塞到prompt的是知识片段

3、严格来说,word、pdf、ppt、网页,都应该整理成 excel 格式

4、图片文件,使用多模态模型撰写文字描述后,再把文字描述和原图,也整理成 excel 格式 

5、word、pdf、ppt  中的表格,有限处理成Markdown、Json,实在不行就也截成图片

例如:创建一个教用户怎么使用coze的问答Excel知识库

1 创建excel

    coze官网上有使用说明文档,首先我们将每一篇说明文档内容抓出来,然后根据每一篇文章内容,用大模型生成n条(10/20条)用户可能问的问题,最后就得到了一个问题及内容的对照文档, `10/20条问题(索引) -> 文章内容(内容 )

四、查询query((改造用户问题 ))

1、默认是用户提出的问题

2、但多轮对话会让整个状况崩溃

3、用户多样的表达方式也会增加很多困难

4、提升准确率的重要方法 :知识库不改造,改造检索词

案例: 打造一个 打车计算价格的agent


改造前的agent设计

    coze配置
      百度地图: 规划路线
      文本:打车计费知识库,

728日,交通鸟发布了《关于深化改革推进出租汽车行业健康发展的指导意见》,即所谓的“要车縣政”,宣布互联同约车(网约车)会法。滴滴出行你为中国市场占有率最高的打车软件,极大方便了民众的出行,滴滴出行有快车,出租车、顺风车,专车等能务。滴滴快车与液滴专车的收授标准不司,快车价格相对便宜,西专车收费较世,使用的车型更豪华,针对不同的消费人群。不同的核市,快车的收费标准也不同。流满快车的计价规则包括起步费、时长费、里程费、远途费、夜同费,最低消费及动态加价。快车的起步费为0,夜间费收取时同为23点配次日5点,动态加价只会在交通高峰、司机校少或铰远等特殊情况才会收取。安车高收超步费。时长费和里程费都收费比快车高。不同的城节,时长费,里程费,最低消费等计价规則都不同。下面罗列保建9地市(摄州、厦门、没州、漳州、第田、宁德、龙岩、南罕、三明】及广州。深圳、重庆等12个城市的湾测快车的收费标准(计价规划,单位见备注1)。福州 时长贵为0.39元/分钟,原程贵2元/公里,近途费为10公里后每公里加1元,农同费 Q.7 元公里,最饭请费为9元。厦门 时长费为0.49元分钟,单程费1.79广公单,总途费乃8公单后何公单加收12元,秋问费0.88冠公里最低消 为9元。泉州 时长費为0.38 元/分钟,里程费 1.79元/公里,冠治費为10公里后每公里却收1元,夜间费0.7元/公里最低消费为8元漳州 时长费为0.35元/分钟,里星费1.99 元/公里,远途费为8公里后每公里加收0.98元,夜问费0.88元公里。 最低消费为6元。莆田:时长费为0.35 元分钟。期雅费1.99元公州,远途费为8公州后每公別红收099元,表间费口88元公里,最低消费为8元。宁波 时长费为0.49元分钟,坚联费1.99元公坚,远治费为8公里后每公里加收0.99元,衣问费0.339元公坚,堆低游費为7元。龙岩 时长费为0.3元/分钟,里程费1.79元/公里,运途费为日公型后每公里紅收0.3日元,夜间费0.肥8元公里 最低消费为7元。
    结果:总是没有召回相关切片,大模型出现幻觉,瞎编一个结果原因分析: 1 关键词不准确,江北到沙坪坝匹配知识库中的城市名称 2 改造知识库也无法穷举一个城市所有的起始地名

改造后的agent设计

    coze配置
      去掉之前的百度,知识库插件
      新增工作流插件

工作流配置

    开始:提取四个参数,1所在城市,2开始地点,3结束地点,4出发时间

    知识库检索:通过城市去知识库中检索,所在城市的打车信息

    配置导航插件:计算起始地点的行车路线的里程数,乘车时间(百度导航/other)

    文本处理:1 开始位置 2 结束位置 3 城市所在的打车规则 4 里程数 5 乘车时间 6 发车时间,将上述拼接

    最终输出打车费用

    工作流步骤3

    工作流步骤4


PS:不管我们在应用技术层,做了什么花哨炫酷的操作, 最后的目的就是把有用的信息塞进提示词

五、Embedding & Rerank (改造模型)

提升准确率的重要方法3:合适的 Embedding模型 & Rerank模型

5.1 Embedding模型

两个作用 1知识库切分成片段(切片)2 片段中匹配提示词相似度高的片段(检索)

Embedding  模型是怎么训练出来的 ?

1、Embedding一般也都是 Transformer架构

2、理解语义信息的原理其实和GPT类似

3、但Embedding 模型的训练目标比较简单,所以能力不如GPT 强

4、模型目标:让具有相似语义的文字序列,对应尽可能高相似度的向量;让不同语义的文字序列,对应尽可能低相似度的向量

5、训练数据:数亿条数据,每一条都是一个3元组数据

上传知识库文件 -> 切分成词向量(片段)embdding大模型userprompt -> 提示词向量 匹配 知识库向量 = 片段1(embdding模型处理)-> 检索片段1 + userprompt(大模型处理)

5.2 Rerank模型
5.3 Embedding模型 与 Rerank模型 协作

Embedding 模型需要效率高、速度快,随便给一段文字,就可以在千万量级知识库中秒回结果Reranker 模型需要严谨仔细,深度分析语义到底哪个知识切片最合适

5.4 常用 Embedding基座模型 及 Reranker模型

1、智源人工智能研究院:BGE(BAAI General Embedding)

2、网易:BCE(BilingualandCrosslingualEmbedding)

3、阿里:Qwen GTE

4、腾讯:Conan-embedding

ps: 在coze上只能用字节的 embdding 和rerank 模型,如果公司开发可以自由选择这两个模型

5.5 难负例挖掘

加了 Reranker模型 之后效果有提升,但还是不够理解,还希望继续提升

1、简单负例

Anchor(锚点): 秦始皇统一六国后,推行了中央集权的政治体制。 Positive(正例): 秦始皇统一六国后,创立了一种全新的国家管理体系,强化了中央政府的权力,减少了地方自治权。这种体制确保 了皇帝对全国拥有绝对的控制权

Negative(简单负例): 宋朝的科举制度对中国古代的教育体系产生了深远影响。

2、难负例

Negative(难负例): 秦始皇统一六国后,建立了一个从中央到地方的官僚体系,各级官员通过考试选拔,依据才能晋升,而非世袭继承。

5.6 垂直领域的Embedding 微调

1、教育、医疗、金融、法律是常用领域

2、微调数据的核心要点是关联性:题目-解析(或题目-题目),症状-诊断方法,案情-法院判决,投资方向-风险评估

3、Embedding 的微调 比 对话式模型的微调有更高的安全性(可能破坏其聊天功能)

六 大模型 functioncalling mcp关系

总结

RAG 流程包含三个部分,检索、增强、生成

举例:

- 用户提问:公司未签劳动合同,员工可以索赔吗?(法律问题)

1检索

    通过embdding模型,将用户问题转为向量通过embdding模型,在数据库中筛选出N个相似度高的向量通过Rerank模型,在n个相似度高的向量中选出一个最高的。

2增强:根据《劳动合同法》第82条,案例某某,+ 用户问题 = 新的关键词

prompt = """根据以下法律文档和用户问题生成回答,需包含关键词:第82条、双倍工资。文档1: 《劳动合同法》第82条...文档2: 案例XX...用户问题: 公司未签劳动合同,员工可以索赔吗?"""

3生成:新的关键词通过大语言模型提问,获取最后答案

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

RAG LLM Embedding Rerank 知识库
相关文章