用户会问什么,早点手机用户反馈的问题,思考用户到底会问什么。怎么处理和清洗文字的问题,
清洗和整理,(薪资、福利)这些信息怎么切都且不好,这个怎么办?
自定义分段规则分段长度及预处理:换行/单行重叠度10%。语气一般,中规中矩,这种回答怎么办?
表格太大:需要切分 表格转成图片比markdown更好
一堆文件,一段文本解析成一行一行知识点。
根据ppt总结那几点。
排产/系统操作/
风控/保险/生图/话术
Function call:自主解析内容并结构化填槽,自主决策使用工具并结构化调用(按格式输出而已,不是什么特别的能力)。比如城市/日期/出发地/目的地。
提取任务:解析文字段落中是否包含某个信息。
唯一可以跟模型互动的就是prompt,模型的输出有文字图片,模型不能操作软件,不能直接使用工具。
1 system prompt中写明了都有哪些工具可以使用,使用的时候要给出什么参数,写成什么格式
2 意图识别:用户要求做什么任务
3 决策是否什么工具,使用哪个工具
4 调用工具设定的信息传递结构
5 调取所有上下文内容解析并填槽
6 缺少信息就发起追问,直至全部填完
7 按照槽的格式生产模型回复
经过微调训练可以得到一种按指令做任务的能力,利用gpt的生产能力输出对应格式的回答。
prompt中写清楚在什么情况下要追问,什么情况下直接输出工具。
槽位是我们写在prompt中
functioncall用得不多。
1 functioncall是llm的一种能力,llm理解所有的用户对话内容,评估是否应该决策使用工具,再通过输出固定格式的文字,表达自己决定使用某个巩固(有哪些可用工具,需要提前告知LLM)
2 当LLM决策使用工具之后,需要有某种代码、平台功能,来承接LLM的需求(没有双手的大脑)
3 coze通过插件来满足LLM的需求,也可以是程序员写的代码来满足LLM的需求
4 LLM输出固定格式的文字表达需求,coze平台捕捉到需求并运行相应的插件
5 插件会按照参数的要求返回信息和数据
6 最终这些信息和数据会被塞到prompt中,让llm生成最终的用户回复
RAG/向量数据库/知识库
1 rag:通过检索到的知识片段,赛道prompt里,辅助LLM回答用户问题
2 LLM无法看你的知识库,也无法真正学习你知识库里的知识
3 将你的知识切片,变成向量的,是embedding模型
4 也是embedding模型,把用户的问题变成了向量
5 拿用户的问题向量,区检索知识库的,是程序员写的代码
6 coze平台只是提前做好了这些功能,企业也可以自己开发
7 检索到的知识,最终会被塞到prompt中,作为一种参考资料
8 网络信息搜索、数据库检索,也是rag的一种
prompt是我们唯一可以和llm打交道的方式,在应用技术层,无论我们做了多么酷炫的设计,最终都是为了找到合适传递给llm的prompt。
1 收集一下企业文件资料,就想做rag了,是不现实的,效果不会好的
2 真正想做好rag项目,处理知识切片的时间占整个项目的70%以上
3 知识切片到底怎么且,这个问题没有办法直接回答
4 知识切片到底怎么切,不只是知识库构建过程中的一个小步骤,更是一系列复杂工作之后的一个结果
(除了把文档放出去,还得回答得好)
1 列举要覆盖的场景,哪些类型的用户问题,是我们打算用rag解决的
2 测试每个典型问题,在prompt里塞什么样的参考资料/样例,是可以有好的回答的
3 我应该如何从大量文件资料中,通过大量的处理工作,得到我需要的知识切片
4 fap格式的回答对,往往是效果更好的选择
5 能用问答对,去覆盖的用户问题,尽量用问答对,不能收集到问答对的,再准备普通文件切片
6 要点总结:是从用户会问的问题出发,测试出需要什么样的知识切片,不是从手里的大堆文件资料出发,考虑到底应该怎么切片。(已编辑)
用excel文件做知识库(很适合做知识库,很多企业用word和pdf,大模型不看知识库,是embdding模型看) 不是所有的文件都要进入知识库。 1 区分用户的需求涉及到的文件,是跟这一次的需求有关,还是某一类需求都要涉及到某个文件(一次性需求,没必要放到知识库中,引导用户上传就行) (1)引导通过对话窗口上传文件,并提出问题,使用插件解析文件,并将文件内容装入prompt (2)整理一个excel文件,明确指定出希望被检索的知识片段,已经相关元数据(比如哪些列是要被检索的知识片段,哪些列是元数据。 excel比如有标签/知识主题/知识切片/相关元数据:图片,标签可以用来很快筛选,只把第3列作为知识切片,也可以把第3和第4列都作为知识切片检索,尽管仅仅把第3或34列作为知识切片,但是检索出来的结果可能出出现其他列的信息,在coze中去试。。使用excel好处:强制做梳理工作,易于管理) 2 提升准确率的重要方法1:改造知识库,被检索的是用户问题,塞到prompt的是知识片段(把知识切片变成用户问题,真正检索的是用户问题,不是知识切片。把知识切片发给AI,让AI输出用户可能问的问题) (一个question,一个content,content是一个页面的内容,很多文字。用户问题:包含很多种不同的问法,这些问题是员工整理的和AI生成的,把content发给ai,让ai输出用户可能问的问题) 3 严格来说,word、pdf、ppt、网页,都应该整理成excel格式(自己和AI结合写) 4 图片文件,使用多模态模型撰写文字描述后,再把文字描述和原图,也整理成excel格式 5 word、pdf、ppt中的表格,有限处理成markdown/json,实在不行就也截成图片(没有特别多的合并单元格,处理成markdown/json好处理点,简单点的可以转化成markdown/json,太复杂就处理成图片)(第一列文字,第二列图片,文字是通过大模型多模态解析出来的,如果有100张图片,就写python执行100次)
查询query 知识库的查询词 (用户不会问,需要改用户怎么问问题。) 1 默认是用户提出的问题 2 但多轮对话会让整个状态崩溃 3 用户多样的表达凡是也会增加很多困难 4 提升准确率的重要方法2:知识库不改造,改造检索词 (没法穷举所有起始点和目的地,所以改prompt,借助工作流来完成,也就是做agent)
Embedding和Rerank 为什么Embedding向量匹配的不够准? 提升准确率的重要方法3:合适的embdding模型&rerank模型。 Embedding模型怎么训练出来的? 1 Embedding一般也都是transformer架构 2 理解语义信息的原理其实和gpt类似 3 但Embedding模型的训练目标比较简单,所以能力不如GPT强 4 模型目标:让具有相似语义的文字序列,对应尽可能高相似度的向量;让不同语义的文字序列,对应尽可能低相似度的向量 5 训练数据:数亿条数据,每一条都是一个3元组数据 锚点anchor:秦始皇统一六国后,推行了中央集权的政治体制 正例positive:秦朝实行了法家思想,中央政府的权力得到了加强 负例negative:宋朝的科举制度对中国古代的教育体制产生了深远影响 (正例和锚点相似度高,负例和锚点相似度低。准备数亿条这种3元组数组。这样embedding训练得到向量) 500维-2000维之间 GPT:是输入文字,输出是文字;Embedding:输入是文字,输出是向量。 知识库里的片段越多效果会越差,我们希望能覆盖更多的用户场景,很喜欢放太多知识切片,但是不是越多越好,肯定有一个零界点。有价值的知识切片太多,容易互相影响,形成噪音。 Embedding模型需要效率高/速度快,随便给一段文字,就可以在千万量级知识库中秒回结果。 Reranker模型需要严谨仔细,深度分析语义到底哪个知识切片最合适。 常用Embedding和Reranker模型:(可以在hugface中找,查看排名) 1 智源人工智能研究院:BGE 2 网易:BCE 3 阿里:Qwen GTE 4 腾讯:Conan-embedding 在个人垂直领域,可能需要自己训练这种模型。 难负例negative:秦始皇统一六国后,建立了一个从中央到地方的官僚体系,各级官员通过考试选拔,依据才能晋升,而非世袭继承。 如何生成难负例:对抗生成,通过小幅度修改正例得到难负例。 难负例,腾讯的具体做法:可以用AI生成 垂直领域的Embedding微调 1 教育/医疗/金融/法律是常用领域 2 微调数据的核心要点是关联性:题目-解析(或题目-题目),症状-诊断方法,案情-法院判决,投资方向-风险评估 3 Embedding微调比对话式模型的微调有更高的安全性
DS不支持fc,那私有化部署ds时如何通过fc做应用?fc很少用
Embedding和Reranker模型训练数据可以一样。向量数据库可以挂元数据,挑选能挂载元数据的向量数据库。
相关元数据:不一定是额外的附属知识,关于查询coze官网问题的案例最核心的数据没有放在知识切片里,而是在元数据中,因为要看场景。
rag技术很难,到底怎么做切片,很难回答,需要根据实际情况来定。
fc和mcp的关系:mcp是一个协议,fc是一种llm的能力。agent使用一种工具,一定要使用fc吗,要大模型帮你做决策吗。大模型使用工具需要记住fc的能力,但是agent使用工具不一定要用fc的能力。希望多个平台都调用墨迹天气这个功能,需要mcp这个协议。fc帮助大模型决定要不要使用工具,跟mcp没关系。通过mcp调用工具/通过api调用工具/通过插件调用工具,mcp的好处,每家公司都提供了api,每家api文档不一样,密钥也不一样,就得写代码,怎么让大模型的决策直接到工具,不用关心不一样的文档。mcp会对插件有影响,普及的话,coze平台都不用那么多次插件。
插件:描述文字不能乱写,大语言模型就靠这些理解。
流程里放了插件,就不用单独用了,所以fc在实际应用中不太常用,成功率低。(已编辑)