如何构建生产级AI应用:ChatWithPDF详细教程

释放双眼,带上耳机,听听看~!
本文详细介绍了如何通过Python和OpenAI API构建生产级AI应用ChatWithPDF,用户可以上传PDF文件并使用ChatWithPDF进行问答学习等功能。教程涵盖Python环境准备、方案设计、Embedding技术等内容,适合有一定Python基础的用户学习。

前言

目前 AIGC 的浪潮很火,不管你是什么方向的程序员,都可以通过大模型去构建自己的 App,但是搜索资料学习的时候发现:

  • 目前构建 AI 应用的中文资源比较少,大多数都是英文的。
  • 教程大多是 demo 级别,没有生产级的构建教程,更没有带有完整代码且一步步教学的资源。
  • 构建应用一般会使用 Langchain 提升构建效率,但是 Langchain 文档有点乱,并且版本迭代较快,使用方式有差异。

由于以上原因,本人在学习构建自己的 AI 应用时候踩了很多坑,加上身边的小伙伴也想要一个完整的教程。本着 以输出倒逼输入 的目的,决定开一个系列,从零基础一步步构建 生产级 AI 应用 ,只需要一点点 🤏🏻 Python 基础就 ok。

无 Python 基础的同学可以通过 Python 官网教程,快速学习一波,有这个基础就够了。

目标产品 ChatWithPDF

实践是最快的一种学习方式,所以本系列的目的就是构建一个对标 PDF.ai 的产品,用户可以上传自己的 PDF 文件,然后通过 ChatWithPDF 对 PDF 文件内容提问学习,得到总结,查找信息等等。

如何构建生产级AI应用:ChatWithPDF详细教程

这类应用一般都是要收费的(根据上传的 PDF 大小,PDF 数量收取对应费用),通过学习这个系列可以自己本地构建一个应用,免费辅助学习知识,绝壁不亏 。

环境准备

构建这个产品需要的东西就2个:Python 环境 + OpenAI API Key,由于 Python 环境安装比较简单,这里就不介绍了,直接按照 Python 官网教程 就ok。

如果有不知道 OpenAI 是神马,直接浏览器搜索下就知道了,这里也不赘述。但是由于 OpenAI API 的访问问题,这里建议使用 Azure OpenAI API

如何构建生产级AI应用:ChatWithPDF详细教程

注册一个微软云 Azure 账号,绑定下自己的信用卡就有免费的额度,足够我们整个系列的使用。

方案概览

开始编码之前,需要先做方案设计。针对 ChatWithPDF 的应用功能,有两个方案,如下所示:

方案1:全量提交所有内容(不推荐)

如何构建生产级AI应用:ChatWithPDF详细教程

这个方案在 PDF 内容比较少时,不会有问题。但是当 PDF 内容比较长的时候有3个问题:

  1. 发送给 ChatGPT 的内容是有长度限制的(token数量限制),PDF 内容比较长的时候会发送失败。
  2. 即使 ChatGPT 没有内容限制,当一次性提交大量文本时,获取回复效果并没想象中好。
  3. 发送内容多少等于消耗token数量的多少,内容多token消耗多相当于成本高。

方案2:提交和用户问题相关的 PDF 内容(推荐)

方案 2 主要分为 4 个步骤:

  • 当用户上传 PDF 之后,摘取 PDF 的文本内容,将所有内容切割成文本块。
  • 存储每个文本块的内容。
  • 当用户提问时,找到和问题最相关的文本块。
  • 将相关联的文本块 + 用户问题一起提交给 ChatGPT。

如何构建生产级AI应用:ChatWithPDF详细教程

上图是完整的流程,其实分为两个步骤:

  1. 构建通过用户上传的 PDF 构建相关的向量数据库

如何构建生产级AI应用:ChatWithPDF详细教程

2. 处理用户的问题

如何构建生产级AI应用:ChatWithPDF详细教程

在本系列中我们采用方案2,目前的流程是为了方便大家在学习前有个整体的印象,在实际开发过程中还有很多细节需要处理,目前是忽略的。但最终效果的好坏很大程度上就是细节决定的,所以后续对于细节方面也会做详细的分析

Embedding 介绍

👆🏻上个小节有个关键步骤就是需要检索出 PDF 中与用户提问相关联的文本块,要实现这个过程就是通过使用 Embedding 对文本进行向量化处理

Embedding 是一种将物体(如文本)表示为低维向量的技术。这些向量具有以下特性:

  1. 距离相近的向量对应含义相近的物体。
  2. 支持数学运算,如Embedding(马德里)-Embedding(西班牙)+Embedding(法国)≈Embedding(巴黎)。
  3. 能够揭示物体间的潜在关系。

举个具体的例子,“我感到很快乐” 这句话通过 Embedding 算法之后就会得到一个向量,如下图所示。

如何构建生产级AI应用:ChatWithPDF详细教程

在这里,我们并不需要知道 Embedding 算法的具体实现,因为已经有人帮我们实现好,我们需要知道的是一个基本原理,方便我们后续的开发工作。

为什么通过 Embedding 之后的内容可以进行相关联程度的检索呢?

因为 Embedding 就是将文本(高维度)映射到了一个低维度(每个维度都有个评分)向量,然后通过计算向量之间的相似度来决定文本之间的相关联性。

如何构建生产级AI应用:ChatWithPDF详细教程

总结

本文是从零构建生产级 AI 应用的第一篇,主要介绍了做这个事情的背景原因以及整体的方案概述,下一篇将介绍如何利用 Langchain 加速我们的 AI 应用的构建,敬请期待~😉

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

如何使用AI微信聊天机器人搭建属于自己的智能助手

2024-6-15 6:12:00

AI教程

CompreFace:免费开源的人脸识别神器,轻松集成到系统中

2024-6-15 6:36:00

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索