- 博客(53)
- 收藏
- 关注

原创 RAG与微调:企业AI知识注入实战---一文带你详细了解RAG工作原理,通过ragflow底层源码分析rag实现流程
文章摘要:本文系统分析了企业应用大模型的三种知识注入方法——RAG、微调和提示词工程。通过对比表显示,RAG在知识时效性和抗幻觉方面表现最优,成为当前70%新项目的首选方案。文章深入解析了RAG的双模块架构(检索器+生成器)和三阶段工作流程,并提供了Excel文档处理的代码实现示例,展示如何将表格数据转化为问答对并向量化存储。RAG技术通过动态融合外部知识,有效解决了大模型的知识静态性和专业领域适应性问题,在客服、法律、医疗等场景具有广泛应用前景。
2025-05-30 18:09:06
754
原创 环境踩坑记录文档
摘要: 本文记录了解决LLaMA-Factory项目中因torch库路径混乱导致的ImportError问题。主要由于全局安装的torch相关包与Conda环境冲突,导致动态库加载失败和算子注册错误。解决方案包括:1) 删除全局冲突包;2) 确保使用Conda环境的pip;3) 重新安装依赖;4) 配置LD_LIBRARY_PATH;5) 设置PYTHONNOUSERSITE防止未来冲突。验证方法检查模块加载路径是否在Conda环境中。建议始终优先使用python -m pip和Conda管理依赖,避免全局
2025-07-22 17:06:58
107
原创 [特殊字符]️ 踩坑记录:conda 虚拟环境中 pip 安装包却被 `.local/lib` 截胡
conda ≠ 完全隔离;.local/lib是隐形炸弹。用或拆除它。
2025-07-18 11:14:45
313
原创 7.15踩坑记录-缺失 CUDA 库报错解决方案
解决LLM项目CUDA库缺失报错的简明指南 当运行llm-guard项目时遇到libcudnn.so.9、libcusparseLt.so.0等动态链接库缺失问题,可按以下步骤解决: 全局库处理(如libcudnn.so.9) 使用find命令定位库文件路径 创建软链接到/usr/local/lib 更新/etc/profile设置全局环境变量 Conda环境库处理(如libcusparseLt.so.0) 在Conda环境中创建激活脚本 添加库路径到$CONDA_PREFIX/etc/conda/acti
2025-07-15 15:29:28
345
原创 RAG实战之dify源码文件解析-pdf文件解析流程
通过对dify源码的解析,用户上传的文档首先经过api处理后传递给文件处理服务层,对于知识管理,上传的 PDF 通过进入索引管道。这个过程通常通过异步执行。作为文档处理的中央处理器根据文档的格式选择具体的Extractor类专门用于 PDF 文件,利用使用 pypdfium2 这个高效的 PDF 解析库,按页读取 PDF 内容。
2025-07-09 16:59:05
1101
原创 使用df和高效定位服务器磁盘占用情况
清空内容,再逐步删除。对关键目录操作前备份(如。显示空间未释放——因文件被进程占用(可通过。定位进程并重启释放)。
2025-07-07 15:07:40
784
原创 什么是DO、DTO、VO、BO、AO,还在傻傻分不清?今天一文带你了解这些概率
在Java分层架构中,DO、DTO、VO、BO、AO等对象承担不同职责:DO映射数据库字段,DTO用于跨层数据传递,VO适配前端展示,BO封装业务逻辑,AO简化展示层交互。它们通过分层解耦,提升代码可维护性,DO保持数据纯净,BO实现业务复用,DTO/VO按需裁剪字段。实际应用中,简单项目可合并对象,复杂系统建议严格分层并使用工具自动转换,遵循团队规范与业务需求平衡设计复杂度。
2025-06-23 10:14:57
1169
原创 解决lombok注解失效问题
Lombok 注解失效是 Java 开发中的常见问题,通常由依赖配置、IDE 支持或构建工具设置引起。最近在拉取别人springboot3+jdk21版本的项目时遇到了lombok注解失效,导致项目无法启动的问题,以下是我的解决方案:首先检查idea 的lombok的注解设置:务必和默认设置一样!!!以下是网上的一些解决方案,希望对大家有所帮助:Maven 项目 在 中确保依赖包含 配置: Gradle 项目 在 中添加: ⚠️ 关键点:
2025-06-18 16:48:47
815
原创 AI技术如何重塑软件开发行业:从智能编码到自动化测试的全景探索
AI技术正以强大势能重塑软件开发行业的各个环节。从智能编码到自动化测试,再到大模型的深度应用,开发者和企业都站在了创新的风口浪尖。未来,随着技术的不断突破与融合,AI必将为行业带来更多惊喜与可能。期待更多开发者和企业积极拥抱AI,推动行业迈向更加智能、高效、创新的新时代!
2025-06-18 15:34:15
856
原创 ai解析ragflow实现rag相关源码记录
摘要:本文分析了多个代码文件的功能,重点关注数据向量化和存储逻辑。es_conn.py文件实现了Elasticsearch连接和操作的封装,支持向量检索但不直接生成向量;qa.py文件涉及数据向量化前的预处理;redis_conn.py仅处理通用Redis操作,不涉及向量化。在rag/utils文件夹下,es_conn.py是唯一明确涉及向量存储和检索的文件。
2025-06-18 11:23:09
430
原创 汉化langfuse踩坑记录--docker卷挂载未生效问题修复及langfuse启动
Next.js 应用在生产环境中运行时,它提供的是编译和打包后的静态文件和服务器端渲染的页面。后面尝试的 volumes: - ./web/src:/app/web/src 挂载,确实让容器内部的 /app/web/src 目录与宿主机上的源代码目录实时同步了。所以,容器内 /app/web/src 目录的源代码是更新后的代码,但 langfuse-web 容器中运行的 Next.js 应用程序实例,实际上加载和展示的是位于它**自身内部(在构建时就已打包进去)**的旧的、未汉化的编译产物。
2025-06-12 13:11:33
667
原创 Docke启动Ktransformers部署Qwen3MOE模型实战与性能测试
本文介绍了使用Docker部署Qwen3MOE大模型并测试性能的过程。由于CPU不支持AVX512指令集,改用AVX2版本的ktransformers镜像。通过Docker容器运行模型,详细说明了启动命令和参数配置,包括模型路径、优化配置等。重点测试了模型响应性能,结果显示预填充阶段速度为58.34 tokens/s,解码阶段为19.09 tokens/s,揭示了模型在不同处理阶段的性能特征,为优化推理速度提供了参考依据。
2025-06-07 16:19:44
977
原创 突破DIFY沙箱限制,高效处理大文件
绕过Dify代码沙箱限制处理文件数据的方法 针对Dify代码沙箱无法直接读写系统文件的问题,本文提出了三种解决方案:1)修改沙箱镜像配置,放开系统调用权限;2)将本地文件挂载到容器;3)通过Python代码获取文件路径。实验证明,这些方法可以有效绕过沙箱限制,直接处理Excel等文件数据,避免了官方插件导致的30MB数据膨胀问题。修改后的配置允许系统文件操作,而文件挂载方案则实现了临时文件的直接访问。最终实现了Excel数据的正常读取和处理。
2025-05-30 20:10:06
897
原创 Linux命令大全:高效管道的实战技巧,一文带你全面了解linux命令使用方法!
Linux系统常用命令分类汇总及管道符使用指南 本文梳理了Linux系统的核心操作命令,分为七大类功能:1)文件目录操作;2)文本处理;3)系统管理;4)网络通信;5)压缩备份;6)权限管理;7)实用工具。重点介绍了管道符"|"的高级用法,通过命令组合实现数据过滤、统计分析、进程监控等复杂操作,如日志实时跟踪(tail -f | grep)、多条件搜索(ps aux | grep | awk)等。文中包含典型应用场景和注意事项,帮助用户高效完成系统管理任务,避免手动处理中间数据。(148
2025-05-28 17:34:20
648
原创 Langfuse:开源LLM应用调试神器,手把手带你部署并实现langfuse跟踪监控本地LLM系统
Langfuse是一个开源的LLM工程平台,旨在帮助团队协作调试、分析和优化LLM应用程序。它支持任何模型和框架,提供嵌套跟踪功能,能有效定位问题根源。平台特点包括完全开源、生产级优化、多语言SDK支持、主流框架集成以及多模态数据跟踪能力。 部署流程包括:1)通过Docker本地部署服务;2)创建项目获取API密钥;3)配置环境变量;4)安装依赖包;5)使用@observe装饰器自动跟踪应用。测试结果显示平台能成功捕获LLM应用的输入输出数据,为开发调试提供可视化支持。整个方案实现了对本地LLM应用的性能监
2025-05-28 17:06:04
1476
原创 揭秘模型上下文:AI如何理解长文本?
摘要: 模型上下文(Context Length)指语言模型单次推理可处理的最大文本长度(以token计),包含输入提示和生成内容。上下文窗口决定模型生成时参考的文本范围,影响输出的连贯性。上下文长度是硬性限制,如GPT-4支持8192 tokens,超出部分会被截断。Token是分词后的最小单位,不同模型的分词方式各异。较长的上下文能提升问答、文档总结等任务的表现,但需注意不同模型的默认限制(如LLaMA2为2048 tokens,Mistral/Qwen支持32768 tokens)。合理控制提示词长度
2025-05-21 18:11:19
779
原创 预训练模型:深度学习的通用特征引擎
预训练模型是深度学习中的关键技术,通过在大规模数据上预先学习通用特征,再迁移到具体任务中进行微调。其核心原理包括特征迁移和自监督学习,典型架构如Transformer和卷积神经网络。与用户自训练模型、传统机器学习模型及无预训练深度模型相比,预训练模型在数据需求、训练成本、特征通用性和任务扩展性等方面具有显著优势。然而,它也存在领域偏差、计算成本高和可解释性差等局限性。预训练模型广泛应用于自然语言处理、计算机视觉和多模态任务,未来将向多模态、轻量化和知识增强等方向发展。
2025-05-20 15:48:17
885
原创 通过vllm部署qwen3大模型以及基于 vLLM 的 OpenAI 兼容 API 接口调用方法总结
第一句是关于春节,中国家庭做饺子,长辈讲关于年兽的故事。这里要注意“make dumplings”翻译成“包饺子”比较合适,而“Nian”是年兽,应该音译为“年兽”或者“年兽”,但通常用“年兽”更常见。model="/home/xugq/qwen3-1.7b/", # 使用模型路径,如通过--served-model-name指定名称需与 vLLM 服务启动时指定的名称一致。:指定使用的推理解析器,如 deepseek_r1,用于解析推理过程中的逻辑结构,使模型的输出更符合逻辑和预期的格式。
2025-05-20 15:30:30
1598
原创 如何在一台环境中同时安装ragflow和ragflow-plus
进入根目录和management/server/中执行。原因是宿主机和容器映射端口都被改成了6333。在已激活的 conda 环境中。
2025-05-16 14:24:57
558
原创 系统盘满了?一文教你docker如何迁移数据并更换存储路径!
要将 Docker 数据迁移到指定目录并永久更改存储路径,需修改 Docker 的数据根目录(data-root)。首先停止 Docker 服务,然后使用 rsync 命令将现有数据迁移到新路径(如 /home/docker-data),并备份旧数据。接着,编辑 Docker 配置文件 /etc/docker/daemon.json,添加 data-root 字段指向新路径。若系统启用了 SELinux 或 AppArmor,需进行相应配置。重启 Docker 服务后,使用 docker info 验证新路
2025-05-15 17:19:17
522
原创 如何调用dify工作流api,代码格式如下
本文展示了如何使用Python的requests库与一个本地API进行交互。首先,配置了API的URL和认证密钥,并设置了请求头,包括授权信息和内容类型。请求体包含输入文本和响应模式等参数。通过requests.post方法发送请求,并设置了超时时间。如果响应状态码为200,且返回的数据状态为“succeeded”,则解析并打印输出数据。此过程展示了如何通过API进行数据交互并处理响应结果。
2025-05-14 18:28:49
1863
原创 通过vllm部署qwen3大模型以及基于 vLLM 的 OpenAI 兼容 API 接口调用方法总结
该报错说明KV缓存所需的内存超过了可用的显存,KV缓存的计算涉及模型层数、序列长度和批次大小等因素,模型默认设置的max_seq_len是40960,这大大超过了服务器的负载上限,应该降低通过调整–max_model_len参数以减少KV缓存需求。接口必须确认实际加载的模型名称,避免因名称不匹配导致404错误。适用场景:非对话式文本生成(如问答、续写)适用场景:多轮对话(如聊天机器人)
2025-05-07 15:16:19
4923
原创 垂直分表和水平分表涉及的不同场景?如何决定使用水平分表还是垂直分表?
水平分表适用场景:数据量大、查询和写入性能要求高、数据可以均匀分布。优点:减少单表数据量,提高查询和写入性能,适合处理高并发场景。缺点:查询时可能需要聚合多个表的数据,增加查询复杂性。垂直分表适用场景:表字段过多、字段使用频率差异大。优点:减少查询时的数据量,优化表结构,提高查询性能。缺点:可能增加写入复杂性,不适合处理高并发写入场景。在实际应用中,可以根据具体场景选择单一的分表策略,也可以结合使用水平分表和垂直分表,以达到更好的效果。
2025-04-24 16:06:54
470
原创 java项目中分库分表使用场景?具体应该如何实现?
在应用层实现分片逻辑,应用程序根据分片策略决定数据存储的库或表。使用中间件(如 ShardingSphere、MyCat)实现分片逻辑,应用程序无需关心分片细节。分库分表可能涉及跨库事务问题,需要使用分布式事务管理方案,如 Seata。:不同业务模块的数据可以独立管理,例如用户信息、订单信息、商品信息等。:将高频访问的“热数据”与低频访问的“冷数据”分开存储。:系统面临高并发读写操作,单库单表难以满足性能需求。:按用户ID哈希取模分库,按时间或业务范围分表。:按字段切分,将不同字段存储到不同表。
2025-04-24 16:01:08
389
原创 rag向量知识库不同检索方式如何区分?
向量化用户输入的问题并生成查询文本的数学向量,比较查询向量与知识库内对应的文本向量间的距离,寻找相邻的分段内容。
2025-04-11 13:57:07
914
原创 java基础及多线程面试题总结
多线程是指一个程序中可以同时运行多个线程(线程是程序执行的最小单位),每个线程都有自己的任务和执行流程。多线程的目的是提高程序的执行效率和响应速度,特别是在多核处理器的环境中,可以充分利用硬件资源,实现真正的并行执行。工作原理:多线程的工作原理主要依赖于操作系统的线程调度机制。操作系统会根据一定的策略(如时间片轮转、优先级调度等),在多个线程之间分配CPU时间,使得每个线程都能得到执行的机会。线程在执行过程中,可以共享进程的资源(如内存、文件等),但每个线程有自己的程序计数器、寄存器和栈空间。
2025-04-02 17:53:43
980
原创 spring八股文面试知识点汇总!重点是在质不在量。
Spring是一款全面的一站式轻量级的Java开发框架,其核心特性为IOC(Inversion of Control)和AOP(Aspect Oriented programing)即控制反转和面向切面编程思想。其中IOC是通过DI(依赖注入)来实现,AOP是通过动态代理和预编译来实现动态的增加程序的功能。AOP(Aspect-Oriented Programming,面向切面编程)是一种编程范式,它通过将横切关注点(如日志记录、事务管理、安全检查等)从业务逻辑代码中分离出来,实现代码的解耦和复用。
2025-03-24 20:27:54
1033
原创 SpringBoot的启动流程
Spring Boot 的启动流程包括创建实例、加载配置文件、初始化 Spring 容器、自动配置、刷新容器、启动嵌入式服务器等步骤。这个流程使得 Spring Boot 应用程序能够快速启动并运行,同时提供高度的自动化配置和灵活性。
2025-03-24 20:13:21
648
原创 详细介绍Spring MVC的执行流程是怎么样的?
Spring MVC 是 Spring 框架的一部分,用于构建 Web 应用程序。:用户通过浏览器发送 HTTP 请求到服务器,请求首先被前端控制器 DispatcherServlet 接收。:DispatcherServlet 根据请求的 URL 和其他信息,通过 HandlerMapping 查找合适的处理器(Handler)。:找到处理器后,DispatcherServlet 使用处理器适配器 HandlerAdapter 来执行该处理器。
2025-03-24 18:44:03
472
原创 在spring中如何创建和使用bean以及xml配置文件的具体含义
创建 Bean:在 XML 配置文件中使用<bean>元素定义 Bean,指定其类和属性。使用 Bean:通过 Spring 容器的getBean方法获取 Bean 实例,并在代码中使用。XML 配置文件:包含 Bean 的定义、依赖注入和配置信息,是 Spring 容器管理 Bean 的基础。通过这种方式,可以在 Spring 中灵活地创建和使用 Bean,实现松耦合和可维护性。
2025-03-23 16:20:09
559
原创 如何在spring中创建bean
注解,Spring会自动扫描并创建Bean。通过在类或方法上添加注解来定义Bean。通过配置类中的方法返回Bean实例。在Spring的XML配置文件(如。注解启用组件扫描,自动检测带有。注解,手动定义Bean。注解的类并创建Bean。通过工厂类创建Bean。定义一个普通工厂类,通过。标签来定义Bean。在配置类的方法上添加。方法来创建Bean。
2025-03-23 16:05:22
361
原创 详细了解Spring,Springmvc,以及Springboot的区别
• Spring Boot是简化 Spring 开发的框架,提供自动化配置和快速开发能力,适用于基于 Spring 技术栈的应用开发,能快速构建独立运行的 Spring 应用。• 核心功能:提供快速开发模板,自动配置 Spring 及相关技术,减少配置,内置 Tomcat 等服务器,简化部署。• 应用场景:适用于各种 Java 应用开发,包括 Web 应用、企业级应用等,提供基础架构支持。• 开发效率:简化 Web 开发,但配置较繁琐,开发简单应用时效率不高,开发复杂应用时效率尚可。
2025-03-19 19:07:28
377
原创 有关Volatile的底层实现原理
volatile`关键字通过内存屏障和`lock`前缀指令确保了变量的内存可见性和操作的有序性,但不保证操作的原子性。在 Java 中,`volatile`关键字用于确保变量的内存可见性和操作的有序性,其底层实现主要依赖于内存屏障(Memory Barrier)和`lock`前缀指令。• 写操作:当线程写入`volatile`变量时,JVM 会在写操作后插入一个写内存屏障(Store Barrier),确保所有之前的操作都已完成,并且该写操作的结果会立即刷新到主内存。
2025-03-16 14:12:41
195
原创 序列化和反序列化是什么?
序列化(Serialization)和反序列化(Deserialization)是计算机科学中用于处理数据存储和传输的两个重要概念。它们主要用于将数据结构或对象转换为可存储或可传输的格式,以及将这些格式还原为原始数据结构或对象。
2025-03-14 10:21:18
369
原创 如何在消息队列(MQ)中保证消息的一致性
事务消息允许将消息发送与本地事务操作绑定,确保本地事务和消息发送能够一起成功或失败,从而保证数据的强一致性。:生产者在收到MQ的确认响应后,才认为消息发送成功;:MQ定时轮询准备消息的状态,如果生产者挂掉或网络异常,会通过回调接口确认事务状态。:通过独立的消息服务子系统,预存消息并管理消息状态,确保消息的可靠传递。:根据本地事务的执行结果,生产者向MQ发送确认消息(提交)或回滚消息。:消费者在处理失败时,MQ会根据预设策略重试消息,直到成功。:将消息存储到持久化介质(如磁盘),确保消息在故障后可恢复。
2025-03-14 10:18:32
680
【Redis持久化机制】基于RDB的配置与优化:实验报告及实践结果分析
2025-04-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人