如何使用 Langchain、Ollama 和 Streamlit 构建 RAG

2024-03-13 20:52

本文主要是介绍如何使用 Langchain、Ollama 和 Streamlit 构建 RAG,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、先决条件:您需要了解什么

在深入讨论技术细节之前,我们先概述一下先决条件。Python 的基础知识至关重要,因为它是我们将使用的主要语言。熟悉机器学习和自然语言处理的基本概念将帮助您更轻松地掌握这些概念。此外,对 Langchain、Ollama 和 Streamlit 是什么以及它们在 AI 和 NLP 领域如何运作有一个大致的了解将是有益的。如果您还不是这些工具的专家,请不要担心 - 本教程旨在清晰详细地引导您完成每个步骤。

二、为什么选择 Langchain、Ollama 和 Streamlit? 

 Langchain 是语言人工智能应用的强大工具,将作为我们的支柱,为集成语言和检索系统提供强大的功能。另一方面,Ollama 在 RAG 架构中发挥着至关重要的作用,为信息检索提供了高效且可扩展的解决方案,这对于 RAG 获取外部知识的能力至关重要。Streamlit 具有易用性和灵活性,将成为我们构建用户友好界面的选择,使您能够与 RAG 无缝交互。与我们一起踏上这段激动人心的旅程,释放 RAG 的潜力。在本教程结束时,您不仅可以更深入地了解这些先进的 NLP 技术,而且还可以在本地计算机上运行功能齐全的 RAG,准备好处理各种语言处理任务。让我们一起踏上这段发现与创新的旅程吧!

三、为 RAG 设置环境

创建强大而高效的环境是任何成功软件项目的基石,尤其是在处理 RAG 等先进技术时。本节致力于指导您完成设置最佳开发环境的过程,以使用 Langchain、Ollama 和 Streamlit 构建检索增强生成 (RAG)。

1、Python 安装:我们项目的基础

为什么选择Python?Python 是机器学习世界的通用语言,以其简单性、可读性和庞大的库生态系统而闻名。确保您的系统上安装了 Python;本教程假设您具备 Python 3.6 或更高版本的应用知识。
安装指南:如果尚未安装 Python,请访问 python.org 获取最新版本。选择适合您的操作系统的安装程序,然后按照屏幕上的说明进行操作。

2、设置 Python 虚拟环境:隔离我们的项目

虚拟环境的重要性:使用虚拟环境使我们能够管理项目的依赖项,而不会影响全局 Python 设置。这是保持项目整洁并降低版本冲突风险的最佳实践。
创建虚拟环境:在终端或命令提示符中,导航到项目目录并运行 python -m venv venv。此命令在项目文件夹中创建一个名为 venv 的新虚拟环境。
激活环境:在安装任何软件包之前,激活虚拟环境。在 Windows 上,使用 venv\Scripts\activate,在 Unix 或 MacOS 上,使用源 venv/bin/activate。您应该在控制台中看到环境名称,表明它处于活动状态。

3、依赖管理:安装必要的库

Langchain 和 Ollama:这些是我们 RAG 的核心库。Langchain 促进了语言与检索系统的集成,而 Ollama 则提供高效的检索能力。
Streamlit for UI:Streamlit 将使我们能够轻松构建用户界面。它以其易用性和快速原型制作能力而闻名。
安装命令:在激活的虚拟环境中,运行以下命令:

  • pip install langchain:安装 Langchain,我们用于构建 RAG 的主要库。
  • pip install ollama:安装 Ollama,它将处理 RAG 的检索部分。
  • pip installstreamlit:安装 Streamlit,我们将使用它来创建一个用于流式响应。
4、验证设置:确保一切就位

检查版本:使用 python --version、pip list 和 Streamlit --version 等命令来验证是否安装了正确版本的 Python、Langchain、Ollama 和 Streamlit。

python --version
pip list
Streamlit --version

测试运行:尝试使用 Langchain 运行基本的 Streamlit 应用程序或简单脚本,以确保安装正常运行。

5、为发展做好准备:准备好的环境
  • 代码编辑器:确保安装了代码编辑器或 IDE(如 VS Code、PyCharm 等),以获得流畅的开发体验。
  • 版本控制:考虑在项目目录中初始化 Git 存储库,以有效管理版本控制。

完成这些步骤后,您的环境已准备就绪。当我们深入研究构建检索增强一代的复杂性时,这个基础为无缝且高效的开发体验奠定了基础。让我们充满信心地继续前进,因为我们的工具和环境已做好充分准备,可以应对未来令人兴奋的挑战。

四、Langchain简介:解锁高级语言AI能力

当我们涉足高级语言人工智能领域时,Langchain 成为我们工具包中的关键工具。理解 Langchain 对于任何渴望构建复杂语言的人来说都是至关重要的,特别是当它们与检索系统集成时,就像我们的检索增强一代(RAG)一样。

1、什么是Langchain?

Langchain:语言与链的融合 - Langchain 不仅仅是一个库;这是我们处理语言人工智能方式的范式转变。Langchain 的开发目的是将语言人工智能系统的不同组件链接在一起,它是一个多功能且强大的框架。它促进大型语言与其他元素(例如检索系统和数据库)的无缝集成,使其成为构建 RAG 的完美候选者。

2、Langchain的核心理念

模块化设计:Langchain 的架构本质上是模块化的,允许各种组件的即插即用功能。这种模块化方法使开发人员能够尝试不同的配置并定制最适合其特定要求的解决方案。
可扩展性:Langchain 在设计时考虑到了可扩展性,能够在不影响性能的情况下处理复杂的任务和更大的数据集,使其成为企业级应用程序的理想选择。
社区驱动的开发:Langchain 是开源的,受益于开发者社区的集体智慧,确保持续改进和适应语言 AI ​​领域不断变化的需求。

3、安装和设置

轻松安装:Langchain 入门非常简单。Python 环境准备就绪后,安装 Langchain 就是在终端或命令提示符中执行 pip install langchain 如此简单。这个命令为您提供了一个强大的工具包来构建高级语言人工智能应用程序。

pip install langchain 
4、Langchain的基本使用

抢先一认知 Langchain 的功能:为了让您了解 Langchain 的功能,让我们看一个简单的示例。想象一下创建一个将语言与搜索系统集成在一起的系统来回答复杂的查询。借助 Langchain,您只需几个行代码可以设置此集成,展示了该库的强大功能和易用性。
实践示例:在我们的教程中,我们将进行更深入的研究,提供实践示例和详细解释。您将学习如何使用 Langchain从外部源获取数据,通过语言对其进行处理,并生成财富洞察的响应——这就是我们RAG的核心。

5、为什么选择Langchain来支持RAG?

RAG 的理想匹配:Langchain 将搜索系统与生成系统集成的能力构建成为构建 RAG 的理想选择。其灵活的设计允许进行必要的定制和定制,以在我们的 RAG 应用程序中实现高质量、上下文读取的响应。
总而言之,Langchain不仅仅是一个工具,更是接入语言人工智能未来的门户。它的多功能性、可扩展性和社区驱动的性质使其成为我们项目码头的资产。随看着我们学习本教程,您将亲眼目睹Langchain如何改变您构建高级语言AI解决方案的方法。让我们与Langchain一起踏上梦想之旅,释放新的可能性并突破人工智能语言世界可实现的界限。

五、Ollama 简介:人工智能信息搜索的革命性变革

在语言人工智能错综复杂的织锦中,Ollama 移动,成为一条关键线索,特别是在搜索增强生成(RAG)的背景下。本节将深入探讨 Ollama 的本质,阐明其在构建先进人工智能系统中的作用和意义。

1、Ollama是什么?

Ollama:搜索引擎 - Ollama 的核心是最先进的信息检索系统,经过所提出的设计,通过为语言提供访问和利用外部知识的能力来增强语言。在信息为王的人工智能世界中,Ollama 释放了大量数据的钥匙,成为任何RAG的宝贵资产。

2、Ollama之柱
  • 效率和速度:Ollama 专为高速数据搜索和设计,这是实时应用程序和响应式人工智能系统的关键功能。其效率确保搜索过程不会成为 RAG 整体性能的瓶颈。
  • 可扩展性:Ollama 的亮点在于其处理大规模数据集的能力,无论数据量有多大,都能保持其效率和速度。这种可扩展性非常适合企业级应用程序和复杂的人工智能项目。
  • 灵活:Ollama的设计充分考虑了灵活性,可以与各种数据库和信息源无缝集成。这种对于构建依赖于多元化和动态数据源的 RAG 至关重要。
3、安装和设置

简化设置:安装 Ollama 轻而易举。当您的 Python 环境准备就绪并等待时,只需一个简单的 pip install ollama 命令即可将这个复杂的搜索系统添加到您的工具包中。这种安装的简单性被忽视它为您的项目带来了功能的复杂性和精密性。

pip install ollama 
4、为 RAG 配置 Olama

根据您的需求定制Ollama:Ollama的配置是一个简单的过程,允许您自定义其行为按照RAG的特定要求。无论您需要连接到数据库还是调整搜索参数,Ollama都可以灵活地以最小的麻烦
Ollama 的实际应用:实际示例了解
Ollama 的工作情况:在本教程的后续部分中,我们将指导您完成将 Ollama 与 RAG 集成的实际示例。您将学习如何利用其检索功能和相关信息输入您的语言,从而生成丰富的响应的上下文和深度。

5、为什么选择Ollama加入RAG?

理想的搜索伙伴:Ollama 的搜索能力和 RAG 的生成能力之间的良好作用是不可否认的。Ollama 为 RAG 的“搜索”方面提供了重要的支撑,确保生成者能够访问必要的信息来生成上下文丰富并且准确的响应。
从本质上讲,Ollama不仅仅是一个工具;更是一个工具。它是增强人工智能功能的门户。它的高效性、可扩展性和建立成为高级语言人工智能系统领域随着本教程的进展,Ollama 在增强 RAG 能力方面的作用将变得越来越明显,展示其作为现代 AI 开发基石的价值。让我们继续冒险,利用 Ollama 的优势,在令人兴奋的人工智能和机器学习世界中开辟新天地。

六、构建RAG:创新与工程的融合

当我们深入研究增强一代(RAG)的构建时,我们正在踏上人工智能创新最前沿的旅程。本节致力于指导您完成构建 RAG 的复杂过程,利用 Langchain 和 Ollama 的综合功能,并最终形成一个体现现代语言AI尖端的系统。

1、RAG架构概述

RAG代表了两种复杂的人工智能范式的融合:检索和生成。从本质上讲,RAG是一种复杂的算法,它首先从庞大的数据集中检索相关信息(由Ollama提供),然后利用这些信息生成丰富的洞察力、上下文丰富的响应(由Langchain提供支持)。这种双流程方法使RAG能够产生不仅语言连贯、信息丰富且事实准确的输出。

2、将 Langchain 与 Ollama 集成

在构建更复杂、上下文采集的人工智能的过程中,Langchain 语言和 Ollama 的集成成为创新的灯塔。我们教程的这一部分深入探讨了这种集成的实际方面,提供了一个源代码示例来演示这一点这个强大的工具之间的配合非常好,能够彻底改变语言处理能力。

3、搜索与生成的融合

我们的 RAG(搜索增强生成)的本质依赖它能够将 Ollama 的搜索能力与 Langchain 的生成技巧相结合。在这里,我们提供了一个封装此集成的简化源代码示例:

python
from langchain.chains import Chain
from langchain.retrieval import OllamaRetriever
from langchain.llms import YourFavoriteLLM  # Replace with your chosen language def create_rag_():# Initialize your language language_ = YourFavoriteLLM()# Initialize Ollama retrieverollama_retriever = OllamaRetriever(index_name="your_index_name",api_key="your_api_key",)# Create a RAG chainrag_chain = Chain(components=[ollama_retriever, language_],combine_func=lambda retrievals, _: " ".join([doc['text'] for doc in retrievals]))return rag_chaindef generate_response(question, rag_):# Retrieve and generate responseretrievals = rag_.retrieve(question)response = rag_.generate(retrievals, prompt=question)return response# Instantiate RAG 
rag_ = create_rag_()# Example usage
question = "What is the significance of quantum computing in AI?"
response = generate_response(question, rag_)print("Response:", response)

划分代码

  1. 初始化:代码从设置 Langchain 和 Ollama 开始。必须替换YourFavoriteLLM以满足您的项目需求的实际语言。
  2. RAG链创建:集成的核心是RAG链的创建。这条链连接了Ollama搜索器和语言,保证搜索和生成信息之间的顺利流动。
  3. 响应生成:该generate_response函数说明如何通过RAG处理查询,将检索到的信息与原始查询相结合生成综合响应。
  4. 示例查询:我们提供了一个示例来展示 RAG 的实际应用,回答有关人工智能中量子计算的复杂问题。

七、集成测试

Langchain 和 Ollama 的集成构建搜索增强生成(RAG)是一个重要的里程碑,但成功的真正缓解标准需要对其进行评估。正确的测试和评估确保 RAG 预期运行、有效地结合搜索和生成功能提供准确且与上下文相关的响应关键。本节重点介绍评估集成 RAG 的方法和最佳实践。
1. 单元测试:首先单独测试 Langchain 和 Ollama。此步骤将确保每个组件都独立正常运行,执行各自的任务。
此外,开发各个场景(包括边缘情况)的测试用例,以彻底评估每个。这些组件可能涉及使用不同类型的输入查询来测试 Langchain,并评估 Ollama 从不同数据源检索相关信息2.
端到端测试:单个组件经过验证后,下一步就是对它们进行一起测试。这涉及通过整个RAG系统运行查询并观察检索和生成过程之间的交互。
使用一组包含广泛的主题和复杂性的预定义查询。这有助于评估其检索相关信息的效果以及它如何有效地利用这些信息来生成响应。
3.评估性能和准确性:评估RAG生成的响应的质量。这包括评估其相关性、连贯性、事实准确性和语言质量。人类评估员或自动评分系统可用的获取目的。评估检索组件的有效性。分析 Ollama 是否正在获取对生成响应的质量有重大贡献的相关且全面4.
调整和优化:纳入反馈循环,分析的准确性和相关性。使用此反馈来调整、调整参数并设置更好输出的性能。
采用响应时间、准确性评分和相关性指标等各种指标来定量评估绩效。这些指标为指导进一步优化提供了具体数据。

1、增强RAG

定制:基本RAG就位后,下一步是根据应用程序的特定需求由此进行定制。这可能涉及针对特定类型的查询进行调整或优化搜索过程以提高效率。
反馈循环:实施反馈循环可以显着提高RAG 的性能。通过分析生成的响应和检索到的信息的相关性,您可以不断完善它以提高准确性和相关性。

2、应用和扩展

一旦RAG构建完成并经过全面测试,最后一步就是准备部署。这涉及到可扩展性的考虑,特别是在需要处理大量查询的情况下。Langchain和Ollama的可扩展性在这里发挥作用,确保RAG即使在重负载下也保持新鲜和高效。
总而言之,构建 RAG 是一项复杂但高效的工作,它结合了尖端的人工智能技术。通过 Langchain 和 Ollama 的集成,我们可以创建一个不仅能够并理解生成的自然语言,并且具有外部的接入和事实准确性水平的系统。当我们继续学习本教程时,每一步都涉及到我们更接近实现 RAG 的全部潜力,从而为 AI 语言领域开辟新的视野。

八、在本地运行 RAG 应用程序:将您的 AI 提高现实

我们构建搜寻强化一代(RAG)之旅的最后一个令人兴奋的阶段是通过在本地运行来实现它。该阶段从理论发展到实际应用的过渡,让您亲眼目睹辛勤工作的成果。让我们浏览一下在本地启动 RAG 应用程序的过程,确保配置顺利、成功。

1、启动Streamlit服务器:您访问RAG的窗口

启动界面:使用简单的 Streamlit,启动应用程序既又令人兴奋。Streamlit的设计理念以练习性和快速配置为中心,使其成为展示 RAG 的理想选择。要启动服务器,请导航到包含 Streamlit 脚本的目录并运行命令streamlit run your_script.py。此激活Streamlit服务器并为您的应用命令程序提供服务。

streamlit run your_script.py


本地托管:运行命令后,通常Streamlit将您的应用程序托管在本地服务器上,通常可以通过 localhost:8501这种本地托管允许您在Web界面中与RAG交互,提供一种切实且用户友好的方式来探索其功能。

2、与RAG交互:以用户为中心的方法

用户界面体验:Streamlit应用程序为用户与RAG交互提供了交互式的交互式界面。您可以输入查询、调整参数并实时查看响应。这种交互式对于体验理解的功能和灵敏度来说。
实时反馈:本地运行应用程序的主要优点之一是能够获得实时反馈。当您输入不同的查询和调整设置时,系统会立即做出响应,从而允许动态探索其功能。

九、结论:人工智能之旅的里程碑

在本地运行的 RAG 应用程序不仅仅是一项技术成就;更是一项技术成就。这是您人工智能开发人员旅程中的一个重要里程碑。它代表了您在掌握复杂的人工智能概念和工具方面您努力的顶峰,以及可以改进、共享和潜在扩展的新阶段的开始。
总之,本阶段教程将 RAG 的所有组件集成到一个有形状的交互式应用程序中。通过在本地运行,您可以其实际功能的宝贵意见,让您了解人工智能驱动的语言处理的分数差。这种体验观察输出;而不是观察结果。这是关于参与它、消耗学习并思考它在现实世界中的潜在应用。

这篇关于如何使用 Langchain、Ollama 和 Streamlit 构建 RAG的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/806165

相关文章

C语言中联合体union的使用

本文编辑整理自: http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=179471 一、前言 “联合体”(union)与“结构体”(struct)有一些相似之处。但两者有本质上的不同。在结构体中,各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和。而在“联合”中,各成员共享一段内存空间, 一个联合变量

Spring Cloud:构建分布式系统的利器

引言 在当今的云计算和微服务架构时代,构建高效、可靠的分布式系统成为软件开发的重要任务。Spring Cloud 提供了一套完整的解决方案,帮助开发者快速构建分布式系统中的一些常见模式(例如配置管理、服务发现、断路器等)。本文将探讨 Spring Cloud 的定义、核心组件、应用场景以及未来的发展趋势。 什么是 Spring Cloud Spring Cloud 是一个基于 Spring

LangChain转换链:让数据处理更精准

1. 转换链的概念 在开发AI Agent(智能体)时,我们经常需要对输入数据进行预处理,这样可以更好地利用LLM。LangChain提供了一个强大的工具——转换链(TransformChain),它可以帮我们轻松实现这一任务。 转换链(TransformChain)主要是将 给定的数据 按照某个函数进行转换,再将 转换后的结果 输出给LLM。 所以转换链的核心是:根据业务逻辑编写合适的转换函

Tolua使用笔记(上)

目录   1.准备工作 2.运行例子 01.HelloWorld:在C#中,创建和销毁Lua虚拟机 和 简单调用。 02.ScriptsFromFile:在C#中,对一个lua文件的执行调用 03.CallLuaFunction:在C#中,对lua函数的操作 04.AccessingLuaVariables:在C#中,对lua变量的操作 05.LuaCoroutine:在Lua中,

Vim使用基础篇

本文内容大部分来自 vimtutor,自带的教程的总结。在终端输入vimtutor 即可进入教程。 先总结一下,然后再分别介绍正常模式,插入模式,和可视模式三种模式下的命令。 目录 看完以后的汇总 1.正常模式(Normal模式) 1.移动光标 2.删除 3.【:】输入符 4.撤销 5.替换 6.重复命令【. ; ,】 7.复制粘贴 8.缩进 2.插入模式 INSERT

Lipowerline5.0 雷达电力应用软件下载使用

1.配网数据处理分析 针对配网线路点云数据,优化了分类算法,支持杆塔、导线、交跨线、建筑物、地面点和其他线路的自动分类;一键生成危险点报告和交跨报告;还能生成点云数据采集航线和自主巡检航线。 获取软件安装包联系邮箱:2895356150@qq.com,资源源于网络,本介绍用于学习使用,如有侵权请您联系删除! 2.新增快速版,简洁易上手 支持快速版和专业版切换使用,快速版界面简洁,保留主

如何免费的去使用connectedpapers?

免费使用connectedpapers 1. 打开谷歌浏览器2. 按住ctrl+shift+N,进入无痕模式3. 不需要登录(也就是访客模式)4. 两次用完,关闭无痕模式(继续重复步骤 2 - 4) 1. 打开谷歌浏览器 2. 按住ctrl+shift+N,进入无痕模式 输入网址:https://www.connectedpapers.com/ 3. 不需要登录(也就是

Toolbar+DrawerLayout使用详情结合网络各大神

最近也想搞下toolbar+drawerlayout的使用。结合网络上各大神的杰作,我把大部分的内容效果都完成了遍。现在记录下各个功能效果的实现以及一些细节注意点。 这图弹出两个菜单内容都是仿QQ界面的选项。左边一个是drawerlayout的弹窗。右边是toolbar的popup弹窗。 开始实现步骤详情: 1.创建toolbar布局跟drawerlayout布局 <?xml vers

Python应用开发——30天学习Streamlit Python包进行APP的构建(9)

st.area_chart 显示区域图。 这是围绕 st.altair_chart 的语法糖。主要区别在于该命令使用数据自身的列和指数来计算图表的 Altair 规格。因此,在许多 "只需绘制此图 "的情况下,该命令更易于使用,但可定制性较差。 如果 st.area_chart 无法正确猜测数据规格,请尝试使用 st.altair_chart 指定所需的图表。 Function signa

C#中,decimal类型使用

在Microsoft SQL Server中numeric类型,在C#中使用的时候,需要用decimal类型与其对应,不能使用int等类型。 SQL:numeric C#:decimal