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语句,和数据库进行交互 这个连接方式不会变,但是现在需要 基…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
