![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
人工智能
文章平均质量分 95
介绍人工智能最新实践
易迟
人工智能从业者,持续关注人工智能最新实践
展开
-
深入源码,洞察迭代 8 年的 html 文本转换库
在前面RAG 项目结构化文件解析方案比较文章中对常见的 html 解析方案进行了比较,发现 html_text + python-readability 可以实现高质量的 html 内容提取。在前一篇文章迭代 14 年的高质量 html 提取方案中对 python-readability 库进行了介绍,这篇文章就对剩下的html_text库进行介绍。忽略内联样式、javascript、注释和其他用户通常不可见的文本;空白内容标准化,在内联元素周围添加空格分隔内容;原创 2024-08-26 09:19:25 · 449 阅读 · 0 评论 -
深入源码,洞察迭代 14 年的高质量 html 提取方案
在大模型时代,开源项目的生命周期被加速了,往往迭代速度很快,但是热门项目也容易突然就无疾而终了。最近看到一款历经 14 年的开源 html 内容提取项目,从最早建立到目前,已经迭代了 14 年。本文是在实际项目中使用 python-readability 之后,发现一些异常 case,因此深入源码了解其中的技术细节,因此在本文中对这款跨越 14 年的开源项目的技术细节进行了解读。在之前的RAG 项目结构化文件解析方案比较。原创 2024-08-26 07:39:20 · 551 阅读 · 0 评论 -
Dify框架增强:RAG 能力提升探索与实践
在之前的文章来自工业界的开源知识库 RAG 项目最全细节对比中介绍过,现有 RAG 开源项目中,Dify 的生态良好,但是一个明显的短板就是 RAG 检索能力偏弱。因此一直期望能补全这个短板,从而让 Dify 能真正好用起来。在基于开源项目二次开发建议方案探索了 Dify 的增强策略。实际选择了文章中提到的中策,基于模块化增强 Dify。Dify 的 RAG 已经支持了大量的 RAG 基础能力与可视化页面,如果通过额外的插件拓展支持,那么现有的 RAG 基础流程无法复用,开发的工作量太大。原创 2024-08-14 15:12:56 · 1041 阅读 · 0 评论 -
深入 Dify 源码,洞察 Dify RAG 切片机制实现细节
最近测试时发现 Dify 的 RAG 分片效果一般,不管是使用之前深入 Dify 源码,洞察 Dify RAG 核心机制中有调研过的默认解析还是 Unstructured 解析。因此调研比较了大量的开源框架实现了特定格式的结构化解析方案,并与 Dify 现有解析流程进行了适配。为了保证文件的解析能真正发挥出效果,需要保证预处理中其他环节也遵循前面的结构化方案进行处理,其中重要的一块就是文本的分片机制。深入了解 Dify 的实现细节后整理相关内容在这边,方便对 Dify RAG 实现机制感兴趣的同学。原创 2024-08-06 16:26:01 · 787 阅读 · 0 评论 -
来自工业界的开源知识库 RAG 项目结构化文件解析方案比较
在过去实践 RAG 的过程中,深刻体会到RAGFlow提出的, 只有高质量的文件处理才能获得良好的 RAG 效果。RAG 的第一步是对文件进行解析,由于 Embedding 和 LLM 模型的长度限制,往往需要将解析后的文件进行切片。原始的 RAG 就是直接按照固定长度对文件进行切分,导致最终检索到的内容都是碎片化的,效果往往不佳。因此后续的改进期望能按照文件的结构进行切分,保证分块信息的完整性,这就是所谓的。原创 2024-08-01 15:59:01 · 986 阅读 · 0 评论 -
FATE Flow 源码解析 - 日志输出机制
在之前的文章中介绍了 FATE 的作业处理流程,在实际的使用过程中,为了查找执行中的异常,需要借助运行生成的日志,但是 FATE-Flow 包含的流程比较复杂,对应的日志也很多,而且分散在不同的文件中,在这篇文章中就对 FATE-Flow 的日志机制进行梳理,帮助大家了解 Python 服务中实现一个更加灵活的日志机制。原创 2024-07-17 20:39:04 · 1032 阅读 · 0 评论 -
深入 Dify 源码,洞察 Dify RAG 核心机制
之前深入源码对 Dify 的完整流程进行了解读,基本上梳理了 Dify 的实现流程与主要组件。但是在实际部署之后,发现 Dify 现有的 RAG 检索效果没有那么理想。因此个人结合前端页面,配置信息与实现流程,深入查看了私有化部署的 Dify 的技术细节。将核心内容整理在这边,方便大家根据实际的业务场景调整 Dify 知识库的配置,或者根据需要进行二次开发调优。原创 2024-07-17 18:14:04 · 2417 阅读 · 0 评论 -
FATE Flow 源码解析 - 资源分配流程
在上一篇文章中介绍了 FATE 的作业处理流程,对于资源管理没有深入介绍,本篇文章就是来补充相关细节。众所周知,FATE 是一个联邦学习框架,涉及了多个参与方(FATE 中叫站点)进行模型的训练,而各个参与方的训练过程都需要使用 CPU 资源和内存资源,因此在作业执行前需要提前先申请好必要的资源,才能避免在执行中避免因为资源不足而导致执行失败。而 FATE 中单个作业会包含多个任务,每个任务需要独立使用一定量的资源,因此任务会有独立的资源申请与释放资源的流程。原创 2024-07-15 20:43:22 · 774 阅读 · 0 评论 -
深入 Dify 源码,定位知识库检索的大模型调用异常
之前在 GPU 服务器上部署了Dify 服务,使用的是 Dify 与 Xinference 组合,Xinference 部署的大模型是。基于本地部署的服务构建了知识库,并利用首页提供的任务流模板创建了一个 RAG 工作流知识库检索环节预期不需要调用大模型,实际却调用了大模型;本地没有配置 GPT3.5, 为什么会选择 GPT3.5 模型;这篇文章就从问题出发,借助源码与对应的服务 API 请求信息,定位问题的根本原因。从本轮的追踪来看,知识库检索选择N选1召回。原创 2024-07-15 07:53:23 · 1481 阅读 · 1 评论 -
Dify 与 Xinference 最佳组合 GPU 环境部署全流程
在前一篇文章RAG 项目对比之后,确定 Dify 目前最合适的 RAG 框架。本次就尝试在本地 GPU 设备上部署 Dify 服务。Dify 是将模型的加载独立出去的,因此需要选择合适的模型加载框架。调研一番之后选择了Xinference支持多种类型的模型,包括 LLM,Embedding, Rerank, Audio 等多种业务场景的模型需求,一个框架全搞定;方便的模型管理能力,提供可视化页面快速部署模型支持直接从 ModelScope 下载模型,避免 huggingface 被墙的问题;原创 2024-07-11 20:46:38 · 2277 阅读 · 0 评论 -
深入探索联邦学习框架 Flower
通过上面的内容,将 Flower 框架的动手实践以及对应的实现细节都介绍到了,主要涉及到 Flower 三大核心组件中的 Strategy 与 FL loop,而 ClientManager 目前没有过多展开,这部分主要用于管理客户端的连接,有兴趣的可以自行去探索下。从目前来看,Flower 基本上是一个最精简的横向联邦学习的实现方案了,通过必要的抽象简化,Flower 将横向联邦用简单易用的方式进行了封装,对于了解横向联邦学习有很大的帮助。原创 2024-07-09 20:40:19 · 1292 阅读 · 0 评论 -
来自工业界的开源知识库 RAG 项目最全细节对比
有道 QAnythingRAGFlow中科院 GoMateDifyFastGPT群里一直看到有小伙伴询问在实际的业务需求中如何选择合适的 RAG 项目,本文就详细对比一下这些 RAG 项目。考虑到目前实际发展程度,GoMate 目前的可靠性还不适合在生产环境使用。因此主要对比其他几个更成熟的热门开源项目。如果只关心技术选项结论,可以直接跳到最后。项目Star 数量持续维护性社区活跃度代码质量版权信息QAnything10.6k⭐️⭐️⭐️⭐️⭐️⭐️Apache-2.0RAGFlow。原创 2024-07-09 13:56:57 · 2480 阅读 · 1 评论 -
官方技术文档查询大模型:快速搭建与实践记录
在过去使用大模型的过程中,感受到大模型能力的持续提升。但是作为程序员,在基于不熟悉的框架开发新功能时,依旧需要持续查询官方文档。而大模型对特定框架的使用细节所知甚少,因此可能给出的回答不够准确。比如之前在快速搭建量化交易平台时因为不熟悉相关框架就需要反复查看Dash和backtrader的官方文档寻找解决方案,这部分工作需要花费不少时间。事实上单个项目的技术框架选型完成后就会稳定下来,因此是否可以直接基于框架的官方文档进行知识库问答。这样就可以避免重复的查询文档,节省时间。原创 2024-07-08 11:09:27 · 870 阅读 · 0 评论 -
一款纯 js 实现的大模型应用服务 FastGPT 解读
最近被不同的人安利了FastGPT项目,实际上手体验了一下,使用流程类似之前调研过的Dify, 包含的功能主要是:任务流的编排,知识库管理,另外还有一些外部工具的调用能力。使用页面如下所示:实际去看了下项目的代码分布,结果发现如下所示:难道后端 Python 只需要如此少的代码量就可以实现一个大模型应用了?深入了解了 FastGPT 的实现,发现其 Python 为测试代码,完整的项目实现都是基于前端语言 ts 和 js 实现。这篇文章就主要介绍下 FastGPT 知识库 RAG 设计的实现细节。原创 2024-07-05 10:10:36 · 1426 阅读 · 0 评论 -
Github 上 Star 数最多的大模型应用基础服务 Dify 深度解读(一)
接触过大模型应用开发的研发同学应该都或多或少地听过 Dify 这个大模型应用基础服务,这个项目自从 2023 年上线以来,截止目前(2024-6)已经获得了 35k 多的 star,是目前大模型应用基础服务中最热门的项目之一。这篇文章对 Dify 中核心的基础模块 RAG 服务进行深入解读,后续可能会更新其他模块的内容。Dify 是一个LLMOps服务, 涵盖了大语言模型(如GPT系列)开发、部署、维护和优化的一整套实践和流程。可以大幅简化大模型应用的开发。原创 2024-07-01 14:07:27 · 2303 阅读 · 0 评论 -
来自工业界的知识库 RAG 服务(五),模块化知识库 GoMate 实现方案详解
很早以前就看过一篇介绍 RAG 的综述性文章, 其中介绍了 RAG 的模块化架构:但是一直没有看到对应的实现方案,以前也没有理解此框架的优势之处。随着在相关领域的持续实践,逐渐理解到模块化 RAG 的优势。模块化 RAG 可以方便地进行服务的迭代升级,另外模块可以自由组合,灵活性更好。最近注意到来自中科院的 RAG 服务GoMate开源了,核心亮点就是模块化 RAG 设计,本文就深入介绍来 GoMate 的框架设计与实现细节。原创 2024-06-24 23:50:53 · 1196 阅读 · 2 评论 -
从 0 打造私有知识库 RAG Benchmark 完整实践
最近从 0 构建了一个大模型知识库 RAG 服务的自动化 Benchmark 评估服务,可以基于私有知识库对 RAG 服务进行批量自动化测试与评估。本文是对这个过程的详细记录。本文实际构建的是医疗行业知识库,基于高质量的医学指南和专家共识进行构建。而实际的问答对也基础知识库已有文档生成,避免参考源不存在导致的大模型幻觉,可以更加客观反映 RAG 服务的能力。当然整体的构建流程是与行业无关的,可以参考构建其他的测评知识库。原创 2024-06-19 13:11:56 · 772 阅读 · 0 评论 -
来自工业界的知识库 RAG 服务(四),FinGLM 竞赛冠军项目详解
在前一篇文章中介绍过智谱组织的一个金融大模型 RAG 比赛FinGLM以及 ChatGLM反卷总局 团队的项目,这篇文章继续介绍下获得冠军的馒头科技的技术方案。建议不了解比赛背景信息的可以先查看来自工业界的知识库 RAG 服务(三),FinGLM 竞赛获奖项目详解,方便更好地理解技术方案的设计。本文主要整理了 FinGLM 获得冠军的团队提供的方案,从处理流程来看,亮点不是特别突出,最终表现良好与其精细的问题分类以及有针对性的微调模型应该有不少的关系。原创 2024-06-17 13:00:55 · 1106 阅读 · 0 评论 -
来自工业界的知识库 RAG 服务(三),FinGLM 竞赛获奖项目详解
前面介绍过工业界的 RAG 服务QAnything和RagFlow的详细设计,也介绍过来自学术界的一些优化手段。前一阵子刚好看到智谱组织的一个金融大模型比赛FinGLM,主要做就是 RAG 服务的竞赛,深入研究了其中的几个获奖作品,感觉还是有不少亮点。整理一些获奖项目的设计方案,希望对大家有所启发。FinGLM是基于一定数量的上市公司财报构建知识库,使用 ChatGLM-6B 作为大模型完成知识库问答。原创 2024-06-06 14:50:05 · 964 阅读 · 0 评论 -
来自学术界的知识库 RAG 调优方案实践(一)
在之前的文章详细梳理过工业界的 RAG 方案QAnything和RagFlow,这次主要整理下来自学术界的一系列 RAG 优化方案。主要关注优化方案对应的设计思想以及相关的实现,希望可以对大家的 RAG 服务效果提升有所帮助。在综述论文Native RAG: 原始 RAG 架构,对应最原始的 RAG 流程,和之前搭建离线私有大模型知识库介绍的流程基本一致;Advanced RAG:高级 RAG 架构,在原始 RAG 上增加了一些优化手段,之前实践过的RAG Rerank。原创 2024-05-28 17:44:42 · 1240 阅读 · 0 评论 -
来自工业界的知识库 RAG 服务(二),RagFlow 源码全流程深度解析
前面介绍过有道 QAnything 源码解析,通过深入了解工业界的知识库 RAG 服务,得到了不少调优 RAG 服务的新想法。因此本次趁热打铁,额外花费一点时间,深入研究了另一个火热的开源 RAG 服务RagFlow的完整实现流程,希望同样有所收获。首先依旧可以先从框架图入手,与常规的 RAG 架构进行一些比较可以看到右侧知识库被明显放大,同时最右侧详细介绍了文件解析的各种手段,比如OCR等,这些在常规的 RAG 中可能会作为一个不起眼的。原创 2024-05-24 11:15:16 · 4091 阅读 · 3 评论 -
来自工业界的大模型知识库 RAG 服务,有道 QAnything 源码全流程深度解析
之前在做大模型知识库 RAG 优化时,主要参考的都是学术界的论文。最近了解到有道 QAnything 开源了,在线试用之后,效果看起来还不错,燃起了探索其实现细节的兴趣。正好对于 RAG 各个环节的最佳实践存在一些疑问,因此深入查看了有道 QAnything 的完整实现流程,学习下来自工业界大厂有道的实践方案,在这边分享给大家。本文章基于的是 2024-5 月最新的版本v1.4.0,这个项目还在持续迭代中,后续的版本可能会存在差异。首先可以关注下 QAnything 的架构设计,与常规的 RAG 架构。原创 2024-05-23 10:03:55 · 1612 阅读 · 1 评论 -
程序员的福音,AI 项目生成 GPT Engineer 实践与源码解析
是一个基于需求描述自动生成项目源码的开源项目,主打轻量,灵活生成项目源码,可以在 AI 生成与人工生成之间进行切换,底层是基于 GPT-4 对应的编程能力,目前 Github 上 star 数量已经达到了 50k,算是一个十分火热的 AI 项目。与大热的AutoGPT相比,GPT Engineer 更加轻量,没有使用递归的请求调用,避免陷入反复请求的死循环。同时 GPT Engineer 更加侧重代码生成,因此 prompt 上针对代码生成上做了针对性的优化。原创 2024-05-21 09:10:59 · 1232 阅读 · 2 评论 -
人 GPT 协作,两周从 0 手撸一个量化交易回测平台
掌握技能最快的方法就是用技能创造产品,前一阵子对 GPT 辅助编程与项目生成做过较多的调研,但是一直处于试水阶段,没能发挥出 GPT 辅助编程的能力。本次从新领域入手,借助 GPT 的力量,从 0 手撸一个量化交易回测平台,从这个过程看看 GPT 辅助编程到底有多强,能多大程度帮助程序员,是否有可能替代程序员。文章本来是希望介绍量化交易回测工具的从 0 手撸的实现过程,但是实际想想,授人予鱼不如授人予渔,单个量化交易回测工具作用有限,但是如果用好了 GPT 工具,只需要花上一丢丢时间,你也能创造一个。原创 2024-05-20 08:49:09 · 1200 阅读 · 0 评论 -
从 0 手撸一个 pytorch
最近抽空看了下 Andrej Karpathy 的视频教程,教程的质量很高。教程不需要任何前置机器学习基础,只需要有高中水平的数学基础即可。整个教程从 0 到 1 手撸了一个类 pytorch 的机器学习库micrograd,核心代码不到 100 行。虽然为了简化没有实现复杂的矩阵运算,但是对于理解 pytorch 的设计思想有很大帮助。通过上面的流程可以很容易理解机器学习模型训练框架的设计方案,这一套流程也完全适用于 pytorch,可以帮助更好地理解 pytorch 的训练流程。原创 2024-05-19 10:07:18 · 1319 阅读 · 0 评论 -
难以训练的深度学习
深度学习的威力众所周知,但其模型训练过程常伴随着繁琐的挑战。许多人在深度学习的实践中都曾遇到过各种问题,这些问题使得理想模型的训练变得更加复杂。梯度消失与梯度爆炸收敛速度缓慢过拟合本文总结了深度学习训练过程中常见的几种问题以及常规的解决方案,并通过实践动手定位深度学习问题,同时可以看到解决方案带来的效果改善。本文希望帮助大家建立对深度学习的直观了解,并为深度学习模型的训练提供参考。深度学习是一门持续发展的学科,正是建立在很多人的研究基础上,深度学习才得以持续发展。原创 2024-05-19 10:00:22 · 1086 阅读 · 0 评论 -
一种与众不同的知识库 RAG 架构探索
在设计检索增强生成 (RAG) 架构时,目前常规的技术方案是基于 LangChain + Faiss 的架构。这样的架构好处很明显,基于 LangChain 框架可以快速接入大模型,并可以充分利用 LangChain 内置的各个环节的处理能力,利用 Faiss 可以支持离线的向量库构建,简单方便。Faiss 原生的框架可能存在一些薄弱之处,之前的向量数据库 Faiss 的实践与增强探索也有探索过对应的增强手段。原创 2024-05-19 09:48:53 · 865 阅读 · 0 评论 -
从开发到部署,搭建离线私有大模型知识库
最近一段时间搭建了一套完整的私有大模型知识库,目前完整的服务已经完成测试部署上线。基本之前的实践过程,从工程角度整理技术方案以及中间碰到的一些问题,方便后续对这个方向有需求的研发同学们。本文是搭建离线私有大模型知识库的一次完整实践,整理了主要的实现方案以及离线部署中碰到的一些问题,记录的版本还是一个初步验证版本,知识库的实践还需要对中间环节进行大量调优,目前存在大量的论文进行这方面的研究,个人也在持续进行多轮的迭代调优,后续会持续整理和分享中间碰到的有价值的内容,欢迎持续关注。原创 2024-05-18 17:16:50 · 1036 阅读 · 0 评论 -
向量数据库 Faiss 的实践与增强探索
在构建大模型知识库,即检索增强生成 (RAG) 服务时,中间存在一个核心环节就是向量化搜索,如果不希望引入第三方的向量数据库,那么开源的 Faiss 就是一个不错的选择。Faiss 是 FaceBook 提供的开源向量库搜索库,在Github上已经有 28.1k star,相对成熟而且使用方便。之前构建的 RAG 服务使用的就是 Faiss 提供的向量化搜索服务,Faiss 功能强大,上手简单。但是在实际产品化的过程中发现了不少不足,在实践过程中进行了必要的迭代增强,本文就是对这个过程的记录。原创 2024-05-18 17:35:56 · 1231 阅读 · 2 评论