开源模型应用落地-LangChain实用小技巧-使用各种Loader高效解析不同数据源(七)

一、前言

  在 LangChain框架中,提供了Loader机制,以统一的方式来从各种数据源获取数据,使得开发人员可以方便地集成不同类型的数据源,而无需为每种数据源编写特定的加载代码。它可以将不同格式的数据转换为 LangChain 可以处理的统一格式,为后续的文本处理、知识提取和问答等任务提供基础。


二、术语

2.1.LangChain

    是一个全方位的、基于大语言模型这种预测能力的应用开发工具。LangChain的预构建链功能,就像乐高积木一样,无论你是新手还是经验丰富的开发者,都可以选择适合自己的部分快速构建项目。对于希望进行更深入工作的开发者,LangChain 提供的模块化组件则允许你根据自己的需求定制和创建应用中的功能链条。

    LangChain本质上就是对各种大模型提供的API的套壳,是为了方便我们使用这些 API,搭建起来的一些框架、模块和接口。

   LangChain的主要特性:
        1.可以连接多种数据源,比如网页链接、本地PDF文件、向量数据库等
        2.允许语言模型与其环境交互
        3.封装了Model I/O(输入/输出)、Retrieval(检索器)、Memory(记忆)、Agents(决策和调度)等核心组件
        4.可以使用链的方式组装这些组件,以便最好地完成特定用例。
        5.围绕以上设计原则,LangChain解决了现在开发人工智能应用的一些切实痛点。


三、前提条件 

3.1. 基础环境

  1.  操作系统:不限

3.2. 安装虚拟环境

conda create --name langchain python=3.10
conda activate langchain
pip install langchain langchain-community
pip install unstructured[all-docs]==0.13.2

四、技术实现

4.1.加载markdown文本

markdown文件内容:

# 一级标题这是一个段落。
这里可以包含一些**加粗**的文字,一些_*斜体*的文字。## 二级标题1. 第一项
2. 第二项
3. 第三项### 三级标题* 第一项
* 第二项
* 第三项

测试代码:

# -*- coding: utf-8 -*-from langchain_community.document_loaders import TextLoaderdef markdown_loader():loader = TextLoader("test.md",encoding="utf-8")docs = loader.load()# print(len(docs))for i in range(0,len(docs)):print(docs[i].page_content)if __name__ == '__main__':markdown_loader()

调用结果:

4.2.加载文件目录

测试代码:

# -*- coding: utf-8 -*-from langchain_community.document_loaders import DirectoryLoaderdef directory_loader():loader = DirectoryLoader(path="E:\\BaiduNetdiskDownload\\", glob="*.md",show_progress=True)docs = loader.load()print(docs)if __name__ == '__main__':directory_loader()

调用结果:

ps:

1. 需要下载nltk模型

2. nltk.download('punkt_tab')

3. nltk.download('averaged_perceptron_tagger_eng')

4.3.加载html

html文件内容:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>一级标题</h1>这是一个段落。<br>
这里可以包含一些<b></b>加粗</b>的文字,一些<i>斜体</i>的文字。<h2>二级标题</h2><ol>
<li>第一项</li>
<li>第二项</li>
<li>第三项</li>
</ol><h3>三级标题</h3><ul>
<li>第一项</li>
<li>第二项</li>
<li>第三项</li>
</ul></body>
</html>

测试代码:

# -*- coding: utf-8 -*-from langchain_community.document_loaders import UnstructuredHTMLLoaderdef html_loader():loader = UnstructuredHTMLLoader('test.html')docs = loader.load()print(docs)if __name__ == '__main__':html_loader()

调用结果:

4.4.加载JSON

安装依赖:

pip install jq

json文件内容:

[{"role": "system","content": "You are a helpful assistant."},{"role": "user","content": "请推荐一些广州的特色景点?"}
]

测试代码:

# -*- coding: utf-8 -*-from langchain_community.document_loaders import JSONLoaderdef json_loader():loader = JSONLoader(file_path="test.json", jq_schema=".",text_content=False)docs = loader.load()print(docs)if __name__ == '__main__':json_loader()

调用结果:

4.5.加载PDF

安装依赖:

pip install pypdf

PDF文件内容:

测试代码:

# -*- coding: utf-8 -*-from langchain_community.document_loaders import  PyPDFLoaderdef pdf_loader():loader = PyPDFLoader(file_path="E:\\BaiduNetdiskDownload\\ChatGLM分享.pdf")docs = loader.load()print(docs)if __name__ == '__main__':pdf_loader()

调用结果:

4.6.加载CSV

CSV文件内容:

name    age
张三丰 100
李长生 180

测试代码:

# -*- coding: utf-8 -*-from langchain_community.document_loaders import CSVLoaderdef csv_loader():loader = CSVLoader(file_path="test.csv",encoding="utf-8")docs = loader.load()print(docs)if __name__ == '__main__':csv_loader()

调用结果:

4.7.完整示例

# -*- coding: utf-8 -*-from langchain_community.document_loaders import TextLoader, UnstructuredHTMLLoader, JSONLoader, PyPDFLoader, CSVLoader,DirectoryLoaderdef markdown_loader():loader = TextLoader("test.md", encoding="utf-8")docs = loader.load()for i in range(0, len(docs)):print(docs[i].page_content)def directory_loader():loader = DirectoryLoader(path="E:\\BaiduNetdiskDownload\\", glob="*.md", show_progress=True)docs = loader.load()print(docs)def html_loader():loader = UnstructuredHTMLLoader('test.html')docs = loader.load()print(docs)def json_loader():loader = JSONLoader(file_path="test.json", jq_schema=".",text_content=False)docs = loader.load()print(docs)def pdf_loader():loader = PyPDFLoader(file_path="E:\\BaiduNetdiskDownload\\ChatGLM分享.pdf")docs = loader.load()print(docs)def csv_loader():loader = CSVLoader(file_path="test.csv",encoding="utf-8")docs = loader.load()print(docs)if __name__ == '__main__':csv_loader()

五、附带说明

5.1.问题一:ImportError: failed to find libmagic. Check your installation

解决:

pip uninstall python-magic
pip install python-magic-bin==0.4.14

PS:

python-magic-bin库要与unstructured库兼容,示例中,unstructured使用0.13.2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/500556.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SSRF服务端请求Gopher伪协议白盒测试

前言 是什么SSRF&#xff1f; 这个简单点说就是 服务端的请求伪造 就是这个如果是个 请求图片的网站 他的目的是请求外部其他网站的 图片 但是 SSRF指的是让他请求本地的图片 再展示出来 请求的是他的服务器上的图片 SSRF(Server-Side Request Forgery:服务器端请求伪造) …

数据可视化-16. 日历图

目录 1. 日历图的概念 2. 日历图的适用场景 2.1 事件或活动的频率分析 2.2 数据的时间周期性分析 2.3 异常值检测 2.4 绩效监控 3. 日历图的缺陷 3.1 粒度受限于天数 3.2 数据密度过高时候难以解读 3.3 难以比较多个数据集 3.4 周期性较长的数据不易展示 4. 日历图…

Flink源码解析之:如何根据JobGraph生成ExecutionGraph

Flink源码解析之&#xff1a;如何根据JobGraph生成ExecutionGraph 在上一篇Flink源码解析中&#xff0c;我们介绍了Flink如何根据StreamGraph生成JobGraph的流程&#xff0c;并着重分析了其算子链的合并过程和JobGraph的构造流程。 对于StreamGraph和JobGraph的生成来说&…

LeetCode算法题——有序数组的平方

题目描述 给你一个按非递减顺序排序的整数数组nums&#xff0c;返回每个数字的平方组成的新数组&#xff0c;要求也按非递减顺序排序。 题解 解法一&#xff1a;暴力解法 思路&#xff1a; 该题目可通过暴力解法解决&#xff0c;即利用for循环遍历数组&#xff0c;对数组每…

【Python】FastAPI之SQLAlchemy、关联关系

第四节&#xff1a;SQLAlchemy操作数据库 一、SQLAlchemy介绍 SQLAlchemy 是一个功能强大且灵活的 Python SQL 工具包及对象关系映射&#xff08;ORM&#xff09;库&#xff0c;它提供了全面的数据库访问抽象层。通过 SQLAlchemy&#xff0c;开发者可以使用 Python 代码来定义…

GRAPE——RLAIF微调VLA模型:通过偏好对齐提升机器人策略的泛化能力(含24年具身模型汇总)

前言 过去的这两年&#xff0c;工作之余&#xff0c;我狂写大模型与具身的文章&#xff0c;加之具身大火&#xff0c;每周都有各种朋友通过CSDN私我及我司「七月在线」寻求帮助/指导(当然&#xff0c;也欢迎各大开发团队与我司合作共同交付&#xff09;&#xff1a; 要么是做…

基于 LangChain 实现数据库问答机器人

基于 LangChain 实现数据库问答机器人 一、简介二、应用场景三、实战案例1、需求说明2、实现思路3、对应源码 一、简介 在 Retrieval 或者 ReACT 的一些场景中&#xff0c;常常需要数据库与人工智能结合。而 LangChain 本身就封装了许多相关的内容&#xff0c;在其官方文档-SQ…

Kali 自动化换源脚本编写与使用

1. 背景与需求 在使用 Kali Linux 的过程中&#xff0c;软件源的配置对系统的更新与软件安装速度至关重要。 Kali 的默认官方源提供了安全且最新的软件包&#xff0c;但有时由于网络条件或地理位置的限制&#xff0c;使用官方源可能会出现速度较慢的问题。 为了解决这一问题&a…

1Panel自建RustDesk服务器方案实现Windows远程macOS

文章目录 缘起RustDesk 基本信息实现原理中继服务器的配置建议 中继服务器自建指南准备服务器安装1Panel安装和配置 RustDesk 中继服务防火墙配置和安全组配置查看key下载&安装&配置客户端设置永久密码测试连接 macOS安装客户端提示finder写入失败hbbs和hbbr说明**hbbs…

Maple软件的安装和使用

文章目录 1.前言说明2.我为什么要学习Maple3.软件的安装4.如何使用4.1基本的赋值语句4.2函数的定义4.3三个类型的书写介质 5.指数运算5.1使用面板5.2自己输入 6.对数的使用 1.前言说明 众所周知&#xff0c;我虽然是一名这个计算机专业的学生&#xff0c;但是我对于数学&#…

Nacos配置中心总结

Nacos配置中心总结 Nacos配置文件的加载顺序和优先级 加载顺序 nacos作为配置中心时&#xff0c;需要在bootstrap.yml文件中添加nacos config相关的配置&#xff0c;这样系统启动时就能先去拉取nacos server上的配置了。拉取过来后会和本地配置文件进行合并。 bootstrap.ym…

Java开发-后端请求成功,前端显示失败

文章目录 报错解决方案1. 后端未配置跨域支持2. 后端响应的 Content-Type 或 CORS 配置问题3. 前端 request 配置问题4. 浏览器缓存或代理问题5. 后端端口未被正确映射 报错 如下图&#xff0c;后端显示请求成功&#xff0c;前端显示失败 解决方案 1. 后端未配置跨域支持 …

springboot523基于Spring Boot的大学校园生活信息平台的设计与实现(论文+源码)_kaic

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本大学校园生活信息平台就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据…

【Ubuntu使用技巧】Ubuntu22.04无人值守Crontab工具实战详解

一个愿意伫立在巨人肩膀上的农民...... Crontab是Linux和类Unix操作系统下的一个任务调度工具&#xff0c;用于周期性地执行指定的任务或命令。Crontab允许用户创建和管理计划任务&#xff0c;以便在特定的时间间隔或时间点自动运行命令或脚本。这些任务可以按照分钟、小时、日…

Linux(14)——网络管理

目录 一、检测网络配置&#xff1a; 1、查看网络接口&#xff08;ip&#xff09;&#xff1a; 2、查看性能&#xff08;ip&#xff09;&#xff1a; 3、查看 IP 地址&#xff08;ip&#xff09;&#xff1a; 4、查看路由表&#xff08;ip&#xff09;&#xff1a; 5、追踪…

《机器学习》——线性回归模型

文章目录 线性回归模型简介一元线性回归模型多元线性回归模型误差项分析一元线性模型实例完整代码 多元线性模型实例完整代码 线性回归模型简介 线性回归是利用数理统计中回归分析&#xff0c;来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。 相关关系&…

GeoTrust True BusinessID Wildcard

GeoTrust由DigiCert 提供支持&#xff0c;是最受信任和尊重的品牌之一&#xff0c;以提供高保证的网站安全而闻名。 GeoTrust True BusinessID通配符证书 – 以低成本保护多个主机名。即使将其用于您的公司主页或电子邮件服务器主机名&#xff0c;保护所有敏感信息也是您的目标…

华为配置 之 链路聚合

简介&#xff1a; 链路聚合&#xff08;Link Aggregation&#xff09;是一种计算机网络技术&#xff0c;通过将多个物理端口汇聚在一起&#xff0c;形成一个逻辑端口&#xff0c;以实现出/入流量吞吐量在各成员端口的负荷分担。当交换机检测到其中一个成员端口的链路发生故障时…

Angular Firebase CRUD 项目推荐

Angular Firebase CRUD 项目推荐 angular-firebase-crud Angular CRUD with Firebase using cloud firestore as a database, angular material and Bootstrap 4. Step by Step tutorial and working angular 7 example app. 项目地址: https://gitcode.com/gh_mirrors/an/an…

SqlSession的线程安全问题源码分析

&#x1f3ae; 作者主页&#xff1a;点击 &#x1f381; 完整专栏和代码&#xff1a;点击 &#x1f3e1; 博客主页&#xff1a;点击 文章目录 SqlSession 是线程安全的吗&#xff1f;为什么说是线程不安全的&#xff1f;事务管理问题 数据库连接的共享问题 一级缓存线程安全问题…