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

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

相关推荐
砥锋13 分钟前
纯NumPy手写两层GCN:从零开始理解图神经网络核心思想
机器学习
Larcher14 分钟前
🔥 告别抓瞎:用 Claude Code (cc) 优雅接手与维护已有项目
javascript·机器学习·前端框架
她的男孩23 分钟前
从零搭一个企业后台,为什么我把能力拆成 Starter 和 Plugin
java·后端·架构
RainCity25 分钟前
Java Swing 自定义组件库分享(七)
java·笔记·后端
Sam_Deep_Thinking30 分钟前
连锁门店的外卖订单平台对接
java·微服务·架构·系统架构
_遥远的救世主_1 小时前
从一次结果集密集型查询 OOM 看 Java 服务的稳定性架构治理
java·后端
一楼的猫1 小时前
从工具链视角对比:番茄作家助手 vs 第三方写作辅助方案
java·服务器·开发语言·前端·学习·chatgpt·ai写作
武子康1 小时前
调查研究-138 全球机器人产业深度调研报告【01 篇】:市场规模、竞争格局与商业化成熟 2026
服务器·数据库·ai·chatgpt·机器人·具身智能
创世宇图1 小时前
【AI入门知识点】LLM 原理是什么?为什么 ChatGPT 看起来像“会思考”?
人工智能·ai·llm·token
码途漫谈1 小时前
让 AI 编程不断线:9Router 的本地模型路由与 Token 节流术
人工智能·ai·开源·ai编程