初识 Embedding,为何大家都基于它搭建私人智能客服?

2024-09-02 12:44

本文主要是介绍初识 Embedding,为何大家都基于它搭建私人智能客服?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

随着 AI 技术的发展,大家在日常使用过程中经常会碰到一些目前 GPT4 也无法解决的问题:

  • 无法获取个人私有数据信息,进行智能问答
  • 无法获取最新信息,LLM 模型训练都是都是有截止日期的
  • 无法定制化私有的专属模型,从而在某个领域内取得更好效果

基于以上问题 OpenAI 官方提供了两种不同私有化模型定制方式:Fine-Tuning(微调)、Embedding(嵌入)。

一、Fine-Tuning 与 Embedding 区别

两种方式信息概括如下:

  • Fine-Tuning(微调):在一个已经预训练好的模型的基础上,使用用户提供的数据进行进一步的训练,从而使模型更适合用户的特定应用场景。微调可以提高模型的质量、准确性和可靠性,以及降低请求的延迟和代价。微调需要用户准备和上传训练数据,以及选择合适的模型和参数。
  • Embedding(嵌入):指将文本或其他内容转换为数值向量的形式,从而可以计算内容之间的相似度或相关性。OpenAI 的 Embedding 模型可以将文本解析为 1536 个维度,每个维度代表一个概念或特征。用户可以通过 Embedding 模型来存储、检索或比较文本或其他内容。Embedding 不需要用户提供训练数据,也不需要选择模型和参数。

Fine-Tuning 微调训练的成本较高,且自身需要一定的模型训练经验和一定规模的数据集,否则微调出来的模型效果并不会很理想。所以更推崇使用 Embedding 方式对数据进行处理从而达到预期效果,比如目前市面上智能客服完全可以通过 Embedding 实现落地。

二、Embedding 详细分析

接下来我们就来重点聊聊 Embedding ,它的大致流程是:

  1. 将已有数据集维护成对应的向量数据库
  2. 当用户通过 Prompt 进行提问时,从向量数据库提取相似或相近的信息
  3. 将信息连同 Prompt 一起发送给 GPT 模型来生成结果

这样做有一个好处就是我们只需要将相关的数据发送给 ChatGPT 即可,相对比较节约 Token。

Embedding 将数据转成成连续向量空间的过程,我们并不需要去深入了解。所以我们从 Embedding 如何识别相似或关联性数据讲起。

1. 如何从向量数据库提取相关数据?

从上面的概述我们可以了解到一个重点是:Embedding 模型需要将数据解析为 1536 个维度,每个维度代表一个概念或特征

将一段文字转换成这么多个维度的数据,从向量数据库提取的过程中就是根据这些维度进行计算。

人类是如何辨别一个人,想象自己平时是如何认出谁是谁呢?我们都是通过外表容貌来认人的(如眼睛大小、鼻子大小、脸型、发型等等),对我们熟悉的人,我们的脑海中会记住他的五官、身材等关键信息。

映射到向量数据也是一样的道理,将数据的 1536 个维度认为是它的“五官”,当我们需要从向量数据库中提取数据时只需要找到“五官”相似的数据即可。

图片

以如上二维坐标进行举例,相似或有关联性的向量数据就会分布在坐标系中比较临近的位置(奥运会、亚运会、残奥会),而内容基本不相干的向量数据(北京地铁)在坐标系中就会离得比较远。

2. 使用 OpenAI 生成向量数据

通过 OpenAI 官网我们也可以看到,价格还是比较便宜的。使用量按每个输入令牌定价,收费为每1000个 tokens 大约0.0004美元。

图片

通过 OpenAI 的 Embedding 方法调用,看看返回数据啥样。
在这里插入图片描述

接口返回了该文本对应的 1536 个维度数据,相当于我们已经掌握了这份文本数据的“五官”信息了。

图片

3. 如何提取相似数据?

在上面的方法上使用余弦值来比较相似度,代码如下:

import openai
from sklearn.metrics.pairwise import cosine_similarityopenai.api_key = "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"if __name__ == '__main__':evaluate_one_text = "奥运会"    evaluate_two_text = "亚运会"    evaluate_three_text = "北京地铁"   # 对数据进行 embedding    embeddings = openai.Embedding.create(    model="text-embedding-ada-002",        input=[evaluate_one_text, evaluate_two_text, evaluate_three_text],    )    evaluate_one = embeddings["data"][0]["embedding"]    evaluate_two = embeddings["data"][1]["embedding"]    evaluate_three = embeddings["data"][2]["embedding"]   print("奥运会&亚运会的余弦距离:" + format(cosine_similarity([evaluate_one], [evaluate_two])[0][0]))    print("奥运会&北京地铁的余弦距离:" + format(cosine_similarity([evaluate_one], [evaluate_three])[0][0]))    print("北京地铁&亚运会的余弦距离:" + format(cosine_similarity([evaluate_three], [evaluate_two])[0][0]))

结果如下:

奥运会&亚运会的余弦距离:0.9022809359592784
奥运会&北京地铁的余弦距离:0.7898007980212471
北京地铁&亚运会的余弦距离:0.7767229785942393

计算两个数据的相似度,我们可以使用余弦相似度(cosine similarity)的方法,即计算两个向量之间的夹角的余弦值。余弦相似度的范围是[-1, 1],其中 1 表示完全相同,0表示正向相关性,-1表示完全相反。

通过这样一个简单的案例,我们就可以知道 OpenAI 是如何从向量数据库中提取到相似或相关联的数据。

结尾

本文主要讲解了 Embedding 的一些基本概念,后续会更新如何基于 Embedding 转换私人数据搭建私人客服。

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

这篇关于初识 Embedding,为何大家都基于它搭建私人智能客服?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1129987

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

智能交通(二)——Spinger特刊推荐

特刊征稿 01  期刊名称: Autonomous Intelligent Systems  特刊名称: Understanding the Policy Shift  with the Digital Twins in Smart  Transportation and Mobility 截止时间: 开放提交:2024年1月20日 提交截止日

pico2 开发环境搭建-基于ubuntu

pico2 开发环境搭建-基于ubuntu 安装编译工具链下载sdk 和example编译example 安装编译工具链 sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib 注意cmake的版本,需要在3.17 以上 下载sdk 和ex

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景

Linux操作系统 初识

在认识操作系统之前,我们首先来了解一下计算机的发展: 计算机的发展 世界上第一台计算机名叫埃尼阿克,诞生在1945年2月14日,用于军事用途。 后来因为计算机的优势和潜力巨大,计算机开始飞速发展,并产生了一个当时一直有效的定律:摩尔定律--当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。 那么相应的,计算机就会变得越来越快,越来越小型化。