Embedding是什么?从文本转向量

向量的作用

在了解embedding之前,我们先要知道向量是做什么的,为什么需要向量,我们使用中文好好的不行吗,es模糊匹配一样可以解决问题。

但是假如我们有以下这个场景,知识库内的内容是:打卡截止时间为9:00。用户提问:我8:30进行打卡可以吗?

以上这种场景我们使用文字的匹配几乎不可能匹配上,所以我们引入了向量。

那向量是什么呢,这里的向量可以理解为对文本语意的多维度展现,举个例子加入"苹果"的向量是0.213, 0.554,第一个向量代表的是苹果的大种类,属于水果,那"香蕉"的向量就可能是0.213, 0.76942, 也是属于水果这个大种类。大概可以这么理解向量,当然具体的例子肯定复杂的多,但一通百通,原理都差不多。实际应用中,向量维度可能高达数百甚至数千,这里仅用二维简化示意

好的,那知道了向量的作用,我们还得知道向量的匹配机制,两个向量之间你怎么知道他的相似度呢?

向量相似度

余弦相似度是比较向量相似度中最常用的方式。每个向量都可以看成是从原点出发的一个箭头,余弦相似度就是两个箭头的方向有多么接近。余弦相似度越接近1,表示两个向量方向越一致(语义越相似);越接近0,表示越无关;越接近-1,表示越相反

正常来说我们如果要找相似度差不多的大概在0.7以上就行了。取相似度最高的几个,然后过滤掉0.7以下的向量。

Embedding

所以将文本转为向量的技术就是embedding,只要我们输入一串文本,embedding就会将这串文本的向量数据返回回来。

不同的embedding模型所对应的向量维度,最大文本长度都不太一样,维度越高,表达能力就越强,分析的越细致,但是存储和计算的成本也会变得更高。

最大输入长度也决定了你的chunk能有多长。

不同模型对于中文的识别效果也不太一样,整体国内的阿里通义 text-embedding-v3 对于中文的效果最好,api也更加稳定,国外的openAi的embedding模型对于英文的效果更好。

这里也要提一点,不同的embedding模型输出的向量是不太一致的,如果使用了一个模型进行chunk内容的向量化,那么进行输入匹配的向量化也得使用这个embedding模型,不然可能匹配出问题。

总结

所以我们的RAG流程是

上传文件 → 文件Tika提取文本 → 文件内容chunk拆分 → 不同chunk向量化处理 embedding

再往后就是对向量进行存储,以及后续用户输入内容匹配再交给大模型识别。

相关推荐
淘源码d13 分钟前
医学影像云PACS系统——PACS诊断工作站
java·源码·影像处理·医院管理系统·影像工作站·云pacs系统·dicom 标准通信
一氧化二氢.h18 分钟前
【Claude Code】安装
ai·ai工具
咸鱼翻身小阿橙20 分钟前
DeepSeek V4接入Vscode中方法
ai·deep learning
AlfredZhao1 小时前
AI时代最扎心的真相:人类在打杂,AI在做决策
ai·人类·打杂
hixiong1231 小时前
TensorRT转换工具分享
人工智能·计算机视觉·ai·c#
NiceCloud喜云1 小时前
Anthropic 一周三连发:Cowork 多端、Fable 5 按需付费、J-space 论文的技术解读
java·服务器·网络·人工智能·ai
凉云生烟1 小时前
机器学习 02- KNN算法
人工智能·算法·机器学习
fenglllle1 小时前
chromadb emmbedding 向量检索
人工智能·python·embedding
SamDeepThinking1 小时前
组合还是继承?我在项目里主要看这两个判断
java·后端·面试
momo1 小时前
JAVA基础知识
java·开发语言