使用 Langflow 和 Astra DB 创建 RAG 聊天机器人

部署运行你感兴趣的模型镜像

原文:towardsdatascience.com/creating-a-rag-chatbot-with-langflow-and-astra-db-582ad588cf37?source=collection_archive---------6-----------------------#2024-08-21

通过 Langflow 直观界面创建 RAG 聊天机器人的步骤,将 LLMs 与向量数据库集成,实现基于上下文的响应。

https://brunocaraffa.medium.com/?source=post_page---byline--582ad588cf37--------------------------------https://towardsdatascience.com/?source=post_page---byline--582ad588cf37-------------------------------- Bruno Caraffa

·发表在Towards Data Science·6 分钟阅读·2024 年 8 月 21 日

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/4c4fd5e21eece275bd63778538e7fb4b.png

照片由Igor Omilaev提供,来自Unsplash

检索增强生成,或 RAG,是一种自然语言处理,涉及将传统的检索技术与 LLMs 结合,通过将生成属性与检索提供的上下文集成,生成更准确和相关的文本。最近在聊天机器人的背景下广泛使用,为公司提供了利用定制数据的尖端 LLM 模型改进与客户的自动通信的能力。

Langflow 是 Langchain 的图形用户界面,Langchain 是 LLMs 的集中式开发环境。2022 年 10 月,Langchain 发布,到 2023 年 6 月已成为 GitHub 上使用最广泛的开源项目之一。它席卷了人工智能社区,特别是为创建和定制多个 LLMs 开发的框架,具有与最相关的文本生成和嵌入模型集成的功能,链式 LLM 调用的可能性,管理提示的能力,装备向量数据库以加快计算速度的选项,并顺利将结果交付给外部 API 和任务流程。

本文将介绍一个使用 Langflow 创建的端到端 RAG 聊天机器人,并使用著名的 Titanic 数据集。首先,需在 Langflow 平台进行注册,这里。要开始一个新项目,可以根据用户需求快速定制一些有用的预构建流程。要创建 RAG 聊天机器人,最佳选择是选择Vector Store RAG模板。图片 1 展示了原始流程:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/9326f9718c2b6f48fc1960551a3094d2.png

图片 1 — Langflow Vector Store RAG 模板流程。来源:作者。

该模板已预设 OpenAI 用于嵌入和文本生成,并且这些选项在本文中使用,但其他选项如 Ollama、NVIDIA 和 Amazon Bedrock 也可以轻松集成,只需设置 API 密钥即可。在使用与 LLM 提供商的集成之前,重要的是检查所选择的集成是否在配置中处于激活状态,就像下面的图片 2 所示。另外,像 API 密钥和模型名称这样的全局变量可以定义,以便在流程对象中简化输入。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/47ed3e1fc3ae4ac10f98b2cb274387e5.png

图片 2 — OpenAI 活跃集成与概览。来源:作者。

在 Vector Store RAG 模板中有两种不同的流程,下面展示了 RAG 的检索部分,其中上下文是通过上传文档、分割、嵌入,然后保存到 Astra DB 的 Vector 数据库中完成的,用户可以在流程界面轻松创建该数据库。目前,默认情况下,Astra DB 对象会检索 Astra DB 应用程序令牌,因此不需要手动收集它。最后,需要创建用于存储嵌入值的集合。该集合的维度需要与嵌入模型中的维度相匹配,这些信息可以在文档中找到,以确保嵌入结果的正确存储。因此,如果选择的嵌入模型是 OpenAI 的 text-embedding-3-small,那么创建的集合维度必须是 1536。下面的图片 3 展示了完整的检索流程。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/9c7000c9daa4eb839ade62fb4a3f207a.png

图片 3 — 来自 Titanic 数据集的检索流程。来源:作者。

用于增强聊天机器人上下文的数据集是Titanic 数据集(CC0 许可)。在 RAG 过程结束时,聊天机器人应该能够提供乘客的具体细节并回答关于乘客的复杂问题。但首先,我们在通用文件加载对象上更新文件,然后使用全局变量“separator;”对其进行分割,因为原始格式是 CSV。此外,块重叠和块大小被设置为 0,因为每个块将是一个乘客,并使用分隔符。如果输入文件是纯文本格式,则需要应用块重叠和块大小设置,以正确创建嵌入。最后,向量被存储在 titanic_vector_db 中,存储在 demo_assistente 数据库中。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/ac404fab072ee2604e5c781c4f9c3397.png

图 4 — 完整的生成流程。来源:作者。

移动到 RAG 的生成流程,如图 4 所示,它是通过用户在聊天中的输入触发的,然后该输入会在数据库中进行搜索,以提供后续提示所需的上下文。所以,如果用户输入与名称“欧文”(Owen)相关的内容,搜索将通过向量数据库的集合运行,寻找与“欧文”相关的向量,检索并通过解析器将其转换为文本,最终获得后续提示所需的上下文。图 5 显示了搜索结果。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/197b8efe0ed0fe3acd688a302f2e806e.png

图 5 — 在向量数据库中进行的搜索结果,以获得上下文。来源:作者。

回到开始,重新连接嵌入模型到向量数据库也至关重要,必须在检索流程中使用相同的模型来执行有效的搜索,否则搜索将始终为空,因为检索和生成流程中使用的嵌入模型将不一致。此外,这一步突显了在 RAG 中使用向量数据库的巨大性能优势,在该过程中,需要迅速检索上下文并将其传递到提示中,然后再生成任何类型的响应给用户。

在图 6 所示的提示中,上下文来自已通过解析器转换为文本的内容,问题来自原始用户输入。下面的图像展示了如何构建提示,将上下文与问题集成。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/4b33e6502020e5f408c1143376445d66.png

图 6 — 将传递给 AI 模型的提示。来源:作者。

在准备好文本生成模型后,现在是时候进行文本生成了。在这个流程中,选择了 GPT4 模型,温度为 0.5,这是聊天机器人的推荐标准。温度控制着由 LLM 进行的预测的随机性。较低的温度将生成更确定和直接的答案,导致更可预测的文本。较高的温度将生成更具创造性的输出,尽管如果太高,模型可能会轻易产生幻觉并产生不连贯的文本。最后,只需使用 OpenAI 的 API 密钥设置全局变量,就这么简单。然后,是时候运行流程并在游乐场上检查结果了。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/830ae5f627aa329c8d434c247c532cfa.png

图片 7 — 展示 RAG 聊天机器人结果的游乐场。来源:作者。

图片 7 中的对话清楚地显示,聊天机器人已经正确获取了上下文,并正确回答了关于乘客的详细问题。尽管发现泰坦尼克号上没有罗斯或杰克可能令人失望,但不幸的是,这是事实。就是这样。RAG 聊天机器人已经创建,当然,可以增强其以提高对话性能并覆盖一些可能的误解,但本文展示了 Langflow 如何轻松地使 LLMs 适应和定制。

最后,部署流程有多种可能性。HuggingFace Spaces 是一种轻松部署 RAG 聊天机器人的方式,具有可扩展的硬件基础设施和本地 Langflow,无需任何安装。Langflow 也可以通过 Kubernetes 集群、Docker 容器或直接在 GCP 中使用 VM 和 Google Cloud Shell 进行安装和使用。有关部署的更多信息,请查看文档

新时代即将到来,低代码解决方案开始主导未来短期内 AI 在现实世界中的发展方式。本文介绍了 Langflow 如何通过集成多个直观 UI 和模板来革新 AI。如今,任何具备基本 AI 知识的人都可以构建一个复杂的应用程序,而在本十年初,这将需要大量的代码和深度学习框架专业知识。

您可能感兴趣的与本文相关的镜像

LangFlow

LangFlow

AI应用
Agent编排

LangFlow 是一款低代码、可视化的 AI 应用构建工具,用于快速搭建和实验 LangChain 流水线

本文旨在系统阐述利用MATLAB平台执行多模态语音分离任务的方法,重点围绕LRS3数据集的数据生成流程展开。LRS3(长时RGB+音频语音数据集)作为一个规模庞大的视频与音频集合,整合了丰富的视觉与听觉信息,适用于语音识别、语音分离及情感分析等多种研究场景。MATLAB凭借其高效的数值计算能力与完备的编程环境,成为处理此类多模态任务的适宜工具。 多模态语音分离的核心在于综合利用视觉与听觉等多种输入信息来解析语音信号。具体而言,该任务的目标是从混合音频中分离出不同说话人的声音,并借助视频中的唇部运动信息作为辅助线索。LRS3数据集包含大量同步的视频与音频片段,提供RGB视频、单声道音频及对应的文本转录,为多模态语音处理算法的开发与评估提供了重要平台。其高质量与大容量使其成为该领域的关键资源。 在相关资源包中,主要包含以下两部分内容: 1. 说明文档:该文件详细阐述了项目的整体结构、代码运行方式、预期结果以及可能遇到的问题与解决方案。在进行数据处理或模型训练前,仔细阅读此文档对正确理解与操作代码至关重要。 2. 专用于语音分离任务的LRS3数据集版本:解压后可获得原始的视频、音频及转录文件,这些数据将由MATLAB脚本读取并用于生成后续训练与测试所需的数据。 基于MATLAB的多模态语音分离通常遵循以下步骤: 1. 数据预处理:从LRS3数据集中提取每段视频的音频特征与视觉特征。音频特征可包括梅尔频率倒谱系数、感知线性预测系数等;视觉特征则涉及唇部运动的检测与关键点定位。 2. 特征融合:将提取的音频特征与视觉特征相结合,构建多模态表示。融合方式可采用简单拼接、加权融合或基于深度学习模型的复杂方法。 3. 模型构建:设计并实现用于语音分离的模型。传统方法可采用自适应滤波器或矩阵分解,而深度学习方法如U-Net、Transformer等在多模态学习中表现优异。 4. 训练与优化:使用预处理后的数据对模型进行训练,并通过交叉验证与超参数调整来优化模型性能。 5. 评估与应用:采用信号失真比、信号干扰比及信号伪影比等标准指标评估模型性能。若结果满足要求,该模型可进一步应用于实际语音分离任务。 借助MATLAB强大的矩阵运算功能与信号处理工具箱,上述步骤得以有效实施。需注意的是,多模态任务常需大量计算资源,处理大规模数据集时可能需要对代码进行优化或借助GPU加速。所提供的MATLAB脚本为多模态语音分离研究奠定了基础,通过深入理解与运用这些脚本,研究者可更扎实地掌握语音分离的原理,从而提升其在实用场景中的性能表现。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值