【山东大学项目实训】第一周进度汇报

​在本次项目实训中,我主要负责项目路线规划和语言模型接入,数据集整理和prompt工程相关工作。

本周我们小组经过讨论初步确定了现阶段的分工和任务,开始着手准备工作。我主要学习并尝试了大模型开发的步骤和流程,了解了环境配置、项目搭建。

一、大模型开发相关知识的了解和学习

我们了解到,开发大模型相关应用,其技术核心点虽然在大语言模型上,但一般通过调用 API 或开源模型来实现核心的理解与生成,通过 Prompt Enginnering 来实现大语言模型的控制,因此,虽然大模型是深度学习领域的集大成之作,大模型开发却更多是一个工程问题

在大模型开发中,我们一般不会去大幅度改动模型,而是将大模型作为一个调用工具,通过 Prompt Engineering、数据工程、业务逻辑分解等手段来充分发挥大模型能力,适配应用任务,而不会将精力聚焦在优化模型本身上。

同时,以调用、发挥大模型为核心的大模型开发与传统的 AI 开发在整体思路上有着较大的不同。大语言模型的两个核心能力:指令遵循文本生成提供了复杂业务逻辑的简单平替方案。

  • 传统的 AI 开发:首先需要将非常复杂的业务逻辑依次拆解,对于每一个子业务构造训练数据与验证数据,对于每一个子业务训练优化模型,最后形成完整的模型链路来解决整个业务逻辑。
  • 大模型开发:用 Prompt Engineering 来替代子模型的训练调优,通过 Prompt 链路组合来实现业务逻辑,用一个通用大模型 + 若干业务 Prompt 来解决任务,从而将传统的模型训练调优转变成了更简单、轻松、低成本的 Prompt 设计调优。

同时,在评估思路上,大模型开发与传统 AI 开发也有质的差异。

  • 传统 AI 开发:需要首先构造训练集、测试集、验证集,通过在训练集上训练模型、在测试集上调优模型、在验证集上最终验证模型效果来实现性能的评估。
  • 大模型开发:流程更为灵活和敏捷。从实际业务需求出发构造小批量验证集,设计合理 Prompt 来满足验证集效果。然后,将不断从业务逻辑中收集当下 Prompt 的 Bad Case,并将 Bad Case 加入到验证集中,针对性优化 Prompt,最后实现较好的泛化效果。

二、LLM开发流程和规划

项目规划与需求分析

经过学习和分析,我们将大模型开发分解为以下几个流程,也确定了接下来的工作阶段。

确定目标:

在进行开发前,我们首先需要确定开发的目标,即要开发一款面向金融工作者和投资者以及金融爱好者和初学者的智能金融问答分析大模型系统。

核心功能

1、 上传文档、创建知识库;

2、 选择知识库,检索用户提问的相关片段;

3、 提供专业的金融解读和分析,获取大模型回答;

4、 历史对话记录;

5、web UI

确定技术架构和工具
  1. 框架:LangChain
  2. Embedding模型:智谱
  3. 数据库:Chroma
  4. 大模型:GLM 

数据准备与向量知识库构建

本项目实现原理如下:

加载本地文档 -> 读取文本 -> 文本分割 -> 文本向量化 -> question 向量化 -> 在文本向量中匹配出与问句向量最相似的 top k 个 -> 匹配出的文本作为上下文和问题一起添加到 Prompt 中 -> 提交给 LLM 生成回答。

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

用户常用文档格式有 PDF、TXT、MD 等,首先,我们可以使用 LangChain 的文档加载器模块方便地加载用户提供的文档,或者使用一些成熟的 Python 包进行读取。

由于目前大模型使用 token 的限制,我们需要对读取的文本进行切分,将较长的文本切分为较小的文本,这时一段文本就是一个单位的知识。

2. 将文档词向量化

使用文本嵌入(Embeddings)技术对分割后的文档进行向量化,使语义相似的文本片段具有接近的向量表示。然后,存入向量数据库,完成 索引(index) 的创建。

利用向量数据库对各文档片段进行索引,可以实现快速检索。

3. 将向量化后的文档导入 Chroma 知识库,建立知识库索引

Langchain 集成了超过 30 个不同的向量数据库。Chroma 数据库轻量级且数据存储在内存中,这使得它非常容易启动和开始使用。

将用户知识库内容经过 Embedding 存入向量数据库,然后用户每一次提问也会经过 Embedding,利用向量相关性算法(例如余弦算法)找到最匹配的几个知识库片段,将这些知识库片段作为上下文,与用户问题一起作为 Prompt 提交给 LLM 回答。

大模型集成与 API 连接

  1. 集成 GPT、星火、文心、GLM 等大模型,配置 API 连接。
  2. 编写代码,实现与大模型 API 的交互,以便获取问题回答。

核心功能实现

  1. 构建 Prompt Engineering,实现大模型回答功能,根据用户提问和知识库内容生成回答。
  2. 实现流式回复,允许用户进行多轮对话。
  3. 添加历史对话记录功能,保存用户与助手的交互历史。

核心功能迭代优化

  1. 进行验证评估,收集 Bad Case。
  2. 根据 Bad Case 迭代优化核心功能实现。

前端与用户交互界面开发

  1. 使用 Vue 搭建前端界面。
  2. 实现用户上传文档、创建知识库的功能。
  3. 设计用户界面,包括问题输入、知识库选择、历史记录展示等。

部署测试与上线

  1. 部署问答助手到服务器或云平台,确保可在互联网上访问。
  2. 进行生产环境测试,确保系统稳定。
  3. 上线并向用户发布。

三、环境配置

  1. 新建虚拟环境 conda create -n llm-universe python=3.10
  2. 激活虚拟环境 conda activate llm-universe
  3. 克隆当前仓库 git clone git@github.com:datawhalechina/llm-universe.git
  4. 安装所需的包 pip install -r requirements.txt 通过清华源加速安装 pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

VSCode 配置 Python 环境

  1. 安装 Python 插件

    在插件市场中搜索Python,找到Python插件并安装。 这时当我们执行 Python 代码时,就会自动识别我们的 Python 环境,并提供代码补全等功能,方便进行开发。

  2. 安装 Jupyter 插件 ,使用 Jupyter Notebook 进行开发,所以需要安装 Jupyter 插件。 在插件市场中搜索Jupyter,找到Jupyter插件并安装。 

3.为 Jupyter Notebook 配置 Python 环境

之后我们就可以在 Jupyter Notebook 中使用Python 环境进行开发了。

  1. 打开一个 Jupyter Notebook
  2. 点击右上角的 选择 Python 解释器,进行当前 Jupyter Notebook 的 Python 环境的选择。 
  3. 点击选择 Python 后进入环境列表,并选择配置好的环境 llm-universe。 
  • 25
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值