AI大模型开发架构设计(18)——基于大模型构建企业知识库案例实战

文章目录

      • 1 LLM 大模型在工作中的实际应用以及局限性
        • LLM 大模型工作中实际应用
        • 大模型2点局限性
      • 2 基于大模型和向量数据库的企业级知识库架构剖析
        • 向量数据库
        • 向量数据库选型
        • 知识库
        • 文档检索增强(Retrieval Augmented Generation)
        • 向量数据库应用技术总体架构
        • 向量数据库应用离线索引技术
        • 向量数据库应用在线检索技术
      • 3 LLM 大模型代码知识库架构设计与落地实践
        • 代码知识库技术架构选型
        • 代码知识库技术架构数据向量化流程
        • 代码知识库技术架构选型
        • 代码知识库技术方案设计
        • 代码知识库数据准备
        • 代码知识库数据向量化
        • 代码知识库知识召回和检索
        • 代码知识库效果展示
        • 代码知识库 Bad Case 分析
        • 代码知识库上下文丢失的问题
        • 代码知识库用户输入优化
        • 优化后代码知识库优化结果展示
        • 代码知识库构建几点总结

1 LLM 大模型在工作中的实际应用以及局限性

LLM 大模型工作中实际应用
  • 代码 Copilot
    • 写正则表达式
    • 编写不熟悉的算法
    • 编写注释
    • 业务代码重构
  • 代码 Review
    • Code Review
  • 测试 Copilot
    • 单元测试
    • Mock 数据输出
  • 运维 Copilot
    • 运维脚本
    • Linux 指令查询
大模型2点局限性
  • 数据时效性:2021年09月前的数据
  • 可信性:LLM 大模型的幻觉

如何进一步增加 LLM 大模型的能力?

2 基于大模型和向量数据库的企业级知识库架构剖析

用向量数据库/知识库改进大模型

向量数据库
  • 向量是非结构化数据在高维空间中的表征
  • Embedding Model 是将非结构化数据映射到高维空间的工具
  • 使用合适的 Embedding Model,向量的近似度代表语义的近似度

image.png

向量数据库选型
  • 国产:Milvus、Tencent Cloud VectorDB、Zilliz Cloud 等
  • 海外:Pinecone、Redis、FAISS、PgVector、Elasticsearch Cloud 等

image.png

知识库
  • 知识图谱
  • 全文检索
  • 知识库和向量数据库关系:大模型应用离不开向量检索

image.png

文档检索增强(Retrieval Augmented Generation)
  • 利用提前构建好的知识库,通过检索与 Query 相关的知识片段来增强大模型回答效果

image.png

向量数据库应用技术总体架构

image.png

image.png

向量数据库应用离线索引技术

离线索引更多优化

  • 针对文档特性(语言、内容)选择 Embedding 模型
  • 更有针对性的文档分段模型
  • 文档转问题,用问题召回

image.png

向量数据库应用在线检索技术

在线检索更多优化

  • 用户问题改写,使用改写的问题召回
  • 多路召回,结合全文检索的结果
  • 把问题编造成“假”文档,使用“假”文档召回

image.png

3 LLM 大模型代码知识库架构设计与落地实践

代码知识库技术架构选型
  • Fine-tuning(微调)VS Embedding(嵌入)

image.png

代码知识库技术架构数据向量化流程
  • 万物都先进行向量化

image.png

代码知识库技术架构选型
  • 代码知识库技术架构选型

image.png

代码知识库技术方案设计
  • 代码数据向量化
  • 代码数据召回
  • 查询返回结果

image.png

代码知识库数据准备
  • 数据描述:Mr_Ranedeer V2 描述数据的方式(DSL:领域描述语言)

image.png

  • 数据存储格式:
    • JSON
    • 类 DSL 的知识描述方式
    • 描述语义化

文档知识结构

image.png

  • 知识描述格式:(组件->使用场景->{描述&代码})
代码知识库数据向量化

核心设计原则

  • RecursiveCharacterTextSplitter 将按不同的字符递归地分割文档 。它会尝试将所有语义相关的内容尽可能保留在同一位置,使切片语义更完整。
  • ChunkSize 是切片可以包含的最大字符数,ChunkSize 设置为:1000
  • ChunkSizeOverlap 是两个相邻切片之间应重叠的字符数,ChunkSizeOverlap 设置为:0
代码知识库知识召回和检索

核心参数设置

  • 大模型温度参数设置为0
  • 系统提示词

image.png

代码知识库效果展示

问题:在 TDesign 实现一个表格并带上分页器的功能,列表的一些列信息如下:ip,domain, admin, startTime,endTime。并帮我 mock 5条数据。

image.png

问题:在 TDesign 中如何实现可过滤的Tree树组件(幻觉)

image.png

在 Tdesign 中如何实现图片预览

image.png

代码知识库 Bad Case 分析

image.png

代码知识库上下文丢失的问题
  • 问题:

image.png

  • 解决方案:

image.png

代码知识库用户输入优化

image.png

优化后代码知识库优化结果展示

问题:在 TDesign 中如何实现可过滤的Tree树组件

image.png

问题:在 Tdesign 中如何实现图片预览

image.png

代码知识库构建几点总结
  • 高质量的知识语料
  • 清晰且语义化的数据结构
  • 合理的 Embedding Model 选型以及参数 chunkSize, chunkOverlap 合理设置大小
  • 使用工程技术优化上下文问题
  • 优化用户输入,提升召回精度

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10款PDF合并工具的使用体验与推荐!!!

在如今的信息洪流中,我们几乎每个人都被淹没在大量的数字文档之中。无论是学生、教师还是职场人士,我们都需要高效地管理和处理这些文档。而PDF文件,凭借其跨平台的稳定性和通用性,成了最常用的文档格式之一。我们经常需要处理、编…

Redis做分布式锁

(一)为什么要有分布式锁以及本质 在一个分布式的系统中,会涉及到多个客户端访问同一个公共资源的问题,这时候我们就需要通过锁来做互斥控制,来避免类似于线程安全的问题 因为我们学过的sychronized只能对线程加锁&…

IntelliJ+SpringBoot项目实战(四)--快速上手数据库开发

对于新手学习SpringBoot开发,可能最急迫的事情就是尽快掌握数据库的开发。目前数据库开发主要流行使用Mybatis和Mybatis Plus,不过这2个框架对于新手而言需要一定的时间掌握,如果快速上手数据库开发,可以先按照本文介绍的方式使用JdbcTemplat…

12、Linux系统的网络基本设置

查看网络接口信息ifconfig ip addr/ip a #简单查看网络接口信息 ifconfig #表示只显示当前活跃的设备接口信息 ifconfig -a #查看当前主机所有的(all)网络设备,包括未运行的设备。 如我们查看本机网卡ens33的…

JDK1.8升级JDK不生效

最近因为项目原因,需要将jdk1.8升级到JDK11.升级发生了一个纠结的问题,就是cmd不生效。在此记录! 项目中指定jdk 如果在android studio项目,可以单独指定该项目的jdk,而不用全局升级,可以做如下配置&#…

八 Bean的生命周期

八、Bean的生命周期 8.1 什么是Bean的生命周期 Spring其实就是一个管理Bean对象的工厂。它负责对象的创建,对象的销毁等。 所谓的生命周期就是:对象从创建开始到最终销毁的整个过程。 什么时候创建Bean对象? 创建Bean对象的前后会调用什…

【Android】webview常用方法和使用

文章目录 前言一、常见用法二、基础属性webView的常用方法WebViewClient的常用方法WebChromeClient的常用方法WebSettings的相关方法 三、加载流程和事件回调四、webview和JS之间的互相调用总结 五、参考链接 前言 最近项目又用到了webview,在回顾复习一次webview相…

OpenGL ES 共享上下文实现多线程渲染

OpenGL ES 共享上下文时,可以共享哪些资源? 共享上下文实现多线程渲染 EGL 概念回顾 EGL 是 OpenGL ES 和本地窗口系统(Native Window System)之间的通信接口,它的主要作用: 与设备的原生窗口系统通信; 查询绘图表面的可用类型和配置; 创建绘图表面; 在OpenGL ES 和…

09C++结构体

/*结构体属于用户自定义的数据类型&#xff0c; 允许用户存储不同的数据类型, 语法:struct 结构体名{结构体成员列表} ;*/ //struct 结构体名 变量名 #include <iostream> #include <string> using namespace std; struct student { string name; int age;int s…

python第七次作业

01.设计一个函数&#xff0c;可以传入一个或多个单词的字符串&#xff0c;并返回该字符串&#xff0c;但所有五个或更多字母的单词都前后颠倒 a input("输入:") print(a) #将一句话以空格为分界拆分为单个单词 b a.split(" ") ls_1 [] ls_2 []for i i…

C++开发基础之使用librabbitmq库实现RabbitMQ消息队列通信

1. 前言 RabbitMQ是一个流行的开源消息队列系统&#xff0c;支持多种消息协议&#xff0c;广泛用于构建分布式系统和微服务架构。可以在不同应用程序之间实现异步消息传递。在本文中&#xff0c;我们将熟悉如何使用C与RabbitMQ进行消息通信。 2. 准备工作 在 Windows 平台上…

AI写作(四)预训练语言模型:开启 AI 写作新时代(4/10)

一、预训练语言模型概述 ​ 预训练语言模型在自然语言处理领域占据着至关重要的地位。它以其卓越的语言理解和生成能力&#xff0c;成为众多自然语言处理任务的关键工具。 预训练语言模型的发展历程丰富而曲折。从早期的神经网络语言模型开始&#xff0c;逐渐发展到如今的大规…

图像处理实验一(Matlab Exercises and Image Fundamentals)

一、基本概念介绍 MATLAB是一种广泛使用的高性能语言&#xff0c;特别适用于数学计算、算法开发、数据分析和可视化。在图像处理领域&#xff0c;MATLAB提供了强大的工具和函数&#xff0c;使得图像的读取、处理和分析变得相对简单。通过MATLAB&#xff0c;用户可以实现从基本的…

番外-JDBC:2024年最新java连接数据库教程

前言 JavaScript的内容晚点更新&#xff0c;今天继续更新一点番外&#xff0c;今天更新的是jdbc&#xff0c;如何用java连接数据库 1.导包 要使java能够连接数据库我们需要导入一个包&#xff0c;请按照以下操作安装并导包 1.进入官网 MySQL 以上为官网链接进去后点击下载…

Ubuntu22.04安装DataEase

看到DataEase的驾驶舱&#xff0c;感觉比PowerBI要好用一点&#xff0c;于是搭建起来玩玩。Dataease推荐的操作系统是Ubuntu22.04/Centos 7。 下载了Ubuntu22.04和DataEase 最新版本的离线安装包 一.安装ubuntu22.04 在安装的时候&#xff0c;没有顺手设置IP地址信息&#xff…

vueRouter路由切换时实现页面子元素动画效果, 左右两侧滑入滑出效果

说明 vue路由切换时&#xff0c;当前页面左侧和右侧容器分别从两侧滑出&#xff0c;新页面左右分别从两侧滑入 效果展示 路由切换-滑入滑出效果 难点和踩坑 现路由和新路由始终存在一个页面根容器&#xff0c;通过<transition>组件&#xff0c;效果只能对页面根容器有效…

acwing算法基础03-递归,枚举

cWing 93. 递归实现组合型枚举 1.排序 考虑顺序 2. 组合 不考虑顺序 参数 -核心 递归 模板 1.指数型 选/不选 2. 排列 -考虑顺序 &#xff08;判重数组 不知道哪个数有有没有用过&#xff09;3.组合 不考虑顺序 数据范围 从n个数里选m个数 组合数中间点 取范围 #includ…

ASP.NET 部署到IIS,访问其它服务器的共享文件 密码设定

asp.net 修改上面的 IIS需要在 配置文件 添加如下内容 》》》web.config <system.web><!--<identity impersonate"true"/>--><identity impersonate"true" userName"您的账号" password"您的密码" /><co…

多角度审视推荐系统

参考自《深度学习推荐系统》——王喆&#xff0c;用于学习和记录 介绍 推荐工程师需要从不同的维度审视推荐系统&#xff0c;不仅抓住问题的核心&#xff0c;更要从整体上思考推荐问题。 具体包括以下内容&#xff1a; &#xff08;1&#xff09;推荐系统如何选取和处理特征…

从0开始机器学习--Day23--支持向量机

经过前面的学习&#xff0c;我们已经知道在解决问题时&#xff0c;重要的不仅仅是要在算法A或算法B中选择更优的&#xff0c;而是考虑怎么选择用于学习算法的特征和正则化参数&#xff0c;相比神经网络和逻辑回归&#xff0c;支持向量机在这两个方面做得更好。 优化目标(Optimi…