使用 LlamaIndex 构建简单的 RAG 代理

使用 llamaindex 构建简单的 rag 代理

llamaindex 是一个利用法学硕士构建情境增强生成式 ai 应用程序的框架。

什么是上下文增强?

上下文增强是指向 llm 模型提供附加相关信息或上下文的技术,从而提高其对给定查询的理解和响应。这种增强通常涉及检索、集成外部数据源(例如文档、嵌入)或将其附加到模型的输入。目标是通过为模型提供必要的上下文来帮助模型提供更好、更准确和细致的答案,从而使模型更加明智。检索增强生成(rag)是上下文增强最流行的示例。

什么是代理?

代理是由法学硕士提供支持的自动推理和决策引擎,它们使用工具来执行研究、数据提取、网络搜索和更多任务。它们可用于简单的用例,例如基于数据回答问题,以便能够决定并采取行动来完成任务。

在这篇文章中,我们将使用 llamaindex 构建一个简单的 rag 代理。

构建 rag 代理

安装依赖项

我们将使用 python 使用 llamaindex 构建简单的 rag 代理。让我们首先安装所需的依赖项,如下所示:

pip install llama-index python-dotenv

设置llm并加载文档

我们将使用 openai 的 gpt-4o-mini 作为法学硕士。您需要将 api 密钥放入环境变量文件中。您可以在此处阅读有关使用 llamaindex 设置本地法学硕士的更多信息。

from llama_index.core import simpledirectoryreader, vectorstoreindex, settingsfrom llama_index.llms.openai import openaifrom dotenv import load_dotenv# load environment variables (e.g., openai_api_key)load_dotenv()# configure openai modelsettings.llm = openai(model="gpt-4o-mini")# load documents from the local directorydocuments = simpledirectoryreader("./data").load_data()# create an index from documents for queryingindex = vectorstoreindex.from_documents(documents)query_engine = index.as_query_engine()

首先,我们使用 openai 配置 llm 模型并指定 gpt-4o-mini 模型。您可以根据您的需要切换到其他可用的模型/llm。然后,我们使用 simpledirectoryreader 从本地 ./data 目录加载文档。该阅读器扫描目录、读取文件并构造数据以供查询。接下来,我们从加载的文档创建向量存储索引,使我们能够在查询执行期间执行高效的基于向量的检索。

为代理创建自定义函数

现在,让我们定义代理可以用来执行任务的一些基本函数。

def multiply(a: float, b: float) -> float:    """multiply two numbers and returns the product"""    return a * bdef add(a: float, b: float) -> float:    """add two numbers and returns the sum"""    return a + b

为代理创建工具

接下来,我们将根据之前定义的函数和查询引擎创建工具,代理将使用这些工具来执行任务。这些工具充当代理在处理不同类型的查询时可以利用的实用程序。

from llama_index.core.tools import functiontool, queryenginetool# wrap functions as toolsadd_tool = functiontool.from_defaults(fn=add)multiply_tool = functiontool.from_defaults(fn=multiply)# create a query engine tool for document retrievalspace_facts_tool = queryenginetool.from_defaults(    query_engine,    name="space_facts_tool",    description="a rag engine with information about fun space facts.")

functiontool 包装了加法和乘法函数并将它们公开为工具。代理现在可以访问这些工具来执行计算。queryenginetool 包装了 query_engine,以允许代理从向量存储中查询和检索信息。我们将其命名为 space_facts_tool 并附有说明,表明该工具可以检索有关空间事实的信息。您可以摄取任何内容并根据摄取的数据自定义工具。

创建代理

我们现在将使用 reactagent 创建代理。代理将负责决定何时使用这些工具以及如何响应查询。

from llama_index.core.agent import reactagent# create the agent with the toolsagent = reactagent.from_tools(    [multiply_tool, add_tool, space_facts_tool], verbose=true)

该代理使用 react 框架,该框架允许模型通过按逻辑顺序利用给定工具来推理并采取行动。代理使用我们创建的工具进行初始化,并且 verbose=true 标志将输出有关代理如何推理和执行任务的详细信息。

运行代理

最后,让我们在交互式循环中运行代理,它会处理用户查询,直到我们退出。

while True:    query = input("Query: ")    if query == "/bye":        exit()    response = agent.chat(query)    print(response)    print("-" * 10)

rag 代理如何工作?

当您提出与您摄取的文档相关的问题时,space_facts_tool(即矢量存储工具)会使用 query_engine 检索相关信息。当您要求计算时,代理使用 add_tool 或 multiply_tool 来执行这些任务。代理根据用户查询即时决定使用哪个工具并提供输出。

以上就是使用 LlamaIndex 构建简单的 RAG 代理的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1350334.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 14:09:47
下一篇 2025年12月8日 20:02:22

相关推荐

  • 收集和处理 INMET-BDMEP 气候数据

    气候数据在多个领域发挥着至关重要的作用,有助于影响农业、城市规划和自然资源管理等领域的研究和预测。 国家气象研究所(inmet)每月在其网站上提供气象数据库(bdmep)。该数据库包含分布在巴西各地的数百个测量站收集的一系列历史气候信息。在bdmep中,您可以找到有关降雨量、温度、空气湿度和风速的详…

    2025年12月13日
    000
  • 使用 Python 构建 PGP 加密工具:高级概述

    简介:我将用 Python 构建一个 PGP 加密工具,允许用户生成公钥/私钥、加密/解密数据以及导入/导出密钥。以下是我将如何处理该项目以及将使用哪些框架/工具来创建它。 语言:Python我将使用 Python,因为它适合初学者,非常适合快速原型设计,并且拥有广泛的密码学库。它让我能够更多地关注…

    2025年12月13日
    000
  • Language Feature Deep Dive: Python&#s Structural Pattern Matching

    各位开发者大家好!今天,我们将深入探讨 python 的一项更新且更令人兴奋的功能:结构模式匹配。此功能在 python 3.10 中引入,为处理复杂数据结构提供了一种强大且富有表现力的方式。让我们探讨一下它的工作原理以及如何在您的项目中使用它。 什么是结构模式匹配? 结构模式匹配是一种检查数据结构…

    2025年12月13日
    000
  • Python 循环中的“else”子句!

    在 python 中,else 子句不仅可以与 if 语句一起使用,还可以与循环(for 和 while)一起使用。这可能看起来很奇怪,但循环中的 else 块仅在循环正常完成时才会执行,这意味着它不会命中break语句。 这是一个例子: for i in range(5): if i == 3: …

    2025年12月13日
    000
  • 课程计划:年级学生 Python 基础知识(初级)

    目标: 在本课程结束时,学生将对 python 编程有基本的了解,包括变量、基本数据类型、循环和函数。他们将使用 python 创建简单的程序,运用逻辑思维和解决问题的技能。 持续时间:6 节课 第 1 课:python 简介和设置 目标:让学生熟悉python、其用途以及如何建立基本的编程环境。 …

    2025年12月13日
    000
  • 极简 Python 版本管理器

    shuru 中的 python 支持:版本 0.0.9 shuru 刚刚升级——python 版本管理现已上线!如果您一直在使用 shuru 执行 node.js 任务,您会很高兴知道现在可以同样轻松地管理您的 python 版本。 什么是新的? 通过这个最新版本 (v0.0.9),shuru 可以…

    2025年12月13日
    000
  • python爬虫需要cookie怎么办

    Python 爬虫获取 Cookie 的方法有:使用 Requests 库的 getcookies() 方法。使用 Selenium 库的 get_cookies() 方法。使用 lxml 库的 extract_cookies() 方法。使用 pycurl 库的 Cookie 处理功能。手动构建 C…

    2025年12月13日
    000
  • 用Python爬虫怎么爬QQ音乐

    要使用 Python 爬取 QQ 音乐,需要:1. 安装 requests 和 beautifulsoup4 库;2. 获取歌曲 URL;3. 发出 HTTP 请求;4. 解析 HTML;5. 提取歌曲信息(标题、艺术家、专辑);6. 保存歌曲信息。 用 Python 爬虫爬取 QQ 音乐 如何使用…

    2025年12月13日
    000
  • 怎么用python爬虫收集数据

    Python 爬虫数据收集方法:选择库:BeautifulSoup、Scrapy、Requests 等。编写爬虫脚本:定义连接、提取数据、处理信息。运行爬虫:启动过程,自动遍历网站收集数据。提取 HTML 数据:使用 BeautifulSoup 解析 HTML、提取元素和文本。管理抓取任务:使用 S…

    2025年12月13日
    000
  • python爬虫就业方向怎么样

    Python爬虫就业前景广阔,需求量大。其发展前景光明,就业领域广泛,包括数据分析师、爬虫工程师、信息安全分析师和数据挖掘工程师等。薪资待遇优厚,经验丰富的爬虫工程师年薪可达几十万元。随着行业发展和人才短缺,薪资待遇有望进一步提高。 Python爬虫就业前景 一、回答 就业前景广阔,需求量大。 二、…

    2025年12月13日
    000
  • python爬虫怎么处理字符串

    Python 爬虫中的字符串处理技巧包括:1. 字符串拆分;2. 字符串连接;3. 字符串替换;4. 正则表达式;5. HTML 解析。此外,还有字符编码处理、字符过滤、字符转义等补充技巧。这些技术可用于有效地解析和提取网页中的信息。 Python爬虫中字符串处理技巧 前言 在Python爬虫中,经…

    2025年12月13日
    000
  • python爬虫怎么学最牛逼

    成为一名优秀的 Python 爬虫开发者的步骤:掌握 Python 基础知识,包括语法、数据结构、算法、库和并发性。熟悉 HTML 和 CSS 结构和语法,并学习使用XPath、CSS选择器和正则表达式解析和提取数据。从简单到复杂的爬虫项目实战,分析网站结构并制定有效策略。使用代理和标头避免检测,实…

    2025年12月13日
    000
  • Python爬虫怎么爬取p内容

    使用Python爬虫爬取内容的方法:导入必要的包,如requests和BeautifulSoup。获取网页内容并解析HTML。定位元素。提取内容并打印。 利用Python爬虫爬取 内容 如何爬取 内容? 使用Python爬虫爬取 内容需要遵循以下步骤: 1. 导入必要的包 立即学习“Python免费…

    2025年12月13日
    000
  • python爬虫出现乱码怎么弄

    Python 爬虫爬取中文网页时出现乱码,原因是网页使用 UTF-8 编码而 Python 使用 ASCII 编码。解决方案: 1. 指定 get() 请求的编码为 UTF-8; 2. 使用 BeautifulSoup 等第三方库自动检测编码; 3. 使用 decode() 方法手动解码网页内容。 …

    2025年12月13日
    000
  • python带分页爬虫怎么弄

    如何使用 Python 编写分页爬虫:安装 requests、bs4 和 time 库。分析目标网站的分页机制。根据分页机制构造分页 URL 函数。使用循环爬取所有分页结果。实现 extract_data() 函数以提取所需数据。处理提取的数据。通过检查“下一页”链接、最后一个分页链接或页面上的特定…

    2025年12月13日
    000
  • python爬虫断点后怎么办

    当Python爬虫意外终止时,可通过以下步骤恢复断点:检查是否存在已保存的检查点。使用scrapy.extensions.checkpoint或scrapy_redis等第三方库实现断点恢复。手动恢复:a. 确定上次爬取的页面或数据;b. 更改起始URL或参数从该点开始爬取。从URL列表恢复:从列表…

    2025年12月13日
    000
  • python爬虫怎么爬贴吧

    Python 爬取贴吧的步骤包括:安装库:requests、bs4、lxml构建请求:指定贴吧 URL 和用户代理解析响应:使用 bs4 或 lxml 解析 HTML 响应提取数据处理数据:提取贴子标题、内容、作者、发帖时间等信息 Python爬虫如何抓取贴吧 第一步:安装必要的库 使用 Pytho…

    2025年12月13日
    000
  • python爬虫怎么防止入坑

    常见的 Python 爬虫陷阱及解决方案:过度抓取:使用礼貌延时并避免违反网站指示。IP 被封:使用代理或 Tor 网络隐藏 IP 地址。动态加载内容:使用 Selenium 模拟浏览器抓取 JavaScript 内容。正则表达式滥用:仔细设计并测试正则表达式,或使用其他解析方法。HTML 结构变化…

    2025年12月13日
    000
  • python爬虫怎么只保留文字

    使用 Python 爬虫时,保留网页文本而不包含 HTML 标签的方法有两种:使用 BeautifulSoup 库,调用其 get_text() 方法获取文本内容。使用正则表达式匹配并替换 HTML 标签,提取纯文本内容。 Python 爬虫只保留文字的方法 在使用 Python 爬虫抓取网页内容时…

    2025年12月13日
    000
  • python爬虫怎么获取网站日志

    推荐使用 Python 爬虫获取网站日志,具体步骤如下:确定日志位置,通常在网站服务器上。使用 FTP 或 SSH 访问服务器,并导航到日志文件的位置。下载日志文件到本地计算机。使用 re、csv 和 paramiko 等 Python 库解析日志文件以提取所需信息。 如何使用 Python 爬虫获…

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信