学习视频:
https://www.bilibili.com/video/BV11zf6YyEnT/?spm_id_from=333.337.search-card.all.click
例子:
用户提出问题
客服机器人基于rag回答用户问题
过程拆解:
客户问题 – 转化为向量表示 – 在向量数据库中进行相似性搜索 – 系统检索到相关信息后,将做为问题的上下文,相关信息context来使用 – context被整合进提示词模版中,用户信息也被整合到提示词模版中 – 新的提示词被发送到大语言模型进行提问
rag好处:
1、减少幻觉
2、提供最新资讯
3、比微调成本低
rag流程图:
第一步:文档内容入向量库
- 针对文档进行处理
- 对文档进行分割,分割成text chunk。此步至关重要,文档分割质量决定了检索的准确性和生成模型的效果
- embedding model(嵌入模型)将文本块转化成向量,这些向量捕捉了文本的语义信息,从而可以在海量文本库中检索相关内容。有多种模型可以用来进行向量嵌入,不同模型生成的向量数值可能有所不同
- vector embeddings(向量嵌入),使用一组数值表示数据对象在多维空间中捕捉文本、图像或音频的语义和关联
示例:
假设我们有以下三个句子:
句子A:“苹果是一种甜脆的水果。”
句子B:“香蕉是黄色的热带水果。”
句子C:“汽车需要加油才能行驶。”
步骤说明:
使用嵌入模型(如 Sentence-BERT)生成向量:
句子A → 向量 [0.3, 0.8, -0.2, 0.5, …] (假设为 384 维)
句子B → 向量 [0.4, 0.7, -0.1, 0.6, …]
句子C → 向量 [-0.5, 0.2, 0.9, -0.3, …]
计算向量相似度(余弦相似度):
A 与 B 的相似度:0.92(语义相近)
A 与 C 的相似度:0.15(语义无关)
B 与 C 的相似度:0.10(语义无关)
关键结论
语义相似性:关于水果的句子A和B向量距离近,与汽车相关的句子C距离远。
检索应用:在向量数据库中搜索"健康水果推荐"时,系统会优先返回A/B而非C。
降维理解:实际向量可能是数百维,但语义关系可通过数学计算映射到低维空间呈现。 - embedding存储在哪里 – 向量数据库
向量数据库是一种专门用于存储和检索高维向量数据的数据库,主要用于处理与相似性搜索相关的任务。向量数据库可以存储海量高维向量。
向量数据库与传统数据库区别:
传统数据库用来存储结构化数据,数据类型固定,譬如整数,日期
向量数据库用来存储高维度数据,通常用于处理非结构化数据
向量数据库用于相似度搜索,通过语义理解,来检索相关结果,不依赖精确匹配,对拼写错误和同义词有较好的包容性
第二步:用户问答过程
- 用户问了一个问题后
- 该问题通过embedding model转换成向量嵌入,用户问题被转换为高维空间中数值向量
- 系统将该向量与向量数据库中其他向量进行比较,以执行相似性搜索
- 向量数据库中检索与用户问题相关信息的过程,被称为“检索”(retrival)
- 系统从海量文档或数据集中查询到与用户检索相关内容,随后,进一步筛选出排名靠前的k个文本片段(top k text chunk)
- 在查询到的topk文本上,进一步根据与用户查询的相关性和上下文适配度进行重新调整,这个重新排序的步骤,叫做reranking
- 重新排序过的文本,做为上下文相关信息(context)被嵌入到提示词模版中,与用户问题相结合,构建出全新提示词
- 新的提示词发给大模型,大模型返回结果给用户
最终提示词示例
你是一个咖啡专家助手,需严格根据提供的资料用中文回答
[用户问题]
如何冲泡手冲咖啡?
[context] – 从向量数据库中检索到的内容填充
研磨度建议:中粗砂糖颗粒大小
水温要求:88-92°C
注水手法:先中心注水闷蒸30秒,再顺时针画圈注水
[回答要求]
请使用不超过5步的指南,以"👉"开头