RAG 实践指南:使用Ollama与RagFlow构建本地知识库

RAG 实践指南:使用Ollama与RagFlow构建本地知识库

前言

上一篇文章我们介绍了如何利用 Ollama+AnythingLLM 来实践 RAG ,在本地部署一个知识库。借助大模型和 RAG 技术让我可以与本地私有的知识库文件实现自然语言的交互。

本文我们介绍另一种实现方式:利用 Ollama+RagFlow 来实现,其中 Ollama 中使用的模型仍然是Qwen2

我们再来回顾一下 RAG 常见的应用架构

www.zeeklog.com  - RAG 实践指南:使用Ollama与RagFlow构建本地知识库

RagFlow的安装和部署

前置条件

  • CPU >= 4 核
  • RAM >= 16 GB
  • Disk >= 50 GB
  • Docker >= 24.0.0 & Docker Compose >= v2.26.1

安装

克隆仓库

$ git clone https://github.com/infiniflow/ragflow.git

进入 docker 文件夹,利用提前编译好的 Docker 镜像启动服务器:

$ cd ragflow/docker
$ chmod +x ./entrypoint.sh
$ docker compose -f docker-compose-CN.yml up -d

这一步注意docker 下载的镜像比较大,要留有足够的存储空间,我这边观察下载了约 10 个 G 左右。

服务器启动成功后再次确认服务器状态:

$ docker logs -f ragflow-server

www.zeeklog.com  - RAG 实践指南:使用Ollama与RagFlow构建本地知识库

这里注意,安装完成后并不是要进入 下面两个地址

而是要进入:t:80 先注册账号,是下面这个页面

www.zeeklog.com  - RAG 实践指南:使用Ollama与RagFlow构建本地知识库

注册登录

在上图的界面中注册,然后登录就来到下面这个页面了

www.zeeklog.com  - RAG 实践指南:使用Ollama与RagFlow构建本地知识库

配置 Ollama 连接大模型

如下图我们先配置模型,点击右上角头像,再点击模型提供商

www.zeeklog.com  - RAG 实践指南:使用Ollama与RagFlow构建本地知识库

这里我是想连接我本地已经安装部署好的 Ollama ,通过 Ollama 我安装了 Qwen2 大模型,具体的安装步骤在之前的那篇文章里,有需要的可以移步到那里看。

打开Ollama 后, 我是通过服务器模式启动的大模型

ollama serve

当然你也可以选择其他平台和其他模型,需要提供 API key,API key 的获取就去你所选模型的网站,现在有很多模型的 API 是有免费额度的。

www.zeeklog.com  - RAG 实践指南:使用Ollama与RagFlow构建本地知识库

接着我们在 RagFlow 中配置模型,注意由于 RagFlow 我是在 docker 中安装的,所以请求本地部署的 Ollama 地址要用 :

www.zeeklog.com  - RAG 实践指南:使用Ollama与RagFlow构建本地知识库

创建知识库

接下来我们就可以创建知识库了

www.zeeklog.com  - RAG 实践指南:使用Ollama与RagFlow构建本地知识库

注意这里的文件类型没有 markdown,但我实测 markdown 是可以的。其他的选项,根据你的情况自行设置就好,很简单。

接下来就是上传你的文件了,也比较简单,但我发现上传后文件处理的比较慢,应该是我电脑配置的原因

www.zeeklog.com  - RAG 实践指南:使用Ollama与RagFlow构建本地知识库

文件上传并处理完成后,可以通过检索测试看一下文件有没有被正确检索。

至此,如果你上传完成全部的文件,知识库就算创建完毕了。

聊天

接着就到了展示成果的时候了,我们可以根据自己的知识库与模型进行自然语言交互了。

首先注意,在聊天配置中要把 token 设置的大一些,不然回复的内容会很少!我这里把它拉到最大值了。

www.zeeklog.com  - RAG 实践指南:使用Ollama与RagFlow构建本地知识库

展示一下成果:

www.zeeklog.com  - RAG 实践指南:使用Ollama与RagFlow构建本地知识库

我觉得还算满意。但是由于我笔记本配置一般,也没有显卡支持,所以跑的很慢,真的很慢。但如果部署在有 GPU 的服务器上,企业私有化部署供内部使用,应该会比较快的。

www.zeeklog.com  - RAG 实践指南:使用Ollama与RagFlow构建本地知识库

思考

我这里的例子是用个人笔记本电脑上的资料做的个人知识库,对于文档的提问,无论是围绕着摘要总结来做,还是围绕着全文检索,答案看起来还行,也基本能用。但是这是面向个人的或者说面向 C 端 ,如果面向 B 端面向企业单靠向量检索就力不从心了,一来无法对精确信息召回,二来无法与企业内部信息系统集成(大量结构化数据)。所以必须在检索阶段引入多路召回和重排序,保证数据查询的准确度。

企业内部的数据包含各种格式,更复杂的还包含各类图表等,如果在没有理解这些语义的基础之上直接提供 RAG 方案,例如简单的根据文字空白就来切分段落,就会导致语义丢失从而让最终查询的结果也是混乱不堪。

如果解决这个问题呢,除了之前说的多路召回(多跳)和重排序这种方案,目前业界还有其他思路,比如 infiniFlow提出的 Infinity AI原生数据库

www.zeeklog.com  - RAG 实践指南:使用Ollama与RagFlow构建本地知识库

从上图可以看到,AI原生数据库 不仅涵盖非结构化的内容如文档和图片,也包括结构化的信息系统。对这些信息进行有效整合,并在此基础上实现多路召回机制和最终的融合排序解决方案。

www.zeeklog.com  - RAG 实践指南:使用Ollama与RagFlow构建本地知识库

此外,很多AI 产品的上下文现在是越来越长,可能有人会说现在上下文都这么长了,还用得着 RAG 吗?我认为,RAG在知识库问答场景依然是非常必要的。LLM 的长上下文能力,对于 RAG 来说应该是很大的促进。用 OpenAI 联创 Andrej Karpathy 的一张图做个类比,他把 LLM 比喻为一台计算机的 CPU, 把上下文类比为计算机的内存,那么以向量为代表的数据库,就可以看作是这台计算机的硬盘

www.zeeklog.com  - RAG 实践指南:使用Ollama与RagFlow构建本地知识库

显然你不可能买一台只有内存的电脑。内存可以很大,但也意味着很贵,并且短时间内替代不了硬盘的作用。

最后是准确性问题,关于这个问题一般有两个方向的解决思路,一种是从 RAG 下手,比如做 Embedding 模型的微调。一种是从 LLM 下手,做 LLM 微调。虽然两种我都没真正做过,但从研读的资料上得知RAG系统在实时性和成本方面相较于LLM微调具有优势,因此更受青睐。这点跟我的直觉一致。

www.zeeklog.com  - RAG 实践指南:使用Ollama与RagFlow构建本地知识库

如何学习AI大模型?

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

www.zeeklog.com  - RAG 实践指南:使用Ollama与RagFlow构建本地知识库

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

www.zeeklog.com  - RAG 实践指南:使用Ollama与RagFlow构建本地知识库

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

www.zeeklog.com  - RAG 实践指南:使用Ollama与RagFlow构建本地知识库
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

www.zeeklog.com  - RAG 实践指南:使用Ollama与RagFlow构建本地知识库

Read more

基于FPGA的北斗导航自适应抗干扰算法的设计与实现(任务书+开题报告+文献综述+代码+仿真+实物+毕业论文)

基于FPGA的北斗导航自适应抗干扰算法的设计与实现(任务书+开题报告+文献综述+代码+仿真+实物+毕业论文)

摘   要 如今,随着卫星导航技术的飞速发展,位置信息服务已经融入到我们的日常生活中,导航目前被称为继移动互联网后第三大产业。卫星导航在维护国家的安全中也发挥着不可替代的作用。为了使导航系统不受干扰的影响,本文以北斗导航系统为平台,研究基于阵列天线的自适应抗干扰算法。 首先,文章就自适应抗干扰算法的原理和方法进行了系统介绍,并在MATLAB中建立阵列模型,对基于功率倒置算法的空域抗干扰算法和空时联合抗干扰算法进行性能仿真。然后根据系统的指标,确定了在FPGA中实现抗干扰算法的方案,包括数字下变频、权值计算、数据加权、数字上变频等模块。根据权值计算模块实现方式的不同,本文提供了两种抗干扰算法在FPGA中实现的方案:一种是基于FPGA嵌入式软核NIOS II的抗干扰实现,将权值计算的过程放在NIOS II软核中,用C语言进行实现;另一种是基于逻辑语言的抗干扰算法的实现,即用硬件描述语言Verilog HDL进行权值的计算。权值计算涉及到浮点数运算和Hermite矩阵求逆,本文给出了各模块的设计方法和仿真结果,并与MATLAB仿真结果进行对比。最后给出了两种实现方案的实测结果,表明两种实

FPGA 工程师到底有哪些方向?每个岗位都在干什么?一篇给你讲清楚

FPGA 工程师到底有哪些方向?每个岗位都在干什么?一篇给你讲清楚

很多人说“学 FPGA 就是写 Verilog”,但真正进了行业才发现—— FPGA 工程师并不是一个岗位,而是一整个岗位族群。 不同公司、不同项目,对 FPGA 工程师的要求差异非常大。 如果方向选错,可能学了半年发现岗位根本不对口。 这篇文章就系统地给你拆一拆: 👉 FPGA 工程师到底有哪些岗位? 👉 每个岗位具体干什么? 👉 需要掌握哪些能力? 👉 适合什么样的人? 一、FPGA 工程师整体岗位划分(先给结论) 从企业招聘角度来看,FPGA 岗位大致可以分为 6 类: 岗位方向关键词偏向FPGA 逻辑设计工程师Verilog / 时序 / 接口核心开发FPGA 算法 / 加速工程师图像 / AI / DSP算法落地FPGA 底层驱动工程师DDR / PCIe / SerDes硬件接口FPGA 系统应用工程师Linux + FPGA系统集成FPGA 验证 / 测试仿真 / 验证质量保障FPGA 技术支持 / FA客户 / 项目支持应用型

OpenClaw-多飞书机器人与多Agent团队实战复盘

OpenClaw-多飞书机器人与多Agent团队实战复盘

OpenClaw 多飞书机器人与多 Agent 团队实战复盘 这篇文章完整记录一次从单机安装到多机器人协作落地的真实过程: 包括 Windows 安装报错、Gateway 连通、模型切换、Feishu 配对、多 Agent 路由、身份错位修复,以及最终形成“产品-开发-测试-评审-文档-运维”团队。 一、目标与结果 这次实践的目标很明确: 1. 在 Windows 上稳定跑通 OpenClaw 2. 接入飞书机器人 3. 做到一个机器人对应一个 Agent 角色 4. 支持多模型并行(OpenAI + Ollama) 5. 最终形成可执行的多 Agent 团队 最终落地状态(已验证): * 渠道:Feishu 多账号在线 * 路由:按 accountId

宇树 G1 机器人开发入门:有线 & 无线连接完整指南

宇树 G1 机器人开发入门:有线 & 无线连接完整指南

适用读者:机器人二次开发者、科研人员 开发环境:Ubuntu 20.04(推荐) 机器人型号:Unitree G1 EDU+ 前言 宇树 G1 是一款面向科研与商业应用的高性能人形机器人,支持丰富的二次开发接口。在正式进行算法调试与功能开发之前,首要任务是建立稳定的开发连接。本文将详细介绍两种主流连接方式:有线(网线直连) 与 无线(WiFi + SSH),并附上完整的配置流程,帮助开发者快速上手。 一、有线连接(推荐新手优先使用) 有线连接通过网线直接将开发电脑与 G1 机器人相连,具有延迟低、稳定性高、不依赖外部网络的优势,是新手入门和底层调试的首选方式。 1.1 前置条件 所需物品说明开发电脑推荐安装 Ubuntu 20.04,或在 Windows 上使用虚拟机宇树 G1 机器人确保已开机且处于正常状态网线(