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

ops/2024/11/15 4:02:26/

文章目录

      • 1 LLM 大模型在工作中的实际应用以及局限性
      • 2 基于大模型向量数据库的企业级知识库架构剖析
      • 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.ppmy.cn/ops/133409.html

相关文章

Python的装饰器

一、概念 在Python中,装饰器本质是一个特殊的嵌套函数,它接收一个函数(被装饰的函数)做参数,并返回一个新的函数(装饰后的函数) 装饰器最大的作用:在不改变原有的函数(…

Vue.js动态组件使用

在 Vue.js 中&#xff0c;动态组件是一种功能强大的特性&#xff0c;它允许你在同一个挂载点根据条件动态地切换不同的组件。这通常通过 Vue 的 <component> 元素和 is 特性来实现。以下是如何在 Vue 3 中使用动态组件的详细指南&#xff1a; 基本用法 定义组件&#xf…

后端:Aop 面向切面编程

文章目录 1. Aop 初步学习面向切面编程&#xff0c;EnableAspectJAutoProxy2. AOP的核心概念3. 前置通知&#xff08;Before&#xff09;4. 后置通知&#xff08;After&#xff09;5. 返回通知&#xff08;AfterReturning&#xff09;6. 异常通知&#xff08;AfterThrowing&…

VMware+Ubuntu+finalshell连接

安装教程&#xff1a;博客链接 下载地址&#xff1a;VMwareubuntu finalshell官网下载&#xff1a;finalshelll

计算用户订购率梧桐数据库和oracle数据库sql分析

一、背景说明 移动运营商平台提供多种类型的产品权益&#xff0c;用户可以通过订购来使用。平台需要定期统计各个产品的用户订购情况&#xff0c;以便了解各个产品的受欢迎程度。这些统计数据将用于优化产品、提升用户体验和制定市场推广策略。 二、表结构说明 梧桐数据库建…

深入解析TOML、XML、YAML和JSON:优劣对比与场景应用

摘要&#xff1a;本文将介绍四种常见的配置文件和数据交换格式&#xff1a;TOML、XML、YAML和JSON&#xff0c;通过具体的使用例子分析它们的优缺点&#xff0c;并探讨在不同场景下的应用选择。 正文&#xff1a; 一、TOML 优点&#xff1a; 易于阅读和编写&#xff1a;TOML的…

【专题】2024年全球生物医药交易报告汇总PDF洞察(附原数据表)

原文链接&#xff1a;https://tecdat.cn/?p38191 在当今复杂多变的全球经济环境下&#xff0c;医药行业正面临着诸多挑战与机遇。2024 年&#xff0c;医药行业的发展态势备受关注。 一方面&#xff0c;全球生物医药交易活跃&#xff0c;2021 - 2023 年的交易中&#xff0c;已…

open3d

open3d open3d用于 3D 数据处理的现代库。 简介 Open3D 是一个开源库&#xff0c;支持快速开发处理 3D 数据的软件。Open3D 前端公开了一组精心挑选的 C 和 Python 数据结构和算法。后端经过高度优化&#xff0c;并设置为并行化。Open3D 是从零开始开发的&#xff0c;具有一更…