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.rhkb.cn/news/471055.html

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

相关文章

jmeter介绍、使用方法、性能测试、现参数化和数据驱动、分布式测试、压力测试、接口测试

目录 1.JMeter的组件介绍 2.JMeter介绍和使用方法 3.使用JMeter进行性能测试 4.JMeter如何实现参数化和数据驱动 5.使用JMeter进行分布式测试 6.使用JMeter完成压力测试 7.使用JMeter完成接口测试 下载并安装JMeter:从官方网站(https://jmeter.ap…

Zotero 6.0 安装包及安装教程

Zotero的界面友好,操作简单,对于科研小白来说,是一款非常实用的文献管理软件。它不仅可以帮助用户精确获取、整理、引用文献,而且在学术实践中不可或缺的一环。 安 装 步 骤 压缩包文件,鼠标右击解压得到安装包。 仅用…

Docker 篇-Docker 详细安装、了解和使用 Docker 核心功能(数据卷、自定义镜像 Dockerfile、网络)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 Docker 概述 1.1 Docker 主要组成部分 1.2 Docker 安装 2.0 Docker 常见命令 2.1 常见的命令介绍 2.2 常见的命令演示 3.0 数据卷 3.1 数据卷常见的命令 3.2 常见…

华为大变革?仓颉编程语言会代替ArkTS吗?

在华为鸿蒙生态系统中,编程语言的选择一直是开发者关注的焦点。近期,华为推出了自研的通用编程语言——仓颉编程语言,这引发了关于仓颉是否会取代ArkTS的讨论。本文将从多个角度分析这两种语言的特点、应用场景及未来趋势,探讨仓颉…

随时随地编码:香橙派Zero3上安装Code Server远程开发指南

文章目录 前言1. 添加镜像源2. 部署Code server3. 安装内网穿透工具4. 配置公网地址5. 配置固定公网地址 前言 本文主要介绍如何在刷了CasaOS轻NAS系统的香橙派Orange Pi Zero3中,使用Docker本地部署Code server,并结合cpolar内网穿透实现远程使用浏览器…

npm list @types/node 命令用于列出当前项目中 @types/node 包及其依赖关系

文章目录 作用示例常用选项示例命令注意事项 1、实战举例**解决方法**1. **锁定唯一的 types/node 版本**2. **清理依赖并重新安装**3. **设置 tsconfig.json 的 types**4. **验证 Promise 类型支持** **总结** npm list types/node 命令用于列出当前项目中 types/node 包及其…

第一个 Flutter 项目(1)共46节

前端开发工具vs code,安装Flutter sdk,如果你的下载速度比较慢,可以选择这个😄 flutter sdk 解压码:stwq 配置可以看这Flutter 新建工程一直等待 解决办法-CSDN博客 如果你是新的 Flutter 开发者,我们建…

比ChatGPT更酷的AI工具

相较于寻找比ChatGPT更酷的AI工具,这听起来似乎是个挑战,因为ChatGPT已经以它强大的综合性能在AI界大名鼎鼎。然而,每个工具都有其独特的优势,特别是在特定的应用场景下,其他AI工具可能会展现出与ChatGPT不同的魅力。接…

【自用】0-1背包问题与完全背包问题的Java实现

引言 背包问题是计算机科学领域的一个经典优化问题,分为多种类型,其中最常见的是0-1背包问题和完全背包问题。这两种问题的核心在于如何在有限的空间内最大化收益,但它们之间存在一些关键的区别:0-1背包问题允许每个物品只能选择…

今日 AI 简报 | 开源 RAG 文本分块库、AI代理自动化软件开发框架、多模态统一生成框架、在线图像背景移除等

❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦! 🥦 微信公众号&#xff…

UniApp 应用、页面与组件的生命周期详解

UniApp 应用、页面与组件的生命周期详解 在uni-app中包含了 应用生命周期、页面生命周期、和组件生命周期&#xff08; Vue.js的&#xff09;函数。 应用生命周期 应用生命周期仅可在App.vue中监听&#xff0c;在其它页面监听无效。 <script>export default {onLaunc…

1111111111待修改--大流量分析(三)-BUUCTF

总结摘要 题目来来源URL https://buuoj.cn/challenges#%E5%A4%A7%E6%B5%81%E9%87%8F%E5%88%86%E6%9E%90%EF%BC%88%E4%B8%89%EF%BC%89 答题过程 这道题是看大佬写着说查找phpinfo&#xff0c;我现在也不知道为什么能够一下子就定位到这里了 这里先按照phpinfo进行&#xff…

PHP多门店医疗服务系统小程序源码

&#x1f3e5; 多门店医疗服务系统&#xff1a;打造全方位健康守护网络 &#x1f3e5; &#x1f3f7;️ 引言&#xff1a;为何需要多门店医疗服务系统&#xff1f; 在这个快节奏的时代&#xff0c;健康成为了我们最宝贵的财富。然而&#xff0c;面对突如其来的疾病或日常的健…

Jetpack 之 Ink API初探

前言 近期看到谷歌官方推文有一篇关于Jetpack Ink API的文章&#xff0c;随即进行了了解和研究&#xff0c;该SDK主要就是低延时的手写绘制&#xff0c;比如通过手指或者触控笔在安卓设备上面进行笔记记录或者在安卓设备上面进行素描之类类似于纸张上面的操作。当然了可能现在…

SpringBoot参数注解

SpringBoot参数注解 常用参数注解 RequestParmPathVariableRequestHeaderCookieValueRequestbody 1.请求参数注解&#xff1a;RequestParm 用途&#xff1a;用于将方法参数绑定到URI查询参数或者表单参数。他可以帮助我们或者HTTP请求中的参数值并将其作为方法的参数进行处…

HarmonyOS的@State装饰器的底层实现

HarmonyOS的State装饰器的底层实现 序言准备工作实现State装饰器 序言 ArkTS是鸿蒙生态的应用开发语言。它在保持TypeScript&#xff08;简称TS&#xff09;基本语法风格的基础上&#xff0c;进一步通过规范强化静态检查和分析&#xff0c;使得在程序运行之前的开发期能检测更…

C语言 | Leetcode C语言题解之第557题反转字符串中的单词III

题目&#xff1a; 题解&#xff1a; char* reverseWords(char* s) {int length strlen(s);char* ret (char*)malloc(sizeof(char) * (length 1));ret[length] 0;int i 0;while (i < length) {int start i;while (i < length && s[i] ! ) {i;}for (int p …

响应式网页设计--html

一&#xff0c;HTML 文档的基本结构 一个典型的 HTML 文档包含了几个主要部分&#xff0c;基本结构如下(本文以下出现的所有代码都可以套入下面示例进行测试)&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8&q…

Linux git-bash配置

参考资料 命令提示符Windows下的Git Bash配置&#xff0c;提升你的终端操作体验WindowsTerminal添加git-bash 目录 一. git-bash配置1.1 解决中文乱码1.2 修改命令提示符 二. WindowsTerminal配置git-bash2.1 添加git-bash到WindowsTerminal2.2 解决删除时窗口闪烁问题 三. VS…

【HarmonyOS NEXT】一次开发多端部署(以轮播图、Tab栏、列表为例,配合栅格布局与媒体查询,进行 UI 的一多开发)

关键词&#xff1a;一多、响应式、媒体查询、栅格布局、断点、UI 随着设备形态的逐渐增多&#xff0c;应用界面适配也面临着很大问题&#xff0c;在以往的安卓应用开发过程中&#xff0c;往往需要重新开发一套适用于大屏展示的应用&#xff0c;耗时又耗力&#xff0c;而鸿蒙提供…