自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(177)
  • 资源 (1)
  • 收藏
  • 关注

原创 一文梳理有效提升RAG效果的方法

RAG 是 “Retrieval-Augmented Generation”(检索增强生成)的缩写,它通过结合检索系统和生成模型来提高语言生成的准确性和相关性。RAG 的优势在于它能够在生成响应时引入外部知识,这使得生成的内容更加准确和信息丰富,对于处理需要专业知识或大量背景信息的问题尤其有效。随着大型语言模型(LLMs)的发展,RAG 技术也在不断进化,以适应更长的上下文和更复杂的查询。目前,大部分公司倾向于使用 RAG方法进行信息检索,因为相比长文本的使用成本,使用向量数据库的成本更低。

2024-07-07 11:37:25 519

转载 RAG系列之:深入浅出 Embedding

文本向量化就是将文本数据转成数字数据,例如:将文本 `It was the best of times, it was the worst of times.` 转成 `[0, 1, 0, 2, 2, 2, 2, 2, 0, 1]`。

2024-06-17 09:38:56 64

转载 漫画:什么是最大堆最小堆?

代码中有一个优化的点,就是父节点和孩子节点做连续交换时,并不一定要真的交换,只需要先把交换一方的值存入temp变量,做单向覆盖,循环结束后,再把temp的值存入交换后的最终位置。接下来我们让移动到堆顶的节点10和它的左右孩子进行比较,如果左右孩子中最小的一个(显然是节点2)比节点10小,那么让节点10“下沉”。比如上面例子中,节点6包含9和10两个孩子,节点6在数组中的下标是3,节点9在数组中的下标是7,节点10在数组中的下标是8。接下来轮到节点3,如果节点3大于它左右孩子中最小的一个,则节点3下沉。

2024-06-11 11:53:29 35

原创 一文读懂:大模型RAG

本文概述 RAG 的核心算法,并举例说明其中的一些方法。RAG融合是一个强大的功能,能够提高RAG应用的语义搜索效率。通过使用语言模型生成多个查询并对搜索结果进行重新排序,RAG融合可以呈现更丰富多样的内容,并提供了一个额外的层次,用于调整应用。此外,RAG融合还可以实现自动纠正、节省成本以及增加内容多样性。但是,需要注意一些权衡,比如潜在的延迟问题、自动纠正的挑战以及成本影响。对于依赖常见概念但可能出现内部行话或重叠词汇的应用来说,RAG融合尤其有用。

2024-06-11 11:40:44 382

转载 生产中的RAG,为何表现不尽人如意人?

RAG虽然听起来很牛,但要让它在生产环境里稳定运行,还真不是一件容易的事。目前看来它确实有多实际的应用价值,相关的技术也在不断的演进,包括RAG从1.0向2.0的演进,也是在通过探索,不断地去完善这项技术的弱点。

2024-06-11 08:44:33 26

转载 AIGC算法工程师面经:NLP基础篇——文本解码超全总结

本系列将从分词、词表优化、词向量、词频、解码的理论和实践代码讲起,最终会将所有知识化零为整搭建一个完整的文本分类模型。

2024-06-10 18:25:06 26

转载 一文彻底搞懂 Transformer(图解+手撕)

Transformer 通过其捕捉上下文和理解语言的能力,彻底改变了自然语言处理(NLP)领域。通过注意力机制、编码器-解码器架构和多头注意力,它们使得诸如机器翻译和情感分析等任务得以在前所未有的规模上实现。随着我们继续探索诸如 BERT 和 GPT 等模型,很明显,Transformer 处于语言理解和生成的前沿。它们对 NLP 的影响深远,而与 Transformer 一起的发现之旅将揭示出该领域更多令人瞩目的进展。研究论文。

2024-06-10 16:57:39 3426 1

转载 一文彻底搞懂 Bert(图解+代手撕)

BERT 代表双向编码器表示来自Transformer(BERT),用于高效地将高度非结构化的文本数据表示为向量。BERT是一个经过训练的 Transformer 编码器堆栈。主要有两种模型大小:BERT BASE和BERT LARGE。上图清楚地显示了BERT BASE和BERT LARGE之间的区别,即编码器的总数量。下图描述了单个编码器的设计。输入表示可以是单个句子或一对句子。在将输入传递到BERT之前,需要嵌入一些特殊的标记。

2024-06-10 16:36:07 6299

转载 一文说清大模型RAG应用中的两种高级检索模式:你还只知道向量检索吗?

如果你知道RAG(检索增强生成),那么一定知道这里面的R代表Retrieval即检索,也一定知道这个环节对于最终的生成质量有多重要,而基于向量(Vector)的语义检索是最为熟知的一种基础检索模式。检索在复杂RAG应用中的重要性不言而喻,基于单一的向量语义检索很难满足实际企业生产环境下的复杂应用需求,以原型去应对生产的需求会导致举步维艰。这种方式与上一种的区别在于:一级的chunk链接到的对象不再是输出检索结果的检索器(retriever),而是一个RAG引擎,其输出的答案将作为后续生成的上下文。

2024-06-10 15:45:12 73

转载 RAG组合拳:AGI应用走向落地的40%(下篇)--附100M文档资料

而我理想中的 data-driven 的 RAG 流程应该是:针对不同的知识库问答场景,以一个评估框架(RAGAS),自动调优出最佳的分块方法、embedding 模型、rerank 模型、prompt 模板、大语言模型的组合。下图是 Rerank 模型 cohere 官网的效果对比图,左侧是维基百科原生的搜索排序,右侧是在左侧排序的基础上,进行重排后的结果,在右侧我们可以看到经过重排后,原先的排序会有较大的变化,比如原来排在第六位的文章重排后到了第一名。

2024-06-10 15:40:33 20

转载 【深入浅出RAG】LangChain-RAG优化最终章:RAG结合Agent实现最佳检索结果

主要是因为为了提升在向量数据库中的检索结果,一般会使用向量索引,向量索引的算法(常见的为HNSW算法)都有一定的随机性,会导致除了第一条以外,其他的结果不太准确,因此需要再进行排序。Re-Rank就是重排序,原理比较好理解,就是把向量数据库中检索到的结果,比如最相似的前10条记录,再进行排序,并筛选出更小一部分结果,比如前2条。当发现检索的结果都不满足要求的时候,就通过重写问题,再去互联网查询相关的内容,把网上查找的结果再做一次RAG,发送给大模型生成结果。向量检索不是筛查出最相似的前N个值吗?

2024-06-10 12:18:17 257

转载 RAG组合拳:AGI应用走向落地的40%(上篇)

目前有开源的评测结果,对主流的 embedding 模型针对不同测试集、不同任务有对应的分数,可以找到和你最接近的数据集,主要看Retrieval 指标的表现来进行初筛(详见参考文章 5 《github 上开源的评测结果》,不过 openAI 的 embedding 模型没有开源,也没有评测结果,目前无脑推荐开源免费的智源 BAAI/bge-large-zh 模型,评分比较高且免费)。这大概就像:你把两批同样的资料派给不同的公司管理,还让不同人去查,二者都能得到答案,但要找到好答案可不是一件容易的事情。

2024-06-10 12:10:55 36

转载 LLM Agents 指南:入门与实现

Agent 是汽车,而 LLM 类似于汽车的引擎,决定了车辆的性能。,在这个系统中,LLM 充当了「大脑」的角色,负责语言理解、思考和规划,将复杂任务分解成可管理的子任务,并制定执行策略,然后,通过使用各种工具和资源,有效完成这些复杂任务。可以看到,LLM 通过 ReAct 很好地解决了用户的问题,先思考,再通过 Action 获取外部信息,进行观察,循环往复,最终得到正确的答案。如图所示,是一次虚构的聊天会话,其中,Agent 通过思考和规划,然后使用绘画、搜索、语音等工具来完成用户的任务。

2024-06-10 09:26:35 113

转载 面试必杀技,讲一讲Spring中的循环依赖

Spring中的循环依赖一直是Spring中一个很重要的话题,一方面是因为源码中为了解决循环依赖做了很多处理,另外一方面是因为面试的时候,如果问到Spring中比较高阶的问题,那么循环依赖必定逃不掉

2024-05-22 11:28:20 23

转载 美团一面:碰到过OOM吗?你是怎么处理的?

如果面试被提到了OOM相关的问题,那么面试官主要在意的有哪些呢?

2024-05-22 11:07:46 14

转载 什么是线程安全? 如何保证线程安全?

随着硬件技术的快速发展(比如多核处理器,超线程技术),我们通常会在代码中使用多线程(比如线程池)来提高性能,但是,多线程又会带来线程安全问题。因此,本文将深入探讨Java中的线程安全问题。

2024-05-22 10:19:24 108

原创 Spring Boot整合MybatisPlus逆向工程快速生成代码

MyBatis-Plus是MyBatis的增强工具,Generator通过MyBatis-Plus快速生成Entity、Mapper、Mapper XML、Service、Controller等模块的代码,方便快捷,并且支持MySQL/PostgreSQL。

2024-05-11 11:18:15 417

原创 iframe的基本用法

博主使用postMessage API传递参数时,应用B第一次接受的参数为空,之后接收的参数正常了,后来换成URL传递参数,应用B能够快速准确的接受到参数,因此推荐大家优先使用URL进行参数传递,简洁高效。我的功能Demo页面如下图所示,弹框样式自主可控,并且实现了参数传递。

2024-05-08 17:15:13 785

转载 1.8w 字详解 SQL 优化

本文涉及三部分:SQL介绍SQL优化方法SQL优化实例

2024-03-18 17:07:59 39

转载 分布式架构最全详解(万字图文总结)

分布式架构是指将系统的各个组件和服务分布在多台独立的计算机节点上,通过网络进行通信和协作,以实现高性能、高可用性和可伸缩性的系统架构。

2024-03-12 00:18:18 3441

转载 redis 分布式锁进阶篇

本文针对于 redis 分布式锁中存在的过期时间不精确以及数据弱一致性问题提出了对应的解决方案——看门狗机制和红锁机制. 内容介绍均分为原理分析和源码展示两种方式.

2024-03-12 00:06:47 76

转载 工作中常用的6种设计模式

本章我们只谈常用的几种设计模式,通过设计模式的理念、规约、到应用,理解实战中如何正确使用设计模式,不论对面试还是实际工作中都有益处。规定:软件中的对象(类、模块、函数等等)应该对于扩展是开放的,但是对于修改是封闭的。换句话说,一个实体是允许在不改变它的源代码的前提下变更它的行为。一个请求会按照定义的拦截器顺序,逐个被处理,直到找到对应的处理器或者遍历完所有的拦截器。在用户登录流程中,可能用到拦截器做鉴权校验,日志记录接口参数等,使用了一些常见的设计模式。然后,在Spring的配置中启用事件发布功能。

2024-03-12 00:00:59 39

转载 大模型开发 - 一文搞懂 Function Calling(函数调用)

自然语言接口(NLI)允许用户通过日常语言与软件和设备交互,无需特定命令或语法。

2024-03-11 23:29:19 6840

转载 向量搜索和Faiss 使用指南

FAISS 是 Facebook 推出的向量搜索库,里面提供了高性能的向量搜索工具。

2024-01-07 20:52:13 289

转载 java http长连接_记录一次http网络超时的排查过程

最终我们发现商户是三台服务器一起请求的,而三台服务器应该是经过nat后是同一个ip,那么很可能是触发了tcp中的一个时间戳的限制,也就是如果同一个ip的请求会记录其时间戳并进行比较,下次发送握手报文的时候,如果时间戳比上一次请求时间小,那么会将该握手报文丢弃,如果同一个ip是同一个机器一般不会有问题,然而三台机器相同ip但是时间戳可能不相同,如果在大批量发送请求的时候很可能会触发该规则。经过排查后,都不是上面两个原因,目前现象ping包是正常的,执行以下nc命令 ,偶尔会失败,大部分时候成功。

2023-12-27 11:33:32 172

转载 Http持久连接与HttpClient连接池

HTTP协议通过持久连接的方式,减轻了早期设计中的过多连接问题持久连接有两种方式:HTTP/1.0+的Keep-Avlive与HTTP/1.1的默认持久连接HttpClient通过连接池来管理持久连接,连接池分为两个,一个是总连接池,一个是每个route对应的连接池HttpClient通过异步的Future来获取一个池化的连接。

2023-12-27 11:11:13 145

转载 分分钟搞懂布隆过滤器,亿级数据过滤算法你值得拥有!

布隆过滤器(Bloom Filter)是 1970 年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。布隆过滤器(Bloom Filter)本质上是由长度为 m 的位向量或位列表(仅包含 0 或 1 位值的列表)组成,最初所有的值均设置为 0,如下图所示。向布隆过滤器中添加 key 时,会使用多个 hash 函数。

2023-12-05 16:13:56 182

转载 chatglm基于ptuning微调训练

在这次尝试中,通过对模型的微调和推理过程的体验,我们发现了一些问题和改进的方向。虽然离贾维斯的智能管家还有一定距离,但这个探索让我们更深入地了解了人工智能的奥秘,并为未来的学习和探索积累了宝贵的经验。在实践中,我们使用了ChatGLM-6B模型,并经历了模型的训练和推理过程。训练模型消耗了相当多的时间,但也让我们体会到了模型训练的复杂性和挑战性。虽然在推理阶段,模型生成了一些内容,但体验效果并不完美,仍需要进一步改进和优化。

2023-11-23 15:23:58 120

转载 Java开发必安装的插件Maven Helper

Maven 是一个非常流行和强大的 Java 项目管理工具,它可以帮助我们自动化地处理项目的构建、依赖、文档、测试、发布等各个环节。然而,Maven 项目中也经常会遇到一些依赖问题,比如依赖冲突、依赖缺失、依赖过多等,这些问题会影响项目的正常运行和性能。为了解决这些问题,我们需要一个能够分析和优化 Maven 项目依赖关系的工具,而这个工具就是 Maven Helper 插件。Maven Helper 插件是一款可以帮助你解决 Maven 项目的依赖问题的 IntelliJ IDEA 插件。它可以在 pom

2023-11-15 22:13:30 393

转载 什么是SPI,SPI和API有什么区别?

什么是SPI,SPI和API有什么区别?

2023-10-24 09:58:03 121

原创 上瘾(让用户养成使用习惯的四大产品逻辑)读书笔记

2023-10-21 17:29:06 46

转载 MySQL MVCC实现原理

这里介绍了 MVCC 在 READ COMMITTD 、 REPEATABLE READ 这两种隔离级别的事务在执行快照读操作时访问记录的版本链的过程。这样使不同事务的 读-写 、 写-读 操作并发执行,从而提升系统性能。READ COMMITTD 在每一次进行普通SELECT操作前都会生成一个ReadViewREPEATABLE READ只在第一次进行普通SELECT操作前生成一个ReadView,之后的查询操作都重复使用这个ReadView就好了。

2023-09-17 12:14:35 85

转载 十种经典排序算法详解

内部排序:数据记录在内存中进行排序。外部排序:因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。插入排序希尔排序选择排序冒泡排序归并排序快速排序堆排序基数排序等,本文只讲解内部排序算法。图片名词解释:n:数据规模k:“桶” 的个数In-place:占用常数内存,不占用额外内存Out-place:占用额外内存。

2023-09-17 08:37:06 55

原创 # EasyExcel mac或者windows下读取EXCEL正常,Linux服务器下报ExcelAnalysisException:java.lang.AbstractMethodError 异常

网上搜了很多帖子,有说poi依赖冲突的,有说linux上无对应字体的,但是都不生效。最新 3.3.2,更新pom依赖,重新部署到Linux 服务器上问题就解决了。

2023-09-15 15:46:07 233

转载 Spring自定义参数解析器设计

RequstBody、@RequstParam 这些注解是不是很熟悉?我们在开发Controller接口时经常会用到此类参数注解,那这些注解的作用是什么?我们真的了解吗?前台传参参数格式//***但如果是服务接收参数的方式改变了,如下代码,参数就不能成功接收了,这个是为什么呢?//***如果上面的代码稍微改动一下注解的使用并且前台更改一下传参格式,就可以正常解析了。前台传参参数格式http://***?无//***

2023-09-09 21:07:14 81

转载 传输层篇:既生瑜何生亮-UDP和TCP的对比

本文主要是对比了UDP协议和TCP协议,明白UDP是一个无连接、不可靠的协议,拼命传输上层应用报文达到最大传输速度即可,适合于实时应用,比如IP电话、视频会议等知识即可。而TCP是实现了面向连接、可靠的传输服务,需要支持可靠传输、流量控制、拥塞控制等服务,因此TCP比较复杂,也是传输层中需要花费佷多精力去学习和探讨的对象,后续文章将对TCP进行详细的学习。

2023-09-06 14:37:11 322

转载 Stream流畅编程:优雅而高效的代码创作

而映射操作本身的优点在于,可以通过简单的函数变换实现对原始数据的转换,减少了繁琐的循环操作,提高了代码的可读性和维护性。需要注意的是,过滤操作返回的是一个新的 Stream 实例,原始的 Stream 不会受到改变。需要注意的是,映射操作返回的是一个新的 Stream 实例,原始的 Stream 不会受到改变。需要注意的是,排序操作返回的是一个新的 Stream 实例,原始的 Stream 不会受到改变。需要注意的是,截断操作返回的是一个新的 Stream 实例,原始的 Stream 不会受到改变。

2023-08-30 23:29:10 57

转载 Spring Boot 中的 AOP,到底是 JDK 动态代理还是 Cglib 动态代理?

这两者最大的区别在于基于 JDK 的动态代理需要被代理的对象有接口,而基于 Cglib 的动态代理并不需要被代理对象有接口。那么小伙伴们不禁要问,Spring 中的 AOP 是怎么实现的?是基于 JDK 的动态代理还是基于 Cglib 的动态代理?

2023-08-30 22:27:57 90

转载 既然有HTTP协议,为什么还要有RPC

纯裸TCP是能收发数据,但它是个无边界的数据流,上层需要定义消息格式用于定义消息边界。于是就有了各种协议,HTTP和各类RPC协议就是在TCP之上定义的应用层协议。RPC本质上不算是协议,而是一种调用方式,而像gRPC和thrift这样的具体实现,才是协议,它们是实现了RPC调用的协议。目的是希望程序员能像调用本地方法那样去调用远端的服务方法。同时RPC有很多种实现方式,不一定非得基于TCP协议。从发展历史来说,**HTTP主要用于b/s架构,而RPC更多用于c/s架构。

2023-08-21 22:22:39 49

转载 万字长文漫谈分布式事务实现原理

• 上篇:万字长文漫谈分布式事务实现原理• 下篇:从零到一搭建 TCC 分布式事务框架今天分享的是其中的上篇,下面正式开始.RocketMQ 是阿里基于 java 实现并托管于 apache 基金会的顶级开源消息队列组件,其中事务消息 TX Msg 也是 RocketMQ 现有的一项能力. 本章将主要基于 RocketMQ 针对事务消息的实现思路展开介绍.RocketMQ github 地址:https://github.com/apache/rocketmq。

2023-08-17 23:39:22 979

SpringMVC 用户登录、商品浏览、交易下单电商项目.rar

慕课网公开课,SpringBoot构建电商基础秒杀项目源码复现,包含SQL、前端代码,用户登录注册、商品添加和详情列表、交易下单模块功能实现,是新人学习Springboot很好的入门课程,代码全部自己复现,亲测可用。

2020-08-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除