吴恩达LangChain教程:Embedding与文档解析

当前有很多应用想要实现根据文档或者文本内容实现用户问答,或者实现多轮会话能力,这时候就会使用到Embedding的能力。

01 | 使用类介绍

想要依据Embedding实现文本检索,需要引入如下的依赖。

img

其中,RetrievalQA的作用是对一些文档进行检索,CSVLoader将用于加载一些我们与LLM结合的以CSV格式存在的专有数据,DocArrayInMemorySearch是一种向量存储,也是一种内存中的向量存储,不需要连接到任何外部数据库。

案例中提供了一个户外服装数据的CSV,使用CSVLoader实现数据加载。

img 然后引入VectorstoreIndexCreator实现简单的创建向量存储的能力。创建代码如下:

img

相当简单的就创建了一个内存的向量存储,这时候就可以直接提问了。

图片

如果要展示结果,可以用如下的MarkDown格式进行数据展示。

图片

使用如上的命令,我们可以拿到所有具有防晒功能的衣服合集,并且还有一个LLM提供的简洁概要。

02 | Embedding

图片

我们的目标很明确,就是要将LLM与我们的文档进行结合,但是LLM每次只能检查几千个词或者说Token,但是面对大量的文本数据,我们这时候就需要Embedding和向量存储来实现我们的需求功能了。

Embedding可以认为是一组文本用向量表征的值,如果两个词或者两段文本之间的向量距离比较小(或者说比较接近),我们就说这两个文本或者词语之间含义接近,这就能够让我们能够在向量空间中比较文本片段。

图片

如图所示,前两个句子都是讨论宠物的内容,在向量距离上比较接近,第三句话是讨论汽车的内容,和前两句话相关性较小。

因此,使用向量存储和向量比较,我们可以快速找到相似含义的文本片段,在考虑传递给LLM以回答问题的文本片段时非常有用。

03 | Vector Database

一个向量数据库是存储我们在前一步中创建的这些向量表示的一种方式,我们创建这个向量数据库的方式是将其中的文本块填充为来自输入文档的块。

当我们获得一个大的输入文档时,我们首先要将其分解为较小的块,这有助于创建比原始文档更小的文本片段,这个对于我们帮助很大,因为我们可能无法将整个文档传递给语言模型。我们可以通过分解后较小的块,让我们只传递与提问最为相关的部分给到语言模型。

我们为每个这些块创建一个Embedding,并将其存储在向量数据库中,这个就是创建索引时发生的情况。

利用这个向量数据库,当一个查询进来时,我们首先为该查询创建一个Embedding, 然后将其与向量数据库中所有向量进行比较,并选择最为相似的前N个,然后将其返回作为提示传递给LLM,以获得最终的答案。

图片

04 | 向量数据库与LLM结合

上面介绍了向量库,实际上还是要和我们的LangChain结合,实现我们需要的功能。

图片

和之前的逻辑一样,我们先使用CSVLoader将我们的csv格式的文件进行加载,之后我们就可以使用docs[n]查看第n个产品的详细信息。

上面的文档已经比较小了,因此,案例中并没有给到切分的逻辑,而是直接执行下一步的Embedding,实际上,切分逻辑也比较简单,只需要按照合适的大小,对超过大小的内容进行切分为不同的多个块即可。

图片

上图就是案例中的Embedding的代码逻辑,其中的len(embed)就是查看每个文本的向量化阶,案例中表示的是,每个文本使用了1536个浮点数的向量值组成的向量进行表征。

这时候,我们将我们传入的csv文件进行Embedding:

在这里插入图片描述

这样,向量存储库就已经创建完成,我们就可以使用这个向量库根据查询返回对应文本片段。

图片

如上我们可以使用向量库的相似查询,根据用户的提问,返回含义很是接近的4个文本数据。

如果我们想要使用LangChain实现向量查询的能力,首先我们需要从这个向量存储创建一个检索器。检索器是一个通用接口,可以由接受查询并返回文档的任何方法支持。向量存储和Embedding就是这样一种方法,尽管有很多不同的方法,有些不太先进,有些更先进。

图片

如果我们执行如下的命令:

qdocs="".join([docs[i].page_content for i in range(len(docs))])

我们会将文档中所有的页面内容连接到一个变量中,然后将这个变量或者问题的变体进行传递,例如,请在表格中列出所有的搜索,并使用markdown将每个搜索汇总到语言模型中。

在这里插入图片描述

这时候我们打印出结果就可以看到完全符合我们要求的表格数据。

图片

因此,所有这些步骤都可以用LangChain封装。

在这里插入图片描述

图片

或者,我们可以直接使用Chain的方式进行输出:

图片

图片

Map_reduce方法基本上需要所有的块,将它们与问题一起传递给语言模型,返回响应,然后使用另一个语言模型调用将所有单个响应汇总为最终答案。

图片

Map-reduce最大的魅力就是,他可以对任意数量的文档进行操作,只要能够切分,并且切分后的文档意义完整即可,甚至可以并行处理问题,但是也存在一定的问题,那就是需要更多的调用,并且需要将所有的文档视为独立的,这可能并不总是最理想的事情。

refine精炼

还有一种方式就是精炼refine,也是用于循环遍历许多文档,但它实际上是迭代进行的,它建立在上一份文件的答案之上,这对于组合信息和随着时间的推移建立答案非常有用。

图片

正因为是串行,因此,它通常需要更长的执行时间,并且基本上需要和map-redu ce差不多的调用。

Map-rerank

图片

Map-rerank是一个非常有趣并且更具实验性的工具,可以对每个文档的LLM执行一次调用,还可以要求它返回一个分数,并且选择最高分。但是这依赖于LLM知道分数应该是多少,因此,需要在prompt中告知LLM,如果它和文档相关并真正完善,它应该是一个高分之类的说明。

05 | 小结

Embedding主要是在LangChain比较繁琐的应用开发领域使用,主要应用有两个:

  • 与大文本相关的领域应用,比如说文本理解或者文档问答;
  • 多轮会话,如果想要保留用户的历史所有会话内容,那么可以根据用户当前的提问从向量数据库中获取最为相关的N条问题以及回复,来实现更为有效的会话实现。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/748709.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一天跌20%,多只可转债“腰斩”,近百只跌破面值,“退可守”的香饽饽为何破防?

专业人士指出,近期部分可转债大跌原因主要有两点:一方面,转债市场与权益市场联动性强。另一方面,近期公布的宏观经济数据稳中趋缓,“供强需弱”特征依然明显,证监会主席吴清发言及“科创板八条”新规延续了…

Python 基础 (标准库):heapq (堆)

1. 官方文档 heapq --- 堆队列算法 — Python 3.12.4 文档 2. 相关概念 堆 heap 是一种具体的数据结构(concrete data structures);优先级队列 priority queue 是一种抽象的数据结构(abstract data structures)&…

秘籍来啦!手机找回删除的文件,掌握这3种方法

你是否曾经不小心删除了手机上的重要文件,如照片、视频、文档等,然后束手无策,不知道该如何恢复?这时候,找回删除的文件就显得尤为重要。别担心,本文将为大家揭秘3种方法,让你轻松找回那些被删除…

Redis Stream Redisson Stream

目录 一、Redis Stream1.1 场景1:多个客户端可以同时接收到消息1.1.1 XADD - 向stream添加Entry(发消息 )1.1.2 XREAD - 从stream中读取Entry(收消息)1.1.3 XRANGE - 从stream指定区间读取Entry(收消息&…

徐徐拉开的帷幕:拜登与特朗普的辩论大戏 日元跌破160大关!创1986年以来最低纪录

北京时间6月27日(本周五)上午9:00,拜登和特朗普将参加2024年总统候选人电视辩论。作为参考,2016年大选辩论期间,美元汇率对辩论结果的反应相对温和,希拉里胜选预期增强在一定程度上支撑了美元。 时间逐渐临…

AI产品打造全攻略:看我是如何预测用户流失,搞定AI产品全流程的

前言 对于任何互联网公司而言,用户流失无疑是一个不容忽视的问题。在本文中,我将通过一个真实的预测用户流失的项目案例,带领大家深入了解AI产品从筹备到上线的整个流程。这个过程将展现AI产品经理的工作全貌,包括各个环节的角色…

钉钉在MAKE 2024大会上宣布开放AI生态;NBC将用AI主播播报巴黎奥运会内容

🚀 钉钉在MAKE 2024大会上宣布开放AI生态 摘要:钉钉总裁叶军在MAKE 2024生态大会上宣布,钉钉将对所有大模型厂商开放,构建“国内最开放AI生态”。目前已有六家大模型厂商接入钉钉,用户可直接使用七家大模型产品。未来…

下拉选择输入框(基于elment-ui)

最近在需求中,需要有一个下拉选择功能,又得可以输入,在 element-ui 官网找了,发现没有适合的,然后在修炼 cv 大法的我,也在网上看了一下,但是也都感觉不合适,所以就自己写了一个&…

R语言数据分析案例37-旅游景点聚类分析

一、研究背景 近年来,随着旅游业的迅猛发展,旅游景点的竞争日益激烈。如何在众多景点中脱颖而出,吸引更多游客,成为各大景点管理者关注的焦点。通过对旅游景点进行深入的数据分析,可以帮助管理者更好地了解景点的优势…

C#1.0-11.0所有历史版本主要特性总结

文章目录 前言名词解释主要版本一览表各版本主要特性一句话总结 C# 1.0 (Visual Studio 2002, .Net Framework 1.0)C# 2.0 (Visual Studio 2005, .Net Framework 2.0)C# 3.0 (Visual Studio 2008, .Net Framework 3.0)C# 4.0 (Visual Studio 2010, .Net Framework 4)C# 5.0 (V…

赏金猎人src挖掘入门

文章目录 1. 什么是漏洞2. OWASP Top 103. 利用的漏洞来源4. SRC安全应急响应中心5. Burpsuite简介6. 浏览器代理插件6.1 firefox浏览器代理插件6.2 edge浏览器代理插件3.chrome浏览器代理插件(需要科学上网) 1. 什么是漏洞 漏洞是指一个系统存在的弱点或…

2024广东省职业技能大赛云计算赛项实战——构建CICD

构建CI/CD 前言 题目如下: 构建CI/CD 编写流水线脚本.gitlab-ci.yml触发自动构建,具体要求如下: (1)基于镜像maven:3.6-jdk-8构建项目的drone分支; (2)构建镜像的名称&#xff1a…

C# VTK 自定义封装 vtkwPipeline 多边形管道建模

vtkwPipeline 简介 public vtkwPipeline(vtkLineSource lineSource, double outR, double inR, int sides) vtkwPipeline 是我自定义封装的C# 类 用于对管道壁建模,有内半径,外半径设置, 以及多边形边数设置。 参数 1. vtkLineSource li…

EI CCIE学习笔记-SDAccess之一:SDAccess解决方案

Chapter 1 SD-Access Solution Proposal 1.1 概念引入 SDN三要素:集中控制、转控分离、可编程 DNA DNA:Digital Network Architecture数字网络架构 思科提出的跨园区,分支机构,WAN和扩展企业的企业网络架构它提供了一种开放,可扩…

win10 C:\Users\Administrator

win10 C:\Users\Administrator C:\Users\Administrator\Documents\ C:\Users\Administrator\Pictures C:\Users\Administrator\Favorites C:\Users\Administrator\Links C:\Users\Administrator\Videos

Shopee API接口——获取商家店铺商品列表

一、引言 在跨境电商领域,Shopee作为东南亚地区领先的电商平台,为众多商家提供了广阔的市场和丰富的销售机会。本文将详细介绍如何通过Shopee API获取商家店铺商品列表,并探讨其应用场景。 二、核心功能介绍 Shopee API获取商家店铺商品列…

数据结构(Java):ArrayList的应用

1、引言 上一篇博客,已经为大家讲解了集合类ArrayList。 这篇博客,就来帮助大家学会使用ArrayList。 2、题1: 删除字符(热身题) 题目:给出str1和str2两个字符串,删除str1中出现的所有的str2…

【线代基础】张宇30讲+300题错题整理

第一章 行列式 1. 2. 第二章 矩阵 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 第三章 向量 1. 2. 3. 第四章 线性方程组 1. 2. 3. 4. 5. 6. 7. 8. 9. 第五章 特征值与特征向量 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 第六章 二次型 1. 2. 3. 4. 5. 终于结束了线性…

【Mysql】多表关系设计

多表关系设计 实际开发中,一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表(category)、商品表(products)、订单表(orders)等多张表。且这些表的数据之间存在一定的关系,接下来我们一起学习一下多表关系设计方面的知识 一对…

系统性掌握C++17容器四件套:std::optional, std::any, std::variant, std::tuple

昨天在写《深入探讨C的高级反射机制(2):写个能用的反射库》的时候,正好遇到动态反射需要的类型擦除技术。所谓的类型擦除,就是在两个模块之间的接口层没有任何类型信息,实现两个模块之间安全的通信。可以理…