快速构建本地RAG聊天机器人:使用LangFlow和Ollama实现无代码开发
基于LangChain的快速RAG应用原型制作方法
还记得构建智能聊天机器人需要数月编码的日子吗?
LangChain这样的框架确实简化了开发流程,但对非程序员来说,数百行代码仍然是一道门槛。
有没有更简单的方法呢?
图片由 Ravi Palwe 在 Unsplash 提供
这时我发现了“Lang Flow”,一个基于Python版本LangChain的开源包。它让你无需编写一行代码就能创建AI应用。它提供了一个画布,你只需拖动组件并连接它们,就能构建你的聊天机器人。
在这篇文章中,我们将使用LangFlow在几分钟内构建一个智能AI聊天机器人的原型。在后端,我们将使用Ollama进行嵌入模型和大型语言模型,这意味着应用程序可以在本地免费运行!最后,我们将这个流程转化为一个Streamlit应用,只需少量编码。
探索检索增强生成流程:LangChain、LangFlow和Ollama简介
在这个项目中,我们将构建一个人工智能聊天机器人,并命名为“Dinnerly——您的健康食谱规划师”。它的目标是借助检索增强生成(RAG)技术,从一个食谱PDF文件中推荐健康的菜肴配方。
在深入了解如何实现这一目标之前,让我们快速浏览一下项目中将要使用的关键组件。
检索增强生成(RAG)
RAG(Retrieval-Augmented Generation)通过向大型语言模型(LLMs)提供外部来源的相关信息,帮助它们提高生成响应的准确性和时效性。
RAG的工作流程通常包括以下步骤,如A Guide to Retrieval Augmented Generation中所述:
- 加载文档: 首先加载文档或数据源。
- 分割成片段: 将文档分解成可管理的部分
- 创建嵌入向量: 使用嵌入技术将这些片段转换为向量表示。
- 存储在向量数据库中: 将这些向量保存在数据库中,以便高效检索。
- 用户交互: 接收用户查询或输入,并将其转换为嵌入向量。
- 向量数据库中的语义搜索: 连接到向量数据库,根据用户的查询进行语义搜索。
- 检索并处理响应: 获取相关响应,通过LLM处理,生成答案。
- 向用户交付答案: 将LLM生成的最终输出返回给用户。
这是RAG工作流程的概述,由Han HELOIR, Ph.D. ☕️提供。
Langchain
Langchain 是一个围绕大型语言模型构建的开源框架,它促进了各种生成式AI应用的设计和开发,包括聊天机器人、摘要等。
该库的核心思想是将不同的组件“串联”起来,以简化复杂的AI任务,并围绕LLMs创建更高级的用例。
LangFlow
LangFlow 是专为LangChain设计的一款网页工具,它提供了一个用户界面,用户可以通过拖放组件来构建和测试LangChain应用,无需编写代码。
然而,为了使用LangFlow设计AI应用流程,你需要首先对LangChain的工作原理及其不同组件有基本的了解。
LangFlow界面
Ollama
Ollama 对我来说,是开源LLM(大型语言模型)中最优秀且最容易上手的方式。它支持诸如Llama 2和Mistral等强大的LLM,并且你可以在ollama.ai/library上查看可用模型的列表。
Ollama https://ollama.ai/
配置Ollama
安装Ollama
首先,访问 Ollama下载页面,选择与您操作系统匹配的版本,下载并安装。
安装好Ollama后,打开命令终端并输入以下命令。这些命令将下载模型并在您的本地机器上运行它们。
对于本项目,我们将使用Llama2作为大型语言模型(LLM),并使用“nomic-embed-text”作为嵌入模型。"Nomic-embed-text"是一个功能强大的开源嵌入模型,具有大上下文窗口。这使得我们可以在本地运行整个应用程序,而无需任何云服务!
配置LangFlow
前置条件
在开始使用LangFlow之前,确保你的计算机上已经安装了Python。Python的版本应高于3.9,但需低于3.12。
安装LangFlow
接下来,我们继续安装LangFlow。建议在虚拟环境中进行此操作。这种方法有助于在自己的空间内整洁地管理依赖项。在我的Mac上,我使用Conda来设置。只需在命令行终端中输入以下命令,创建一个名为“langflow”的虚拟环境,其中包含Python 3.11。
如果你没有Conda,也可以直接使用Python设置虚拟环境,如下所示。
安装完成后,只需在终端中输入“langflow run”即可启动LangFlow。
Langflow后端控制台。图片由作者提供。
然后,将它给出的URL(如上例中的http://127.0.0.1:7860)复制到你的网络浏览器中,搞定!你应该会看到一个类似这样的界面,显示了你的所有项目。
Langflow UI项目页面。图片由作者提供。
设计聊天机器人的流程
是时候创建你的第一个流程了!
点击“新建项目”,这将打开一个空白画布。在左侧窗格中,你会看到各种组件,可以将它们拖放到工作区。
LangFlow 画布。作者提供图片。
对于我们的项目,我们将构建一个能够从 PDF 文件中回答问题的聊天机器人。还记得我们之前提到的 RAG 管道吗?我们需要以下元素来组合它:
- PDF 加载器:我们将使用“PyPDFLoader”。你需要输入 PDF 文档的文件路径。
- 文本分割器:选择“RecursiveCharacterTextSplitter”,默认设置即可。
- 文本嵌入模型:选择“OllamaEmbeddings”来利用免费的开源嵌入。
- 向量数据库:我们选择“FAISS”来存储嵌入并支持向量搜索。
- 用于生成响应的 LLM:选择“ChatOllama”,并指定模型为“llama2”。
- 对话内存:这使聊天机器人能够保留聊天历史,有助于后续问题。我们将使用“ConversationBufferMemory”。
- 对话检索链:将 LLM、内存和检索到的文本等组件连接起来生成响应。我们选择“ConversationRetrievalChain”。
将所有这些组件拖放到画布上,并设置必要的字段,如 PDF 文件路径和 LLM 模型名称。其他设置可以保持默认。
接下来,将这些组件连接起来形成你的流程。
一旦所有组件都连接好,点击右下角的“闪电”按钮编译流程。如果一切顺利,按钮将变为绿色,表示成功。
成功编译流程后,点击“聊天机器人”图标来测试你的创作。
Langflow 聊天机器人演示。作者提供图片。
一些提示:
- 完成流程后,你可以将其保存为 JSON 文件,或在“我的收藏”中找到它,以便将来访问或编辑。
- 通过使用预建示例深入 LangFlow 可以提供很好的灵感并帮助你入门。你可以:
- 在“LangFlow Store”中找到示例,但需要 API 密钥才能访问。
- 访问 LangFlow GitHub 页面下载示例,然后使用 UI 上的“上传”按钮将它们上传到 LangFlow。 - 如果本地设置不适合你,你也可以选择使用 OpenAI 构建 RAG 管道。只需确保你有设置所需的 OpenAI API 密钥。
将流程转化为Streamlit聊天机器人
如果流程设置正确,现在是将其集成到应用程序中的时候了。在构建流程后,LangFlow提供了必要的代码片段,只需点击侧边栏中的“代码”按钮。
让我们继续将此流程集成到Streamlit聊天机器人中。
- 设置依赖项:首先,我们需要安装依赖项。
- 获取Lang Flow代码片段:创建一个新的Python文件“app.py”。返回LangFlow UI,再次找到“代码”按钮。导航到“Python API”标签,复制代码片段并粘贴到“app.py”中。
- 构建聊天功能:在同一个Python文件中,我们将定义一个专门用于聊天的函数。此函数在接收到用户的新查询时运行流程以获取响应,然后在界面上流式传输该响应。
- 创建界面:现在,我们将在同一个Python文件中构建一个简单的Streamlit用户界面。
在这里插入图片描述
运行Streamlit应用后,您就可以与自己的食谱规划师聊天了!它将帮助您创建美味健康的餐点。
Streamlit应用演示。图片由作者提供。
提示:
可以使用相同的代码和界面来测试和集成不同的流程。只需将FLOW_ID更改为要测试和集成的新流程即可。
结束语
在这篇文章中,我们创建了一个基于RAG的智能聊天机器人。我们利用LangFlow无需编码就建立了RAG管道,借助开源模型进行嵌入和LLM处理,使应用程序能在本地运行,无需推理成本。最后,我们将这个设置转化为一个Streamlit应用程序。
我特别欣赏LangFlow的无代码方式,相信它可能会改变我们构建和原型设计AI应用的方式。
然而,值得注意的是,某些组件仍在开发中,有时可能无法按预期工作。当遇到这些问题时,缺乏问题的可见性或故障排除指导。另一个改进之处可能是直接提供底层Python代码,以提供更大的定制空间。
总的来说,我认为LangFlow对于快速原型设计需求是一个有价值的工具。
如何学习大模型
现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。
作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。
我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。

一、AGI大模型系统学习路线
很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。
二、AI大模型视频教程
三、AI大模型各大学习书籍
四、AI大模型各大场景实战案例
五、结束语
学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。
再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。
因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。
相关文章:

快速构建本地RAG聊天机器人:使用LangFlow和Ollama实现无代码开发
基于LangChain的快速RAG应用原型制作方法 还记得构建智能聊天机器人需要数月编码的日子吗? LangChain这样的框架确实简化了开发流程,但对非程序员来说,数百行代码仍然是一道门槛。 有没有更简单的方法呢? 图片由 Ravi Palwe 在…...

关于使用pycharm中控制台运行代码错误之FileNotFoundError: [Errno 2] No such file or directory:
在使用pycharm环境下复现《python编程:从入门到实践》这本书第16.1.1内容中分析csv文件头一节的代码时出现如下问题: 1、文章中使用的数据来源问题 直接参考本站Kenny C同学的文章提供内容即可。 https://github.com/kenidi8215/Hello-World 打开网页&a…...

【SpringBoot】深入分析 SpringApplication 源码:彻底理解 SpringBoot 启动流程
在黄昏的余晖里,梦境渐浓,如烟如雾。心随星辰,徜徉远方,岁月静好,愿如此刻般绵长。 文章目录 前言一、SpringBoot 应用二、SpringApplication2.1 SpringApplication 中的属性2.2 SpringApplication 的构造器2.3 Sprin…...

边界内聚和耦合
内聚 功能内聚 功能内聚是软件工程中一个重要的概念,它描述了一个模块内部各个元素之间的紧密程度。一个具有高功能内聚的模块意味着其内部的各个组件都共同完成一个具体的、明确的功能,并且这些组件之间的联系不是偶然的,而是因为它们共同服…...

单调栈——AcWing.830单调栈
单调栈 定义 单调栈是一种特殊的数据结构,栈内元素保持某种单调性(通常是单调递增或单调递减)。 运用情况 求解下一个更大元素或下一个更小元素。计算每个元素左边或右边第一个比它大或小的元素。 注意事项 要明确单调栈是递增还是递减…...

手机上安装AI模型是一种什么体验?
昨天参加微软的AI DAY活动,看到微软的技术大佬分享了一个场景,就是坐飞机从上海到北京,机长广播因为天气原因,飞机需要盲降,他说当时听到盲降第一反应感觉有点恐慌,但是因为飞机上受限于网络环境࿰…...

【MySQL】主从复制
https://www.bilibili.com/video/BV1Kr4y1i7ru/?p161 https://blog.csdn.net/qq_47959003/article/details/126058710 主从复制是指将数据库的DDL和DML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做)&…...

vscode插件开发之 - menu配置
上一遍博客介绍了如何从0到1搭建vscode插件开发的base code,这遍博客将重点介绍如何配置menu。通常,开发一款插件,会将插件显示在VSCode 左侧的活动栏(Activity Bar),那么如何配置让插件显示在Activity Bar…...

自学C语言-9
** 第9章 函数 ** 大型程序一般会被分为若干个程序模块,每个模块实现一个特定功能 。C语言中,由函数实现子程序,由子程序实现模块功能。本章致力于使读者了解函数的概念,掌握函数的定义及调用方式;了解内部函数和外部…...

NVIDIA Triton系列01-应用概论
NVIDIA Triton系列01-应用概论 推理识别是人工智能最重要的落地应用,其他与深度学习相关的数据收集、标注、模型训练等工作,都是为了得到更好的最终推理性能与效果。 几乎每一种深度学习框架都能执行个别的推理工作,包括 Tensorflow、Pytorc…...

LIMS(实验室)信息管理系统源码、有哪些应用领域?采用C# ASP.NET dotnet 3.5 开发的一套实验室信息系统源码
LIMS(实验室)信息管理系统源码、有哪些应用领域?采用C# ASP.NET dotnet 3.5 开发的一套实验室信息系统源码 LIMS实验室信息管理系统,是一种基于计算机硬件和数据库技术,集多个功能模块为一体的信息管理系统。该系统主…...

Web前端进国企:挑战与机遇并存
Web前端进国企:挑战与机遇并存 随着互联网的飞速发展,Web前端技术已经成为企业信息化建设的重要组成部分。对于许多热衷于前端技术的年轻人来说,进入国企工作既是一种挑战,也是一种机遇。本文将从四个方面、五个方面、六个方面和…...

快速上手SpringBoot
黑马程序员Spring Boot2 文章目录 1、SpringBoot 入门程序开发1.1 创建一个新的项目 2、浅谈入门程序工作原理2.1 parent2.2 starter2.3 引导类2.4 内嵌tomcat 1、SpringBoot 入门程序开发 1.1 创建一个新的项目 file > new > project > empty Project 创建新模块&a…...

SQL 快速参考
SQL 快速参考 SQL(Structured Query Language)是一种用于管理关系数据库管理系统(RDBMS)的标准编程语言。它用于执行各种操作,如查询、更新、插入和删除数据库中的数据。本快速参考将提供SQL的基本语法和常用命令&…...

Cask ‘oraclexxx‘ is unavailable: No Cask with this name exists.
brew search oracle-jdk或brew search --cask oracle-jdk 原因:Homebrew官方仓库不再维护多个旧版本的OracleJDK 不推荐使用Homebrew环境安装JDK //指定版本安装 brew install --cask temurin17 //设置 JAVA_HOME 环境变量 //找到安装的JDK 版本的路径 /usr/lib…...

2024年武汉市中级、高级职称水测考试开卷方法分享
2024年武汉市(除开东湖高新区外)职称首次组织全员水测,先考水测后报名,水测报名在5月16号截止。 武汉市水测组织形式: 武汉市2024年专业技术职务水平能力测试分为笔试和面试,面试答辩有关事项另行通知&…...

计算机网络(6) ICMP协议
ICMP(Internet Control Message Protocol,互联网控制消息协议)是一种用于在IP网络中传递控制消息和错误报告的协议。ICMP是IP协议族的一部分,尽管它并不用于传输用户数据,但它在网络诊断和管理中起着关键作用。以下是关…...

FuTalk设计周刊-Vol.036
🔥AI漫谈 热点捕手 1、Stable Zero123:从单张图像生成高质量 3D 对象 Stable Zero123 可以生成物体的新颖视图,展示从各个角度对物体外观的 3D 理解,由于训练数据集和高程条件的改进,其质量比 Zero1-to-3 或 Zero123-XL 显著提高…...

Java——面向对象进阶(三)
前言: 抽象类,接口,内部类 文章目录 一、抽象类1.1 抽象方法1.2 抽象类1.3 抽象类的使用 二、 接口2.1 接口的定义和实现2.2 default 关键字2.3 实现接口时遇到的问题 三、内部类3.1 成员内部类3.2 静态内部类3.3 成员内部类3.4 匿名内部类&a…...

鸿蒙开发电话服务:【@ohos.telephony.observer (observer)】
observer 说明: 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import observer from ohos.telephony.observerobserver.on(‘networkStateChange’) on(type: ‘networkStateChange’, ca…...

希亦、追觅、云鲸洗地机:究竟有何不同?选择哪款更合适
最近收到很多私信里,要求洗地机测评的呼声特别高,作为宠粉的测评博主,当然是马上安排起来,满足大家对想看洗地机的愿望。这次洗地机测评,我挑选了三款热门的品牌型号,并从多个维度对它们进行使用测评&#…...

代码随想录算法训练营第二十六天
题目:455. 分发饼干 贪心第一题 这里的局部最优就是大饼干喂给胃口大的,充分利用饼干尺寸喂饱一个,全局最优就是喂饱尽可能多的小孩。或者小饼干先喂饱小胃口 首先要对 g 和 s进行排序这样才能知道最大的胃口和最大的饼干然后进行遍历即可…...

[面试题]Java【并发】
[面试题]Java【基础】[面试题]Java【虚拟机】[面试题]Java【并发】[面试题]Java【集合】[面试题]MySQL 因为 Java 并发涉及到的内容会非常多,本面试题可能很难覆盖到所有的知识点,所以推荐 《Java并发编程的艺术》 。 Java 线程 线程 通知 等待 线…...

基于VSCode和MinGW-w64搭建LVGL模拟开发环境
目录 概述 1 运行环境 1.1 版本信息 1.2 软件安装 1.2.1 下载安装VS Code 1.2.1.1 下载软件 1.2.1.1 安装软件 1.2.2 下载安装MinGW-w64 1.2.2.1 下载软件 1.2.2.2 安装软件 1.2.3 下载安装SDL 1.2.3.1 下载软件 1.2.3.2 安装软件 1.2.4 下载安装CMake 1.2.4.…...

H5112B 降压恒流芯片12V24V36V48V60V72V100V 1.2ALED 调光无频闪光滑细腻
H5112B多功能LED恒流驱动器是一款具有良好性能与高度集成度的驱动芯片。以下是该产品的主要优点及应用领域的详细分析: 产品优点: 宽电压输入范围:H5112B支持5V至90V的宽电压输入范围,使其能够适应多种不同的电源环境࿰…...

真心建议大家冲一冲新兴领域,工资高前景好【大模型NLP开发篇】
前言 从ChatGPT到新近的GPT-4,GPT模型的发展表明,AI正在向着“类⼈化”⽅向迅速发展。 GPT-4具备深度阅读和识图能⼒,能够出⾊地通过专业考试并完成复杂指令,向⼈类引以为傲的“创造⼒”发起挑战。 现有的就业结构即将发⽣重⼤变…...

深度剖析淘宝扭蛋机源码:打造趣味性电商活动的秘诀
在当今电商市场中,如何吸引用户的注意力、提升用户的参与度成为了各大电商平台竞相追求的目标。淘宝扭蛋机作为一种新型的电商活动形式,以其趣味性和互动性深受用户喜爱。本文将深度剖析淘宝扭蛋机源码,探讨其如何打造趣味性与互动性并存的电…...

vue3+优化vue-baidu-map中marker点过多导致的页面卡顿问题
场景: 移动端h5中,当我们需要在地图中展示很多marker点坐标的时候,通常会使用 bm-marker ,去循环生成marker点,在数量不多的情况下是没问题的,但是随着数据量的增加,地图就会变得卡顿,以及渲染延…...

PMS助力制造企业高效运营︱PMO大会
全国PMO专业人士年度盛会 北京易贝恩项目管理科技有限公司副总经理朱洪泽女士受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾,演讲议题为“PMS助力制造企业高效运营”。大会将于6月29-30日在北京举办,敬请关注! 议题简要: …...

认识一些分布-关于极值点分布的一些知识
可以参考下面资料: Extreme Value Distribution & the Extreme Value Theory - Statistics How To...