基于大模型构建本地知识库

news2024/11/16 13:41:52

基于大模型构建本地知识库

    • 图文概述
    • 一、知识库构建
      • 1.文本加载和读取
      • 2.文本分割
      • 3.文本向量化
        • 英文排行版
        • 中文SOTA
    • 二、向量搜索
      • 1.向量存储
      • 2.用户问题向量化
      • 3.知识库中搜索和问题最相似的topK个向量
    • 三、大模型理解
    • 四、问题

图文概述

请添加图片描述

一、知识库构建

1.文本加载和读取

支持的格式:

  • pdf
  • txt
  • md
  • docx

2.文本分割

通常,将大型文本文档拆分为较小的块,以便更好地使用语言模型。文本拆分器负责将文档拆分为较小的文档。理想情况下,您希望将语义相关的文本片段放在一起。“语义相关”的含义可能取决于文本的类型。

  • 根据规则
根据中文文章的常见终止符号,利用规则进行文本分割。
如:单字符断句符、中英文省略号、双引号等
  • 根据语义
将文本拆分为语义有意义的小块(通常是句子)。
开始将这些小块组合成一个较大的块,直到达到一定的大小(由某个函数测量)。
达到该大小后,将该块设置为自己的文本段,然后开始创建一个具有一些重叠的新文本块。

目前来说,由于语义的不确定性,用规则会取得更好的效果,文本分句长度为800。

3.文本向量化

语义检索的重要前提是Sentence Embeddings。可惜目前看到的绝大部分材料都是使用OpenAIEmbeddings。OpenAIEmbeddings 调用的mode_name=“text-embedding-ada-002” 排在第6位

英文排行版

MTEB 排行榜 - MTEB 的拥抱面孔空间 (huggingface.co)

在这里插入图片描述

中文SOTA

这是一个CoSENT(余弦句子)模型:shibing624/text2vec-base-Chinese。

它将句子映射到 768 维密集向量空间,可用于任务 如句子嵌入、文本匹配或语义搜索

分别拿 text2vec-base-chineseinstructor-largeOpenAIEmbedding Run这10个中文case,instructor-large 表现最差,text2vec-base-chinese 表现最好:

在这里插入图片描述

对于中文模型在政府语料问题的匹配,在这里测试了ernie-base模型和text2vec-large-chinese模型。每个问题分别在top5中命中了源文档几次。

中文模型在政府语料问题的匹配top5ernie-basetext2vec-large-chinese
关于转发国家发展改革委物流业降本增效专项行动方案2/54/5
农业综合开发扶持农业优势特色产业促进农业产业化发展的指导意见2/53/5
北京市暂时调整有关行政审批和准入特别管理措施的决定3/55/5
推进交通运输行业数据资源开放共享的实施意见1/55/5
关于改进和规范公安派出所出具证明工作的意见1/54/5
谁开展的原油期货保税交割业务暂免征收增值税4/53/5
香港联交所上市股票的所得税问题3/55/5
图书资料费、数据采集费、会议费/差旅费/国际合作与交流费、设备费、专家咨询费、劳务费、印刷费/宣传费是哪些3/53/5
国家知识产权示范园区的申报条件5/55/5

二、向量搜索

1.向量存储

Faiss是Facebook开源的一个向量检索库,用于大规模向量集合的索引和搜索。主要功能包括:

  1. 支持多种索引结构: IVF, IVFFlat, HNSW, etc。这些索引结构可以实现高精度和高召回的向量搜索。
  2. 支持多种度量方式:内积,欧氏距离,cosine 相似度等。可选择合适的度量方式对向量集合建立索引。
  3. 快速的索引构建与搜索:Faiss使用GPU加速,可以实现亿量级向量的索引构建和搜索。
  4. 降维与聚类:Faiss提供PCA,IVFFlat等算法进行向量降维,并支持Kmeans算法进行向量聚类。
  5. 高级特性:Faiss支持在线学习,异构向量检索,索引压缩等高级特性。

Faiss的典型应用有:

  1. 图像检索:在大规模图片数据库中找到与输入图片最相似的图片。

  2. 文本匹配:快速找到与输入文本最相近的文本内容。

  3. 推荐系统:根据用户兴趣对大量商品进行快速检索和推荐。

  4. 声纹识别:在海量语音数据中实现语音识别和检索。

2.用户问题向量化

Embedding 模型进行向量化(text2vec-large-chinese)

3.知识库中搜索和问题最相似的topK个向量

# chunk_conent   是否启用上下文关联
# score_threshold    搜索匹配score阈值
# vector_search_top_k   搜索知识库内容条数,默认搜索5条结果
# chunk_sizes    匹配单段内容的连接上下文长度
  • 向量搜索索引中查找与embedding最相似的k个结果,得分scores和索引indices。

  • 如果得分scores高于阈值score_threshold,跳过该结果。

  • 指定了chunk_conent,则在结果索引的附近扩展查找,将相近的文档片段拼接到doc,但拼接后长度不超过chunk_size。只有相同的文档才会被拼接。

在这里插入图片描述在这里插入图片描述

三、大模型理解

将问题和topK个向量作为上下文输入给大模型,让大模型根据已有的提示信息进行总结归纳回答。

基于上下文的prompt模版:根据上述已知信息,简洁和专业的来回答用户的问题。如果无法从中得到答案,请说 “根据已知信息无法回答该问题” 或 “没有提供足够的相关信息”,不允许在答案中添加编造成分,答案请使用中文。 问题是:{question}

示例:

在这里插入图片描述

在这里插入图片描述

四、问题

  1. 目前该项目不够稳定,会出现奔溃的问题。

  2. 多轮对话后,显存溢出造成奔溃。

  3. 是否在prompt模版中加入判断,若所问问题非政务类型,转由大模型回答。

  4. 大模型可能无法准确地理解政务领域的专业知识和术语,在小部分回答上会存在偏差。

  5. 向量搜索时,可能会匹配到低质量文本,导致回答错误。(低质量:匹配到的文本具有一定相关性,但是和用户的问题意图有所偏差)

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

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

相关文章

Arm NN 成功适配 openEuler Embedded,提供高性能神经网络推理能力

近期,RISC-V SIG 完成了 Arm NN 在 openEuler Embedded 系统的适配,于 2023 年 1 月合入系统构建工程代码库,经测试验证可用,实现了神经网络加速库在 openEuler Embedded 嵌入式系统上的加速和优化。 系统构建工程下载地址&#x…

AUTOSAR通信篇-CAN网络通信(三:PduR)

文章目录 PduR简介I-PDU缓存缓存区类型缓存策略缓存共享 I-PDU接收接收来自通信接口的I-PDU接收来自传输协议的I-PDU I-PDU发送通信接口型发送传输协议型发送多播传输处理未知长度I-PDU I-PDU网关通信接口网关缓存立即网关 传输协议直接网关On-the-fly网关 发送取消接收取消零损…

海睿思分享 | 主数据如何赋能企业运营管理

在全球范围内,企业正在越来越多地依赖数据进行决策和运营。然而,由于数据量的爆炸式增长以及数据来源的多样化,管理这些数据以获取有效的洞见变得越来越困难。 主数据管理(MDM)作为一种方法和技术,旨在帮助…

XSS跨站脚本安全漏洞防护

文章目录 1 跨站脚本1.1 存储型XSS1.2 反射型XSS 2 、案例2.1 通过正则表达式替换跨站脚本2.2 构建请求的代理类,在构造方法中对请求中的内容进行分析2.3 构建响应的代理类2.4 通过Filter过滤掉请求和响应中的跨站脚本 3 测试3.1 在接口的body参数中添加一个脚本3.2…

半导体(TSS)放电管的两大选购注意事项及选型小策略

固体放电管,是以半导体工艺制作而成的,因此我们也称为半导体(TSS)放电管,它常在电路中并联使用,具备伏安特性。 TSS放电管在电路中类似开关,在正常工作时不动作,但一般被保护电路受到…

华为OD机试题【支持优先级的队列】【2023 B卷 100分】

文章目录 🎯 前言🎯 题目描述🎯 解题思路📙 Python代码实现📗 Java代码实现📘 C语言代码实现 🎯 前言 🏆 《华为机试真题》专栏含2023年牛客网面经、华为面经试题、华为OD机试真题最…

悲观锁、乐观锁、自旋锁

悲观锁、乐观锁、自旋锁 (1)乐观锁 乐观锁是一种乐观的思想,即认为读多写少,遇到并发的可能性低,每次拿数据时都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有…

亚马逊云科技出海日,让数字经济出海扩展到更多行业和领域

数字化浪潮之下,中国企业的全球化步伐明显提速。从“借帆出海”到“生而全球化”,中国企业实现了从传统制造业“中国产品”出口,向创新“中国技术”和先导“中国品牌”的逐步升级。 作为全球云计算的开创者与引领者,亚马逊云科技…

斩获阿里offer,这份258页面试宝典也太顶了....

测试三年有余,很多新学到的技术不能再项目中得到实践,同时薪资的涨幅很低,于是萌生了跳槽大厂的想法 但大厂不是那么容易进的,前面惨败字节,为此我辛苦准备了两个月,又从小公司开始面试了半个月有余&#…

tomcat的部署

文章目录 一、什么是tomcat二、Tomcat 功能组件结构三、Tomcat 请求过程四、Tomcat的服务部署五、配置虚拟主机六、Tomcat多实例部署 一、什么是tomcat Tomcat 是 Java 语言开发的,Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,是 Apache 软件…

从0开始搭建vue3+vite+ts+pinia项目

目录 项目搭建选项 项目搭建步骤 本地开发环境 Vite脚手架构建项目 关联Git仓库 开发工具 安装pinia 安装Sass 安装Vant-UI 安装postcss-pxtorem(移动端项目) 安装axios 本地调试 环境变量 本地代理 全局UI组件 路由中间件 项目部署 n…

VTK-vtkInformation

前言:本博文主要介绍vtk中的接口vtkInformation的应用,以及vtkInformation的衍生用法,希望对各位小伙伴有所帮助,谢谢! 目录 vtkInformation介绍 描述: Information中接受的类型: 方法 vtk…

数据结构与算法系列之堆排序

💗 💗 博客:小怡同学 💗 💗 个人简介:编程小萌新 💗 💗 如果博客对大家有用的话,请点赞关注再收藏 🌞 堆的概念和结构 如果有一个关键码的集合K { , , &…

关于万物悦享推广案例

关于万物悦享推广案例 项目介绍 万物悦享是一家改变传统消费模式的公司,致力于让消费者在衣食住行都能把消费变成开心享受的事情。该公司通过消费增值、绿色积分、12倍通证强制出局、卷轴和撸实现这一目标。在通证经济下,消费者可以通过获得通证再赚回…

容器技术 — Cgroups 与 Namespaces 支撑实现的操作系统虚拟化

目录 文章目录 目录操作系统虚拟化(容器技术)的发展历程ChrootCgroupsCgroup SubsystemsCgroup FilesystemCgroup HierarchyCgroups 的操作规则Cgroups 的代码实现 NamespacesUTS namespacePID namespaceIPC namespaceMount namespaceNetwork namespaceU…

Blender2023超好用的插件合集,还不抓紧用起来

Blender对于艺术家或电影制作人来说不再是一个陌生的名字。Blender 拥有一套全面的工具和一个用户友好的界面,使初学者和专业人士都可以使用它。全球开发人员和用户社区不断更新新功能和改进。此外,有这么多可用的工具和插件,Blender可以定制…

项目经理高效时间管理6大原则及技巧

1、 ( 10 2 ) * 5法则 项目经理以10分钟为一个周期,每个周期休息2分钟,这样1小时重复5次,就可以保障我们目标明确但精神和身体上的精力不会透支。 10分钟周期内,需要全心全意做一件事,进入全身心投入工作状态&#xf…

Kerberos从入门到精通以及案例实操系列(二)

5、安全集群使用说明 5.1、用户要求 具体要求以下使用说明均基于普通用户,安全集群对用户有以下要求: 集群中的每个节点都需要创建该用户该用户需要属于hadoop用户组需要创建该用户对应的Kerberos主体 实操,此处以atguigu用户为例&#x…

Spring Boot 系统初始化器详解

Spring Boot 3.x系列文章 Spring Boot 2.7.8 中文参考指南(一)Spring Boot 2.7.8 中文参考指南(二)-WebSpring Boot 源码阅读初始化环境搭建Spring Boot 框架整体启动流程详解Spring Boot 系统初始化器详解 自定义系统初始化器 Spring Boot 有多种加载自定义初始化器的方法&am…

账号长久不用、归属不明......企业要如何管理这些失控的账号?

据报道,谷歌将于今年底开始删除2年未使用个谷歌个人账号。理由是,谷歌发现,如果一个账户在一定时间内未被使用,那么该账户被入侵的概率更大。 这些长时间未使用的账号使用的密码一般都是比较老的或重用的密码,关联密码…