当前位置: 首页 > news >正文

Elasticsearch:在你的数据上训练大型语言模型 (LLM)

过去的一两年,大型语言模型(LLM)席卷了互联网。 最近 Google 推出的 PaLM 2 和 OpenAI 推出的 GPT 4激发了企业的想象力。 跨领域构思了许多潜在的用例。 多语言客户支持、代码生成、内容创建和高级聊天机器人都是一些例子。 这些用例要求 LLMs 根据业务的自定义数据做出响应。

企业如何借助 LLMs 对其自定义数据解决这些用例? 经过一些研究和接触 LLMs 后,我发现了三种方法。

  1. Prompt Engineering
  2. Embeddings
  3. Fine Tuning

Prompt Engineering

什么是提示 (prompt)?

提示是 LLM 的输入。 例如,在下图中,提示是:

Recommend me 5 fiction novels similar to the Bourne SeriesWrite only the title and author name.

提示要求 Chat GPT 推荐小说

提示中的自定义数据

在提示中注入数据或上下文是在 LLM 中使用自定义数据的最简单方法。 例如,在下图中,提示包含某公司 2023 年第一季度和 2023 年第二季度的销售数据。 LLM 的问题是返回销售额的百分比变化。

Adding data in Chat GPT prompt

何时使用 prompt engineering?

Prompt engineering 有很多应用。 事实上,Prompt engineering 被认为是一项未来将令人垂涎的关键技能。

在你想要向 LLM 提供说明、执行搜索操作或从较小的数据集中获取查询答案的情况下,在提示中传递数据效果很好。 但是,由于提示的大小和将大型文本传递给 LLM 相关的成本的限制,这并不是将大量文档或网页作为 LLM 输入的最佳方式。

嵌入 - embeddings

什么是嵌入?

嵌入是将信息(无论是文本、图像还是音频)表示为数字形式的一种方式。 想象一下,你想要根据相似性对苹果、香蕉和橙子进行分组。 这可以使用 “嵌入” 来完成。

嵌入会将每种类型的水果转换为数字形式(向量)。 考虑下面的例子,

  • 苹果 -> (3, 8, 7)
  • 香蕉 -> (8, 1, 3)
  • 橙子 -> (4, 7, 6)

苹果和橙子的这些嵌入彼此更接近。 我们可以说苹果和橙子更相似。

使用嵌入

下图从概念上解释了如何使用这些嵌入来使用 LLM 从你的文档中检索信息。 首先,文档通过一个模型,该模型创建文档的小块,然后创建这些块的嵌入。 然后将这些嵌入存储在向量数据库中。 当用户想要查询 LLM 时,将从向量存储中检索嵌入并将其传递给 LLM。 LLM 使用嵌入从自定义数据生成响应。

这篇文章是一个为文档生成嵌入并将这些嵌入传递到 Chat GPT 的工作示例。

LLM 文档嵌入

目前 Elasticsearch 是时间上下载量最大的向量数据库。我们可以使用 Elasticsearch 作为上图中的 Vector DB。

在实际的使用中,为了得到更好的响应,我们可以把从向量数据库中搜索出来的结果进行组合,已提供更多的上下文:

什么时候使用嵌入?

当需要将大量文档或网页传递给 LLM 时,嵌入效果很好。 例如,当构建聊天机器人来向用户提供一组策略文档的响应时,此方法会很有效。

微调

什么是微调 (fine tuning)?

微调是一种教导模型如何处理输入查询以及如何表示响应的方法。 例如,LLM 可以通过提供有关客户评论和相应情绪的数据进行微调。

Prompt: I really liked this product. I highly recommend it.
Completion: Positive
Prompt: I found the delivery experience below average.
Completion: Negative

这里 “prompt” 是输入的示例,“completion”是相应输出的示例。

现在,如果你向 LLM 提供另一条评论作为提示,那么它会以相应的情绪做出回应。

使用微调的 Chat GPT 进行情感分析

另一个例子是:

Prompt: Q1 2023, $10 million, +5%, good, positive
Completion: The revenue for Q1 2023 was $10 million, which is 5% higher than revenue in the previous quarter. The sentiment on the streets is good for this company and there is a positive outlook for the business.
Prompt: Q2 2023, $20 million, -2%, neutral, negative
Completion: The revenue for Q2 2023 was $20 million, which is 2% lower than revenue in the previous quarter. The sentiment on the streets is neutral for this company and there is a negative outlook for the business.

你可以提供许多示例来微调模型,然后向模型提出问题。

微调可用于有限的基本模型 - davinci、curie、babbage 和 ada。

什么时候使用微调?

微调通常用于针对特定任务调整 LLM 并在该范围内获得响应。 该任务可以是电子邮件分类、情感分析、实体提取、根据规格生成产品描述等。

这篇文章仅仅触及了这些技术的表面。 其中每一个都有更多的细微差别。

相关文章:

  • CHS零壹视频恢复程序高级版视频修复OCR使用方法
  • 如何通过一条数字人三维动画宣传片,打造出数字文旅
  • 【云原生基础】了解云原生,什么是云原生?
  • 模拟实现.net中的Task机制:探索异步编程的奥秘
  • java JUC并发编程 第十章 Synchronized与锁升级
  • 【数据结构】 二叉树理论概念!一文了解二叉树!
  • Java锁常见面试题
  • 力扣218.天际线问题 线段树解法
  • Java零基础手把手保姆级教程_类和对象(超详细)
  • Leetcode48旋转图像
  • R语言环境下使用curl库做的爬虫代码示例
  • Android 图片翻面动画
  • 零日漏洞预防
  • IO学习系列之阻塞IO
  • Linux安装配置awscli命令行接口工具及其从aws上传下载数据
  • [译]CSS 居中(Center)方法大合集
  • 【刷算法】求1+2+3+...+n
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • JWT究竟是什么呢?
  • 订阅Forge Viewer所有的事件
  • 技术:超级实用的电脑小技巧
  • 力扣(LeetCode)21
  • 区块链共识机制优缺点对比都是什么
  • 入门到放弃node系列之Hello Word篇
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 译自由幺半群
  • 组复制官方翻译九、Group Replication Technical Details
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • #NOIP 2014# day.2 T2 寻找道路
  • #pragma once
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • (13)Hive调优——动态分区导致的小文件问题
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (理论篇)httpmoudle和httphandler一览
  • (万字长文)Spring的核心知识尽揽其中
  • (转)详解PHP处理密码的几种方式
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .net core 连接数据库,通过数据库生成Modell
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .NET序列化 serializable,反序列化
  • .NET学习教程二——.net基础定义+VS常用设置
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • @基于大模型的旅游路线推荐方案
  • [ C++ ] STL---stack与queue
  • [ SNOI 2013 ] Quare
  • [2018-01-08] Python强化周的第一天