前言
还记得开发一个智能聊天机器人需要花费数月编码的时间吗?
像 LangChain 这样的框架确实简化了开发,但是对于非程序员来说,数百行代码仍然是一个障碍。
就在那时,我发现了“Lang Flow”,这是一个基于 Python 版 LangChain 的开源软件包。它让你无需编写任何代码即可创建 AI 应用程序。它为你提供了一个画布,你可以拖动组件并将它们链接起来以构建你的聊天机器人。
在这篇文章中,我们将使用LangFlow在几分钟内构建一个智能 AI 聊天机器人原型。对于后端,我们将使用Ollama嵌入模型和大型语言模型,这意味着该应用程序可以在本地免费运行!最后,我们将用最少的编码将此流程转换为Streamlit应用程序。
检索增强生成管道、LangChain、LangFlow 和 Ollama 简介
在这个项目中,我们将构建一个 AI 聊天机器人,我们将其命名为“Dinnerly — 您的健康菜肴规划师”。它旨在推荐健康菜肴食谱,这些食谱是在检索增强生成 (RAG) 的帮助下从食谱 PDF 文件中提取的。
在深入研究如何实现这一目标之前,让我们快速回顾一下我们将在项目中使用的主要要素。
检索增强生成 (RAG)
RAG(检索增强生成)通过从外部来源向大型语言模型 (LLM) 提供相关信息来为其提供帮助。这使得 LLM 在生成响应时可以考虑此上下文,从而使响应更加准确和最新。
您可以从 2img.ai 中获取更多源代码资源
RAG 管道通常包括以下步骤,如《检索增强生成指南》中所述:
- 加载文档:首先加载文档或数据源。
- 分成块:将文档分成可管理的部分。
- 创建嵌入:使用嵌入将这些块转换为向量表示。
- 存储在矢量数据库中:将这些矢量保存在数据库中,以便有效检索。
- 用户交互:接收来自用户的查询或输入并将其转换为嵌入。
- VectorDB中的语义搜索:连接到矢量数据库,根据用户的查询进行语义搜索。
- 检索和处理响应:获取相关响应,将其传递给 LLM,并生成答案。
- 向用户提供答案:将 LLM 生成的最终输出呈现给用户。
Han HELOIR 博士对 RAG 工作流程的概述。☕️
LangChain
LangChain 是一个围绕 LLM 构建的开源框架,它促进了各种 GenAI 应用程序的设计和开发,包括聊天机器人、摘要等。
该库的核心思想是将不同的组件“链接”在一起,以简化复杂的 AI 任务并围绕 LLM 创建更高级的用例。
LangFLow
LangFlow 是一款专为 LangChain 设计的 Web 工具。它提供了一个用户界面,用户只需拖放组件即可构建和测试 LangChain 应用程序,无需任何编码。
但是,您首先需要对 LangChain 的工作原理及其不同组件有一个基本的了解,才能使用 LangFlow 来设计您的 AI 应用程序流程。
LangFlow 接口
Ollama
对我来说, Ollama是启动和运行开源 LLM 的最佳和最简单方法。它支持 Llama 2 和 Mistral 等功能最强大的 LLM,您可以在ollama.ai/library上找到可用模型列表。
设置Ollama
安装 Ollama
首先,进入Ollama下载页面,选择与你的操作系统匹配的版本,下载并安装。
安装 Ollama 后,打开命令终端并输入以下命令。这些命令将下载模型并在您的机器上本地运行它们。
对于这个项目,我们将使用 Llama2 作为大型语言模型 (LLM),并使用“nomic-embed-text”作为嵌入模型。“ Nomic-embed-text ”是一个功能强大的开源嵌入模型,具有较大的上下文窗口。这让我们可以在本地运行整个应用程序,而无需任何云服务!ollama serve
ollama pull llama2
ollama pull nomic-embed-text
ollama run llama2</