宝藏级-LLM-文档级别向量化问答技术总结

简单且详细的目录

  • 1.简单阶段描述
  • 2.阶段展开描述
    • 2.1.第一阶段技术:加载文档-读取文档-文本分割(Text splitter)
      • 2.1.1.加载读取文档:读取加载的文档内容,通常是将其转化为文本格式
        • 2.1.1.1.基于文档解析工具的方法
          • 2.1.1.1.1.pdf解析工具
          • 2.1.1.1.2.doc、docx解析工具
          • 2.1.1.1.3.图片型文档解析工具
        • 2.1.1.2.基于深度学习的文档解析方法
          • 2.1.1.2.1.版面分析:
      • 2.1.2.文档文本处理及单双栏区分
        • 2.1.2.1.文本分割(Text split 算法)
        • 2.1.2.2.基于文本分割模型的文档文本处理
        • 2.1.2.3.版面区分
    • 2.2.第二阶段技术:文本向量化(embedding)-存储到向量数据库
    • 2.3.第三阶段技术:问句向量化
    • 2.4.第四阶段技术:在文本向量中匹配出与问句向量最相似的top k个文本
        • 2.4.1. Milvus检索相似向量TopK的基本流程
    • 2.5.第五阶段技术:匹配出的文本作为上下文和问题一起添加到prompt中
    • 2.6.第六阶段技术:提交给LLM生成回答
  • 3.相关链接:

1.简单阶段描述

第一个阶段称为召回阶段,系统会根据用户的提问从文本库或知识库中检索相关的文本片段或知识点,利用传统的检索技术去召回可能的文档候选。
召回阶段的问答优化方案为:
1.优化 text_split 算法,使匹配出的结果作为上下文时能够提供更合理的推理/回答依据;
2.优化 embedding 模型,提升语义向量化的效果,使得语义匹配过程中能够匹配出最满足要求的文本段落作为上下文。
第二个阶段称之为阅读理解阶段,会利用大模型的阅读理解能力,从对应的候选文档里将答案抽取出来。

2.阶段展开描述

如下图所示,
在这里插入图片描述

2.1.第一阶段技术:加载文档-读取文档-文本分割(Text splitter)

2.1.1.加载读取文档:读取加载的文档内容,通常是将其转化为文本格式

2.1.1.1.基于文档解析工具的方法
2.1.1.1.1.pdf解析工具

可采用以下工具读取pdf文件数据,拟采用pdfplumber,可解析更全面pdf文件。
在这里插入图片描述

2.1.1.1.2.doc、docx解析工具

Python-dox:优点:能够解析docx格式文档;缺点:doc格式文档无法直接解析,需要进行转换为docx格式间接解析。

tika:Python Tika是一个基于Apache Tika的python库,可以解析各种格式的文档,如PDF、Microsoft Office、OpenOffice、XML、HTML、TXT等等。它提供了一种非常方便的方法来获取文档内容,包括元数据、正文、各种格式、图片、表格等等。(注意:需要依赖java环境)

2.1.1.1.3.图片型文档解析工具

Paddleocr,代码示例如下:

from paddleocr import PaddleOCR

ocr = PaddleOCR(use_angle_cls=True, lang=“ch”)
img_path = ‘example.jpg’
result = ocr.ocr(img_path,

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

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

相关文章

Android 蓝牙概述

一、什么是蓝牙 蓝牙是一种短距离(一般10m内)无线通信技术。蓝牙技术允许固定和移动设备在不需要电缆的情况下进行通信和数据传输。 “蓝牙”这名称来自10世纪的丹麦国王哈拉尔德(Harald Gormsson)的外号。出身海盗家庭的哈拉尔德统一了北欧四分五裂的国…

【js】input设置focus()不生效

实现功能:点击添加文章标签的时候,输入框聚焦。 页面上,input输入框默认不显示,是display:none; 点击添加按钮后,input输入框才显示。 在js里面直接获取元素进行设置聚焦不成功 。 ∵ focus方法比show方法先执行。j…

docker目录挂载失败:Check if the specified host path exists and is the expected type

docker目录挂载失败:Check if the specified host path exists and is the expected type docker目录挂载命令,其目的是为了达到修改linux上的文件同步到容器上,从而实现修改容器的配置文件。 在docker目录挂载或启动容器时报错&#xff0c…

spring源码初始学习基础-环境

环境:在这里插入代码片 allprojects {repositories {maven { url file:///D:/software/repository} // 本地仓库地址,如果没有依次向下寻找maven { url "https://maven.aliyun.com/repository/public" }mavenLocal()mavenCentral()}buildscri…

2年JAVA今日头条3轮面试经历

面头条的时候已经是十月底了。大半个月没有面试,之前准备的知识点比如http状态码之类的记忆性的东西,早就忘光了。 二面的时候问了一堆状态码,全都不记得了。面试官态度很好,跟我说,你现在不记得了,说明你…

【Vue】组件通信

文章目录 一、组件之间如何通信二、组件关系分类三、通信解决方案四、父子通信流程五、父向子通信代码示例六、子向父通信代码示例 组件通信,就是指组件与组件之间的数据传递 组件的数据是独立的,无法直接访问其他组件的数据。想使用其他组件的数据&…

利用人工智能-智慧合同管理系统规避企业合同管理风险

随着企业业务的不断扩展,合同管理在企业运营中扮演着越来越重要的角色。然而,传统的合同管理方法往往存在效率低下、风险控制不足等问题。为了解决这些问题,道本科技智慧合同管理系统不仅通过合同全生命周期的管理对企业合同管理从宏观上做了…

开发uniapp 小程序时遇到的问题

1、【微信开发者工具报错】routeDone with a webviewId XXX that is not the current page 解决方案: 在app.json 中添加 “lazyCodeLoading”: “requiredComponents” uniapp的话加到manifest.json下的mp-weixin 外部链接文章:解决方案文章1 解决方案文章2 &qu…

SEACells:元细胞分析

元细胞是从单细胞测序数据中衍生的细胞分组,代表高度精细的不同细胞状态。在这里,作者介绍了单细胞细胞状态聚集 (SEACells),这是一种用于识别元细胞的算法,它克服了单细胞数据的稀疏性,同时保留了传统细胞聚类所掩盖的…

【C++进阶】深入STL之vector:深入研究迭代器失效及拷贝问题

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C “ 登神长阶 ” 🤡往期回顾🤡:初步了解vector 🌹🌹期待您的关注 🌹🌹 ❀STL之vector 📒1. 迭…

Linux C语言:数组的定义和初始化

一、数组 1、定义 在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来,具有一定顺序关系的若干个变量的集合就是数组 。 2、特点 组成数组的各个变量称为数组的元素数组中各元素的数据类型要求相同元素在内存中是连…

pdf的压缩该怎么做?快速在线压缩pdf的方法

pdf文件是现在很常用的一种文件格式,有很多的文件内容都可以通过这种格式来展示内容,比如一些通知文件、设计图、个人信息等等,文件的内容越多就会越大,在使用的时候经常会受到一定的限制。那么有什么方法能够快速的将pdf文件变小…

目标检测-AnyLabeling标注格式转换成YOLO格式

Anylabel可以极大的增加数据的标注效率,但是其标注格式如何能转换成YOLO标注格式,具体内容如下所示。 关于AnyLabeling的其它详细介绍如下链接所示 https://blog.csdn.net/u011775793/article/details/134918861 Github链接 https://github.com/vietanhd…

巧用docker+jmeter快速实现分布式百万级并发

分享背景 碰到的问题: 一个JMeter实例可能无法产生足够的负载来对你的应用程序进行压力测试~ 解决办法: 1、修改jmeter配置文件里的内存堆 2、引入jmeter分布式压测 带来的问题: 如果我们要做分布式负载测试–我们需要1个…

企业数据挖掘建模平台极简建模流程

泰迪智能科技企业数据挖掘建模平台是企业自主研发,面向企业级用户的快速数据处理构建模型工具。平台底层算法基于R语言、Python、Spark等引擎,使用JAVA语言开发,采用 B/S 结构,用户无需下载客户端,可直接通过浏览器进…

GAT1399协议分析(7)--pycharm anaconde3 配置pyside2

一、安装pyside2 pip install pyside2 二、配置qtdesigner File->Settings->Tools->External tools 点击添加,添加QtDesigner, 注意designer.exe路径,需要在虚拟环境下。 三、添加pySide2 File->Settings->Tools->External tools 点击添加,添加PyS…

高效内容分发:海外短剧推广平台的流媒体传输技术挑战与解决

随着海外短剧市场的蓬勃发展,如何高效地将短剧内容分发给全球观众成为了推广平台必须面对的一大挑战。在这一过程中,流媒体传输技术起着至关重要的作用。然而,由于网络环境的复杂性和多样性,流媒体传输面临着带宽限制、延迟等诸多…

前端--导出

这边记录我们公司后端做的导出接口和前端是如何对接的 这边的技术栈是: 1: react 2: fetch 第一步:简单封装--导出界面 import { DrawerForm } from ant-design/pro-components; import { CloseOutlined } f…

iOS 之homebrew ruby cocoapods 安装

cocoapods安装需要ruby,更新ruby需要rvm,下载rvm需要gpg,下载gpg需要homebrew,所以安装顺序是homebrew->gpg->rvm->ruby-cocoapods Rvm 官网: RVM: Ruby Version Manager - RVM Ruby Version Manager - Docum…

Linux 35.5 + JetPack v5.1.3@ ego-planner编译安装

Linux 35.5 JetPack v5.1.3 ego-planner编译安装 1. 源由2. 编译&安装Step 1:依赖库安装Step 2:建立工程Step 3:编译工程Step 4:安装工程 3. 问题汇总3.1 planner/plan_env - OpenCV3.2 uav_simulator/local_sensing - CUDA优…