提示工程 VS RAG VS微调,什么时候使用
- 没问清楚 ——> 提示词工程
- 缺乏背景知识 ——> RAG
- 能力不足 ——> 微调
RAG 解决什么问题
- 减少幻觉,引入外部的知识,减少模型生成虚假不准确的内容
- 增加时效性,大模型训练的数据通常是静态的,RAG可以检索外部知识库实时更新信息
- 提升专业领域的回答质量,结合垂直领域知识库,生成更具专业深度的回答
RAG 核心原理和流程
流程
- 数据预处理阶段
首先整理原始知识,然后分块,将文档分成适当大小的片段(chunks),以便后续检索,然后将文本转为向量,并存储在向量数据库中。
- 检索阶段
首先将用户输入的问题转为向量,并在向量数据库中进行相似度检索,然后对检索结果进行相关性排序,选择最相关的片段作为生成阶段的输入。
- 生成阶段
将检索到的文本片段和用户输入的问题结合,形成增强的上下文输入,然后大模型基于增强的上下文输入生成最终的回答。
document ——> chunks ——> embeddings ,如图所示:
Thinking:从原始文档切分成chunk是怎么做的?如果是人工分切,会不会每篇文章都看,效率太低。如果是基于规则,会不会导致信息流失,或者一个主题切分到2个chunk
答:
1、指定规则,比如句子、标点,设置 chunk size =1000
2、语义上进行切分
3、防止信息流失,可以设置信息冗余 overlap = 10%,弥补信息被硬切段的风险。
Thinking:对于AI来说,什么格式是最友好的?
答:对于AI来说,Markdown 是最友好的,但是企业会有很多文档格式,比如:PPT,word, excel, pdf, png
如果想要将 PPT 转化为 Markdown,
1) 对 PPT 里面的内容进行 extract
2) 对抽取出来的内容 放到 Markdown 中
如果是图像 => 使用 Qwen-VL 进行理解
现成的 RAG 产品
- Cherry Studio
- imacopilot
- NotebookLM notebooklm.google.com/ (相比其他效果更好)
- 钉钉助理
- Coze
向量数据库
向量数据库 => 原文,embedding(做相似度检索,找到最有价值的chunks)
在向量数据库有哪些阶段
-
召回,就是快速采用多种策略进行粗筛的过程
策略1:基于关键词匹配
策略2:基于语义向量相似度
策略3:.......
-
重排,就是排序
比如:向量数据库中保存的 chunk 可能会有 1000 万个,召回就是快速筛选出 1000,然后重排序取 Top10
常见的 Embedding 模型
高质量的 RAG 背后是 好的 Embedding
国外 Embedding 选择网站 huggingface.co/spaces/mteb… (Open,闭源)
开源的 Embedding 模型选择 modelscope.cn/