RAG 在企业应用中落地的难点与创新分享
在2024稀土开发者大会-AI Agent与应用创新分会上,我有幸分享了我们团队在企业应用中实施RAG(检索增强生成)的难点与创新。希望通过这篇文章,与大家探讨我们在实践中遇到的问题和解决方案,为从事相关工作的朋友提供一些新的思路。
一、企业应用中实施的四大难点
1. 文件解析的挑战
在企业环境中,文件解析是实施RAG的第一步,也是关键的一步。如果文件解析做不好,后续的检索、向量化等工作都无从谈起。
老旧文件格式的解析:我们发现,在许多国企和特定行业中,仍然存在大量的老旧文件格式,如.doc
(非.docx
)等。市面上的许多解析工具并不支持这些格式,这需要我们投入额外的精力进行支持和兼容。
PDF表格解析:在金融、标准化工业等领域,PDF中的表格解析是一个刚需。复杂的表格结构、合并单元格、跨行跨列等情况增加了解析的难度。为此,我们基于Apache PDFBox进行了二次开发,成功实现了对复杂表格的准确解析。
OCR的触发时机:对于包含图文混排的文件,何时启动OCR是一个需要深思的问题。过早或过晚都会影响解析效率和准确性。
布局识别的复杂性:对于一些特殊的文件,如机票、票据等,需要进行布局识别,以理解不同区域所代表的信息。这超出了传统OCR的能力范围,需要更高级的技术支持。
2. 结构化数据的融合
在实际企业应用中,很少有场景是纯粹的非结构化数据处理。通常需要与企业现有的结构化数据库进行融合。
与关系型数据库的融合:大模型在处理结构化数据时,存在一定的局限性,尤其是在处理复杂逻辑和高精度查询时。为此,我们保留了原有的结构化数据结构,通过提取元数据和资源描述,结合Function Call,实现了自然语言与结构化数据的融合。
Text-to-SQL的现状与挑战:尽管Text-to-SQL被视为未来的解决方案,但目前在处理复杂逻辑和企业级应用时,仍存在许多挑战,需要更多的技术突破。
3. 索引建立过程中的处理
在资源有限的情况下,我们需要在有限的硬件条件下实现高效的索引和检索。
基于元数据的检索范围缩小:通过在文件上传时提取元数据(如文件名、属性、标题等),并在查询时使用命名实体识别(NER)模型,我们能够缩小检索范围,提高检索准确性。
使用NER模型提高准确性:NER模型能够帮助我们理解用户的查询意图,进而在大量的文档中快速定位相关内容。
4. 使用Rerank提升检索结果
为了提高检索结果的准确性,我们在检索后增加了Rerank(重排序)步骤。
使用密度函数优化得分:通过计算检索得分的密度函数,我们能够自动截断低相关性的结果,只保留最相关的文档。
在问答环节的应用:在问答系统中,我们使用Rerank确保返回的原文与大模型生成的答案高度匹配,避免了答案与原文不一致的问题。
二、应用中的创新案例
1. 金融研报的应用创新
在金融领域,研报的撰写需要耗费大量时间和精力。我们开发了一款工具,允许用户将数百份文件上传至系统,然后通过自然语言提问,如“这家公司最近3年的复合增长率是多少?”,系统会给出准确的答案并提供原文参考。
这大大缩短了研报撰写的时间,从原来的三周缩短到几个小时。同时,系统还能生成初步的研报草稿,供分析师进一步润色和完善。
2. 零售领域的创新应用
Touch-V哆啦A梦助力导购:在零售业,尤其是拥有大量SKU的商店,导购人员很难快速匹配客户的复杂需求。通过我们的系统,导购只需输入客户的需求,系统就能从数万个SKU中筛选出最合适的产品。
装修设计中的即时反馈:在装修设计领域,客户的需求变化频繁,传统的沟通方式效率低下。通过我们的应用,设计师可以在平板电脑上实时与客户互动,根据客户的反馈即时调整设计方案,显著提高了效率。
3. 规则预审的应用创新
合同预审的自动化:大型企业在合同审查上耗费大量人力。我们的系统能够根据预设的规则,对合同进行自动审查,标记出需要注意的条款,减少了法务人员的工作量,加快了合同审批流程。
项目评审中的规则应用:在项目评审中,我们的系统能够根据不同的评审规则,对项目文件进行自动化的审查和评估,提高了评审的客观性和效率。
三、总结与思考
在大模型应用落地的实践中,我们深刻体会到,要想做好AI在企业中的应用,需要具备以下三个特点:
-
功能小:专注于具体的、可量化的功能,解决实际问题,而非追求大而全。
-
质量高:确保应用的准确性和可靠性,在现有技术条件下,力求做到最好。
-
价值大:专注于为客户创造实际价值,解决他们最关心的问题。
在与客户合作的过程中,我们也认识到,沉淀大量的应用场景是企业服务的核心竞争力。这不仅能够帮助我们更好地理解客户需求,也使我们在技术迭代和模型升级中,始终保持领先。
展望未来,随着大模型技术的不断发展,我们期待能有更多的技术突破,如多模态识别、更加精准的Text-to-SQL等。这些进步将为企业应用带来更大的可能性,也为我们解决更多的实际问题提供了技术支持。
相关文章:

RAG 在企业应用中落地的难点与创新分享
在2024稀土开发者大会-AI Agent与应用创新分会上,我有幸分享了我们团队在企业应用中实施RAG(检索增强生成)的难点与创新。希望通过这篇文章,与大家探讨我们在实践中遇到的问题和解决方案,为从事相关工作的朋友提供一些…...

苹果CMS海洋CMS那个更容易被百度收录?苹果CMS站群
SEO优化和搜索引擎的友好性常常是网站管理员关注的重点。苹果CMS(maccmscn)和海洋CMS都是国内常见的CMS平台,但在搜索引擎优化(SEO)和百度收录方面,苹果CMS凭借其优秀的插件生态系统,特别是泛目…...
高教社杯数模竞赛特辑论文篇-2013年B题:碎纸复原模型与算法
目录 摘要 一、问题重述 二、问题分析 三、符号说明与模型假设 3.1 符号说明 3.2 模型假设 3.3 假设说明 四、模型的建立与求解 4.1 一维碎纸复原模型 4.1.1 图像的预处理 4.1.2 碎纸特征的提取 4.1.3 基于文字特征的识别序列 4.1.4 碎纸距离的定义 4.1.5 复原 TSP 问题 4.1.6 …...

多线程面试题-28问
1、查询Java有哪些线程? public class MultiThread {public static void main(String[] args) {// 获取 Java 线程管理 MXBeanThreadMXBean threadMXBean ManagementFactory.getThreadMXBean();// 不需要获取同步的 monitor 和 synchronizer 信息,仅获…...
golang学习笔记16——golang部署与运维全攻略
推荐学习文档 golang应用级os框架,欢迎star基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总golang学习笔记01——基本数据类型golang学习笔记02——gin框架及基本原理golang学习笔记03——gin框架的核心数据结构golang学…...

Unreal Fest 2024 虚幻引擎影视动画制作的普遍问题
———————————————————————————————————————— 本文为Unreal Fest Shanghai2024讲座内容笔记,非本人所著,原演讲人李文磊。 ————————————————————————————————————————…...

【机器学习-四-无监督学习unsupervise learning-聚类算法简介】
无监督学习unsupervise learning 聚类聚类的过程相似度度量方法聚类的方法划分式层次聚类基于密度的聚类 上一节讲的无监督学习,但是很多人可能会很疑惑,没有目标,那算法是怎么学会该怎样分类的呢?今天就简介一下其中的聚类算法。…...

IPv6路由基础
RIPng RIPng是一种较为简单的内部网关协议,是RIP在IPv6网络中的应用。RIPng主要用于规模较小的网络中,比如校园网以及结构较简单的地区性网络。由于RIPng的实现较为简单,在配置和维护管理方面也远比OSPFv3和IS-IS for IPv6容易,因…...

uniapp开发微信小程序 嵌套(uniapp开发/其他)H5,H5点击跳转微信小程序页面(通信
环境: uniapp开发微信小程序,嵌套webview,H5页面也是用的uniapp框架开发,H5页面点击商品后,需要跳转到微信小程序的详情页面 做法的原因 在微信小程序中使用web-view元素,如果要实现 H5到小程序的通信&am…...

VM虚拟机器配置网络DHCP服务
1、VM虚拟机器网络配置,centos 精简版没有配合网卡,如何配置网络 一、查看网卡信息 使用ip addr或ifconfig -a命令查看系统中现有的网卡设备名称,通常可能是eth0、ens33等类似的名称。 二、编辑网络配置文件 网络配置文件通常位于/etc/syscon…...
使用 jd.item_get API打造可读性商品介绍
在数字化时代,电子商务的蓬勃发展使得商品信息的获取变得至关重要。对于电商平台而言,如何准确、快速地获取商品信息,并以吸引人的方式呈现给消费者,成为提高销售额和用户体验的关键。本文将介绍如何利用 jd.item_get API 获取商品…...
java 通过文件下载地址读取文件内容
需求:读取文件内容,已知文件下载地址 需要引入pdfbox依赖 <dependency> <groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.27</version> </dependency>Override pub…...

打造古风炫酷个人网页:用HTML和CSS3传递笔墨韵味
需要用到的背景大家可以自己找喜欢的风格!!! 当然俺把俺用的背景放到文章最后了哦!!!!! 感谢关注和支持 长期更新哦~~~ 1. 简洁的页面布局:保持优雅和对称 在古风设计中,布局的对称性非常重要…...

vue 项目自适应 配置 px转rem 的插件postcss-pxtorem
1、安装 npm i postcss-plugin-px2rem --save -dev --force找到 postcss.config.cjs 没有的话就新建一个 module.exports {plugins: {// to edit target browsers: use "browserslist" field in package.jsonautoprefixer: {},"postcss-plugin-px2rem":…...
股票程序化交易是,第三方软件申请券商私有接口API的门槛
炒股自动化:申请官方API接口,散户也可以 python炒股自动化(0),申请券商API接口 python炒股自动化(1),量化交易接口区别 Python炒股自动化(2):获取…...
JDK8的一些主要的新特性
JDK8(Java Development Kit 8) 是一个重要的版本,带来了许多显著的特性和改进,极大地提升了 Java 语言的功能性和开发效率。以下是 JDK 8 的一些主要新特性: 一、Lambda 表达式 1.简化匿名内部类的写法,…...
40岁的java程序员,还有出路吗?
目录 前言一、现状与挑战二、出路与机遇三、案例分析与启示四、结语 前言 40岁Java程序员的出路:挑战与机遇并存 在科技日新月异的今天,IT行业始终保持着高速的发展态势,而Java作为其中的重要一员,其地位依然稳固且充满挑战。对…...
【服务器】shell脚本之Docker创建nginx
#!/bin/bash# 定义目标目录和配置文件路径 BASE_DIR"/opt/docker/nginx"ETC_DIR"$BASE_DIR/etc" ETC_CONF_DIR"$ETC_DIR/conf.d" SSL_DIR"$ETC_CONF_DIR/ssl" LOG_DIR"$BASE_DIR/log"HTML_DIR"$BASE_DIR/html"C…...
提取蛋白质复合体结构中组装体的变换矩阵
PDB文件中,组装体变换矩阵(assembly transformation matrices)用于描述多聚体结构中各个单体之间的相对位置和取向。从蛋白质复合体 PDB 数据中提取每个组装体(assembly)的变换矩阵,通常需要解析 PDB 文件中…...

java程序员入行科目一之CRUD轻松入门教程(一)
之前在操作MySQL的时候,都是采用Navicat,或者cmd黑窗口。 无论使用什么方式和MySQL交互,大致步骤是这样的 建立连接,需要输入用户名和密码编写SQL语句,和数据库进行交互 这个连接方式不会变,但是现在需要 基…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...