大模型开辟整体流程 & 基于个人知识库的问答助手 项目流程架构分析 ...

打印 上一主题 下一主题

主题 980|帖子 980|积分 2940


  • 一、大模型开辟整体流程


    • 1. 何为大模型开辟


      • 定义
      • 核心点
      • 核心本领

    • 2. 大模型开辟的整体流程


      • 1. 设计
      • 2. 架构搭建
      • 3. Prompt Engineering
      • 4. 验证迭代
      • 5. 前后端搭建


  • 二、项目流程简析




      • 步骤一:项目规划与需求分析


        • 1.项目目标
        • 2.核心功能
        • 3.确定技术架构和工具

      • 步骤二:数据预备与向量知识库构建


        • 1. 收集和整理用户提供的文档。
        • 2. 将文档词向量化
        • 3. 将向量化后的文档导入Chroma知识库,建立知识库索引。

      • 步骤三:大模型集成与API连接
      • 步骤四:核心功能实现
      • 步骤五:核心功能迭代优化
      • 步骤六:前端与用户交互界面开辟
      • 步骤七:摆设测试与上线
      • 步骤八:维护与连续改进


  • 三、项目架构简析


    • 1. 整体架构
    • 2. 代码布局
    • 3. 项目逻辑
    • 4. 各层简析


      • 4.1 LLM 层
      • 4.2 数据层
      • 4.3 数据库层
      • 4.4 应用层
      • 4.5 服务层


项目仓库地址
项目学习地址

一、大模型开辟整体流程

1. 何为大模型开辟

定义

开辟以LLM为功能核心,通过LLM的强大明确本领和生成本领,联合特殊的数据或业务逻辑来提供独特功能的应用。
核心点



  • 通过调用 API 或开源模型来实现核心的明确与生成
  • 通过 Prompt Enginnering 来实现大语言模型的控制
在大模型开辟中,我们一般不会去大幅度改动模型,而是将大模型作为一个调用工具。通过 Prompt Engineering、数据工程、业务逻辑分解等本领来充实发挥大模型本领,适配应用任务,而不会将精力聚焦在优化模型本身上。这因此,作为大模型开辟的初学者,我们并不需要深研大模型内部原理,而更需要掌握使用大模型的实践本领

核心本领

指令明确与文本生成,提供了复杂业务逻辑的简朴平替方案。
传统 AI大模型开辟开辟将复杂业务逻辑拆解,对于每一个子业务构造训练数据与验证数据,训练优化模型,形成完备的模型链路来办理整个业务逻辑。用 Prompt Engineering 来替代子模型的训练调优。通过 Prompt 链路组合来实现业务逻辑,用一个通用大模型 + 多少业务 Prompt 来办理任务评估思绪训练集上训练、测试集调优、验证集验证初始化验证集Prompt、收集BadCase、迭代优化Prompt 2. 大模型开辟的整体流程


1. 设计



  • 确定目标:在进行开辟前,我们起首需要确定开辟的目标,即要开辟的应用的应用场景、目标人群、核心价值。对于个体开辟者或小型开辟团队而言,一般应先设定最小化目标,从构建一个 mvp(最小可行性产品)开始,逐步进行美满和优化。
  • 设计功能:在确定开辟目标后,需要设计本应用所要提供的功能,以及每一个功能的大要实现逻辑。虽然我们通过使用大模型来简化了业务逻辑的拆解,但是越清晰、深入的业务逻辑明确往往也能带来更好的 Prompt 效果。同样,对于个体开辟者或小型开辟团队来说,起主要确定应用的核心功能,然后延展设计核心功能的上鄙俚功能;例如,我们想打造一款个人知识库助手,那么核心功能就是联合个人知识库内容进行问题的回答,那么其上游功能的用户上传知识库、鄙俚功能的用户手动改正模型回答就是我们也必须要设计实现的子功能。
2. 架构搭建



  • 搭建整体架构:目前,绝大部门大模型应用都是接纳的特定数据库+ Prompt + 通用大模型的架构。我们需要针对我们所设计的功能,搭建项目的整体架构,实现从用户输入到应用输出的全流程贯通。一般来说,我们保举基于 LangChain 框架进行开辟。LangChain 提供了 Chain、Tool 等架构的实现,我们可以基于 LangChain 进行个性化定制,实现从用户输入到数据库再到大模型最后输出的整体架构连接。
  • 搭建数据库:个性化大模型应用需要有个性化数据库进行支持。由于大模型应用需要进行向量语义检索,一般使用诸如 chroma 的向量数据库。在该步骤中,我们需要收集数据并进行预处理,再向量化存储到数据库中。数据预处理一般包括从多种格式向纯文本的转化,例如 pdf、markdown、html、音视频等,以及对错误数据、非常数据、脏数据进行洗濯。完成预处理后,需要进行切片、向量化构建出个性化数据库。
3. Prompt Engineering



  • Prompt Engineering:优质的 Prompt 对大模型本领具有极大影响,我们需要逐步迭代构建优质的 Prompt Engineering 来提升应用性能。在该步中,我们起首应该明确 Prompt 设计的一般原则及本领,构建出一个泉源于实际业务的小型验证集,基于小型验证集设计满足基本要求、具备基本本领的 Prompt。
4. 验证迭代



  • 验证迭代:验证迭代在大模型开辟中是极其重要的一步,一般指通过不停发现 Bad Case 并针对性改进 Prompt Engineering 来提升系统效果、应对界限情况。在完成上一步的初始化 Prompt 设计后,我们应该进行实际业务测试,探讨界限情况,找到 Bad Case,并针对性分析 Prompt 存在的问题,从而不停迭代优化,直到到达一个较为稳定、可以基本实现目标的 Prompt 版本。
  • 体验优化:在完成前后端搭建之后,应用就可以上线体验了。接下来就需要进行长期的用户体验跟踪,记录 Bad Case 与用户负反馈,再针对性进行优化即可。
5. 前后端搭建



  • 前后端搭建:完成 Prompt Engineering 及其迭代优化之后,我们就完成了应用的核心功能,可以充实发挥大语言模型的强大本领。接下来我们需要搭建前后端,设计产品页面,让我们的应用能够上线成为产品。前后端开辟黑白常经典且成熟的领域,此处就不再赘述,我们将重要介绍两种快速开辟 Demo 的框架:Gradio 和 Streamlit,可以资助个体开辟者灵敏搭建可视化页面实现 Demo 上线。
二、项目流程简析

以下我们将联合本实践项目与上文的整体流程介绍,扼要分析本项目开辟流程如下:
步骤一:项目规划与需求分析

1.项目目标

基于个人知识库的问答助手
2.核心功能


  • 上传文档、创建知识库;
  • 选择知识库,检索用户提问的知识片断;
  • 提供知识片断与提问,获取大模型回答;
  • 流式复兴;
  • 历史对话记录
3.确定技术架构和工具


  • LangChain框架
  • Chroma知识库
  • 大模型使用 GPT、Claude、科大讯飞的星火大模型、文心一言、Chat-GLM2等
  • 前后端使用 Gradio 和 Streamlit。
步骤二:数据预备与向量知识库构建

本项目实现原理如下图所示(图片泉源),过程包括:

  • 加载本地文档
  • 读取文本
  • 文天职割
  • 文本向量化
  • Query 向量化
  • 向量匹配,最相似的 top k个
  • 匹配出的文本作为上下文和问题一起添加到 prompt中
  • 提交给 LLM做生成回答

1. 收集和整理用户提供的文档。

用户常用文档格式有 pdf、txt、doc 等,起首使用工具读取文本,通常使用 langchain 的文档加载器模块可以方便的将用户提供的文档加载进来,也可以使用一些 python 比较成熟的包进行读取。
由于目前大模型使用 token 限定,我们需要对读取的文本进行切分,将较长的文本切分为较小的文本,这时一段文本就是一个单位的知识。
2. 将文档词向量化

使用文本嵌入(Embeddings)对分割后的文档进行向量化,使语义相似的文本片断具有接近的向量表示。然后,存入向量数据库,这个流程正是创建索引(index)的过程。
向量数据库对各文档片断进行索引,支持快速检索。如许,当用户提出问题时,可以先将问题转换为向量,在数据库中快速找到语义最相干的文档片断。然后将这些文档片断与问题一起传递给语言模型,生成回答。
3. 将向量化后的文档导入Chroma知识库,建立知识库索引。

Langchain集成了凌驾30个差别的向量存储库。我们选择 Chroma 向量库是由于它轻量级且数据存储在内存中,这使得它非常容易启动和开始使用。
将用户知识库内容经过 embedding 存入向量知识库,然后用户每一次提问也会经过 embedding,利用向量相干性算法(例如余弦算法)找到最匹配的几个知识库片断,将这些知识库片断作为上下文,与用户问题一起作为 prompt 提交给 LLM 回答。
步骤三:大模型集成与API连接


  • 集成GPT、Claude、星火、文心、GLM等大模型,配置API连接。
  • 编写代码,实现与大模型API的交互,以便获取问题答案。
步骤四:核心功能实现


  • 构建 Prompt Engineering,实现大模型回答功能,根据用户提问和知识库内容生成回答。
  • 实现流式复兴,答应用户进行多轮对话。
  • 添加历史对话记录功能,保存用户与助手的交互历史。
步骤五:核心功能迭代优化


  • 进行验证评估,收集 Bad Case。
  • 根据 Bad Case 迭代优化核心功能实现。
步骤六:前端与用户交互界面开辟


  • 使用 Gradio 和 Streamlit 搭建前端界面。
  • 实现用户上传文档、创建知识库的功能。
  • 设计用户界面,包括问题输入、知识库选择、历史记录展示等。
步骤七:摆设测试与上线


  • 摆设问答助手到服务器或云平台,确保可在互联网上访问。
  • 进行生产环境测试,确保系统稳定。
  • 上线并向用户发布。
步骤八:维护与连续改进


  • 监测系统性能和用户反馈,实时处理问题。
  • 定期更新知识库,添加新的文档和信息。
  • 收集用户需求,进行系统改进和功能扩展。
整个流程将确保项目从规划、开辟、测试到上线和维护都能够顺利进行,为用户提供高质量的基于个人知识库的问答助手。
三、项目架构简析

1. 整体架构

经过上文分析,本项目为搭建一个基于大模型的个人知识库助手,基于 LangChain 框架搭建,核心技术包括 LLM API 调用、向量数据库、检索问答链等。项目整体架构如下:

如上,本项目从底向上依次分为 LLM 层、数据层、数据库层、应用层与服务层。


  • LLM 层:重要基于四种盛行 LLM API 进行了 LLM 调用封装,支持用户以统一的入口、方式来访问差别的模型,支持随时进行模型的切换;
  • 数据层:重要包括个人知识库的源数据以及 Embedding API,源数据经过 Embedding 处理可以被向量数据库使用;
  • 数据库层:重要为基于个人知识库源数据搭建的向量数据库,在本项目中我们选择了 Chroma;
  • 应用层:为核心功能的最顶层封装,我们基于 LangChain 提供的检索问答链基类进行了进一步封装,从而支持差别模型切换以及便捷实现基于数据库的检索问答;
  • 服务层:分别实现了 Gradio 搭建 Demo 与 FastAPI 组建 API 两种方式来支持本项目的服务访问。
2. 代码布局

本项目的完备代码存放于 project 目录下,实现了项目的全部功能及封装,代码布局如下:
​ -project
​ -readme.md 项目说明
​ -llm LLM调用封装
​ -self_llm.py 自定义 LLM 基类
​ -wenxin_llm.py 自定义百度文心 LLM
​ -spark_llm.py 自定义讯飞星火 LLM
​ -zhipu_llm.py 自定义智谱 LLM
​ -call_llm.py 将各个 LLM 的原生接口封装在一起
​ -embedding embedding调用封装
​ -zhipu_embedding.py 自定义智谱embedding
​ -data 源数据路径
​ -database 数据库层封装
​ -create_db.py 处理源数据及初始化数据库封装
​ -chain 应用层封装
​ -qa_chain.py 封装检索问答链,返回一个检索问答链对象
​ -chat_qa_chian.py:封装对话检索链,返回一个对话检索链对象
​ -prompt_template.py 存放多个版本的 Template
​ -serve 服务层封装
​ -run_gradio.py 启动 Gradio 界面
​ -api.py 封装 FastAPI
​ -run_api.sh 启动 API
3. 项目逻辑


  • 用户:可以通过run_gradio大概run_api启动整个服务;
  • 服务层调用qa_chain.py或chat_qa_chain实例化对话检索链对象,实现全部核心功能;
  • 服务层和应用层都可以调用、切换prompt_template.py中的 prompt 模板来实现 prompt 的迭代;
  • 也可以直接调用call_llm中的get_completion函数来实现不使用数据库的 LLM;
  • 应用层调用已存在的数据库和 llm 中的自定义 LLM 来构建检索链;
  • 如果数据库不存在,应用层调用create_db.py创建数据库,该脚本可以使用 openai embedding 也可以使用embedding.py中的自定义 embedding。
4. 各层简析

4.1 LLM 层

LLM 层重要功能为:将国表里四种知名 LLM API(OpenAI-ChatGPT、百度文心、讯飞星火、智谱GLM)进行封装,潜伏差别 API 的调用差别,实如今同一个对象或函数中通过差别的 model 参数来使用差别泉源的 LLM。
在 LLM 层,我们起首构建了一个 Self_LLM 基类,基类定义了全部 API 的一些共同参数(如 API_Key,temperature 等);然后我们在该基类基础上继承实现了上述四种 LLM API 的自定义 LLM。同时,我们也将四种 LLM 的原生 API 封装在了统一的 get_completion 函数中。
在上一章,我们已详细介绍了每一种 LLM 的调用方式、封装方式,项目代码中的 LLM 层封装就是上一章教学的代码实践。
4.2 数据层

数据层重要包括:个人知识库的源数据(包括 pdf、txt、md 等)和 Embedding 对象。源数据需要经过 Embedding 处理才能进入向量数据库,我们在数据层自定义了智谱提供的 Embedding API 的封装,支持上层以统一方式调用智谱 Embedding 或 OpenAI Embedding。
在上一章,我们也已详细介绍了 Embdding API 的调用及封装方式。
4.3 数据库层

数据库层重要:存放了向量数据库文件。同时,我们在该层实现了源数据处理、创建向量数据库的方法。
我们将在第四章详细介绍向量数据库、源数据处理方法以及构建向量数据库的具体实现。
4.4 应用层

应用层:封装了整个项目的全部核心功能。我们基于 LangChain 提供的检索问答链,在 LLM 层、数据库层的基础上,实现了本项目检索问答链的封装。自定义的检索问答链除具备基本的检索问答功能外,也支持通过 model 参数来灵活切换使用的 LLM。我们实现了两个检索问答链,分别是有历史记录的 Chat_QA_Chain 和没有历史记录的 QA_Chain。
我们将在第五章教学 Prompt 的构造与检索问答链的构建细节。
4.5 服务层

服务层重要是:基于应用层的核心功能封装,实现了 Demo 的搭建或 API 的封装。在本项目中,我们分别实现了通过 Gradio 搭建前端界面与 FastAPI 进行封装,支持多样化的项目调用。
我们将在第六章详细介绍如何使用 Gradio 以及 FastAPI 来实现服务层的设计。

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和本领了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完备版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
一、全套AGI大模型学习路线

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

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

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

三、AI大模型经典PDF籍

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

四、AI大模型贸易化落地方案


作为普通人,入局大模型时代需要连续学习和实践,不停进步自己的技能和认知程度,同时也需要有责任感和伦理意识,为人工智能的康健发展贡献气力。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

宝塔山

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表