从零构建生产级 AI 应用 ChatWithPDF

前言

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

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

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

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

目标产品 ChatWithPDF

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

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

环境准备

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

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

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

方案概览

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

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

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

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

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

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

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

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

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

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

Embedding 介绍

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

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

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

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

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

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

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

总结

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

相关推荐
程序员X小鹿43 分钟前
全部免费!6款AI对口型神器,让照片开口说话唱歌,早晚用得上,建议收藏!(附保姆级教程)
aigc
真忒修斯之船1 小时前
大模型分布式训练并行技术(三)流水线并行
面试·llm·aigc
学习前端的小z2 小时前
【AIGC】如何通过ChatGPT轻松制作个性化GPTs应用
人工智能·chatgpt·aigc
zzZ_CMing4 小时前
大语言模型训练的全过程:预训练、微调、RLHF
人工智能·自然语言处理·aigc
杰说新技术8 小时前
Meta AI最新推出的长视频语言理解多模态模型LongVU分享
人工智能·aigc
热爱跑步的恒川14 小时前
【论文复现】基于图卷积网络的轻量化推荐模型
网络·人工智能·开源·aigc·ai编程
火山引擎边缘云1 天前
创新实践:基于边缘智能+扣子的智慧婴儿监控解决方案
物联网·aigc·边缘计算
算家云1 天前
如何在算家云搭建Aatrox-Bert-VITS2(音频生成)
人工智能·深度学习·aigc·模型搭建·音频生成·算家云
AI绘画小331 天前
【comfyui教程】comfyui古风一键线稿上色,效果还挺惊艳!
人工智能·ai作画·stable diffusion·aigc·comfyui
AI绘画月月1 天前
【comfyui教程】ComfyUI有趣工作流推荐:快速换脸,创意随手掌握!
人工智能·ai作画·stable diffusion·aigc·comfyui