LangChain Agent v0.2.0简明教程 (中)

    • 4. Retrieval
        • 4.1 Document loaders
        • 4.2 Text Splitter
        • 4.3 Text embedding models
        • 4.4 Vector stores
        • 4.5 Retrievers
        • 4.6 Indexing

4. Retrieval

许多LLM需要使用特定用户的外部数据,这些数据不属于模型训练集的一部分。实现这一目标的主要方法是通过检索增强生成(RAG)。在此过程中,将检索外部数据,然后在执行生成步骤时将其传递给 LLM 。这包含几个关键模块:

在这里插入图片描述

4.1 Document loaders

Document loaders加载来自许多不同来source的文档。LangChain 提供 100 多种不同的文档加载器,并与该领域的其他主要提供商(例如 AirByte 和 Unstructed)集成。LangChain 提供了从所有类型的位置(私有 S3 存储桶、公共网站)加载所有类型文档(HTML、PDF、代码)的集成。收录了海量的第三方Document loaders。例如,有用于加载简单.txt文件的,用于加载相对结构化的markdown文件的,用于加载任何网页文本内容,甚至用于加载解析YouTube视频的脚本。(旧版本在langchain.document_loaders,新版本在langchain_community.document_loaders

使用Document loaders可以将源中的数据加载为DocumentDocument由一段文本和相关的元数据组成

TextLoader可以将任意文本文件加载为纯文本字符串元数据metadata,其中元数据包含source路径信息metadata={'source': '/home/pgao/yue/test.py'}

from langchain_community.document_loaders import TextLoader
loader = TextLoader(file_path)
print(loader.load())
# Document(page_content="xxx", metadata="xx")

JSONLoader指定的jq 架构来解析 JSON 文件(JSON Lines是一种文件格式.jsonl,其中每一行都是有效的 JSON 对象)。jq_schema可以选择加载的字段,jq_schema=‘.’加载整个json文件加载.jsonl文件时需要设置json_lines=True

from langchain_community.document_loaders import JSONLoader
from pprint import pprint

loader = JSONLoader(
    file_path='/home/pgao/yue/StyleDiff-Agent/results/dance_long/sd_prompts.json',
    jq_schema='.content',
    text_content=False)
data = loader.load()
pprint(data)

loader = JSONLoader(
    file_path='./example_data/facebook_chat_messages.jsonl',
    jq_schema='.content',
    text_content=False,
    json_lines=True)
data = loader.load()
4.2 Text Splitter

当我们加载Document到内存后,我们通常还会希望将他们尽可能的结构化 / 分块,以进行更加灵活的操作

最简单的例子是,我们很多时候都需要将一个长文档拆分成更小的块,以便放入模型的上下文窗口中;LangChain有许多内置的Document transformers(大部分都是Text Spliter,旧版本在langchain.document_loaders中,新版本在langchain.text_splitter中),可以轻松地拆分、合并、筛选和以其他方式操作文档,一些常用的Document transformers如下:

在这里插入图片描述

对于一般文本,默认推荐使用RecursiveCharacterTextSplitter文本分割器。它由字符列表参数化。它尝试按顺序分割它们,直到块足够小。默认列表是 ["\n\n", "\n", " ", ""]. 这样做的效果是尝试将所有段落(然后是句子,然后是单词)尽可能长时间地放在一起,因为这些通常看起来是语义相关性最强的文本片段,得到的text是分割好的str的list

# This is a long document we can split up.
with open("/home/pgao/yue/loveu-tgve-2023/README.md") as f:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

window: C++ 获取自己写的dll的地址

我自己用C写了一个插件,插件是dll形式的,我的插件式在dll的目录下有个config文件夹,里面是我用json写的插件配置文件,当插件运行的时候我需要读取到json配置文件,所有最重要的就是如何获取dll的路径. 大概就是这么个结构, 我自己封装了一个函数.只适用于window编程,因为里面用…

【ArcGIS】利用DEM进行水文分析:流向/流量等

利用DEM进行水文分析 ArcGIS实例参考 水文分析通过建立地表水文模型,研究与地表水流相关的各种自然现象,在城市和区域规划、农业及森林、交通道路等许多领域具有广泛的应用。 ArcGIS实例 某流域30m分辨率DEM如下: (1&#xff09…

【大数据】Flink 内存管理(一):设置 Flink 进程内存

Flink 内存管理(一):设置 Flink 进程内存 1.配置 Total Memory2.JVM 参数3.根据比例限制的组件(Capped Fractionated Components) Apache Flink 通过严格控制各种组件的内存使用,在 JVM 上提供高效的工作负…

LabVIEW储氢材料循环寿命测试系统

LabVIEW储氢材料循环寿命测试系统 随着氢能技术的发展,固态储氢技术因其高密度和安全性成为研究热点。储氢材料的循环寿命是衡量其工程应用的关键。然而,传统的循环寿命测试设备存在成本高、测试效率低、数据处理复杂等问题。设计了一种基于LabVIEW软件…

SQL-Labs靶场“46-50”关通关教程

君衍. 一、四十六关 ORDER BY数字型注入1、源码分析2、rand()盲注3、if语句盲注4、时间盲注5、报错注入6、Limit注入 二、四十七关 ORDER BY单引号报错注入1、源码分析2、报错注入3、时间盲注 三、四十八关 ODRER BY数字型盲注1、源码分析2、rand()盲注3、if语句盲注4、时间盲注…

汽车大灯尾灯灯罩裂了可以修复吗?汽车大灯尾灯裂缝修复用什么胶?拆开的灯罩用什么胶合壳密封?

随着科学技术的不断发展,汽车大灯尾灯破损是可以修的。 TADHE车灯无痕修复专用UV胶是一种经过处理的UV树脂胶,主要成份是改性丙烯酸UV树脂。应用在车灯的专业无痕修复领域。 其具备环氧树脂胶优点的同时,还有如下特点: 固化时间…

独立版表情包小程序完整版源码前后端源码,附带系统搭建教程

搭建要求: 1.系统要求Nginx 1.18.0PHP-7.2mysql5.6,开启 ssl,php需要安装 sg11 扩展 2.设置伪静态 location / { index index.php index.html index.htm; if (!-e $request_filename) { rewrite ^/(.*)$ /index.php?s$1; } } location /a…

华为OD机试真题-虚拟游戏理财-2023年OD统一考试(C卷)---Python3--开源

题目: 考察内容: for if max 代码: """ 题目分析:投资额*回报率投资回报 要在可接受范围内选择最优的投资方式获得最大回报最多投资2个理财产品输入: 产品数int; 总投资额int; 总风险int 产品投资…

C#中的dynamic怎么用

在C#中,dynamic 关键字允许您在编译时推迟类型检查,而是将类型检查推迟到运行时。这意味着可以在运行时确定对象的类型,而不是在编译时。这种行为与使用静态类型的编程方式有所不同,因为在编译时会对类型进行检查。 使用 dynamic …

k-means聚类、GMM高斯聚类、canopy聚类、DBSCAN聚类、FCM聚类、ISODATA聚类、k-medoid聚类、层次聚类、谱聚类 对比

k-means聚类、GMM高斯聚类、canopy聚类、DBSCAN聚类、FCM聚类、ISODATA聚类、k-medoid聚类、层次聚类、谱聚类 对比 标 代码获取代码获取代码获取代码获取代码获取代码获取代码获取代码获取代码获取代码获取题 GMM(高斯混合模型)是一种聚类算法&#xff…

如何在 CentOS 上安装 ONLYOFFICE 文档 8.0

使用社区版,您可以在本地服务器上安装 ONLYOFFICE 文档,并将在线编辑器与 ONLYOFFICE 协作平台或其他热门系统集成在一起。 ONLYOFFICE 文档是什么 ONLYOFFICE 文档是一个功能强大的文档编辑器,支持处理文本文档、电子表格、演示文稿、可填写…

靡语IT:JavaScript函数

目录 一、基本概念 二、函数的声明和调用: 1、创建函数: ​编辑 2 、函数调用: 3、函数参数: 三、全局变量和局部变量 1、局部JavaScript 变量 2 、全局 JavaScript 变量 四、arguments 对象: 五、return 作用 六、嵌…

react hook使用UEditor引入秀米图文排版

里面坑比较多,细节也比较多 以下使用的是react 18 ice3.0,使用其他react脚手架的配置基本相同,例如umi4 1.下载UEditor 进入UEditor仓库,找到版本v1.4.3.3,点击进去 接着下载ueditor1_4_3_3-utf8-jsp.zip版本 下载好…

STL容器适配器之stack与queue

​ 1.stl里的stack与queue和string、vector、list等容器不一样,它们是容器适配器; ​ 2.容器适配器的本质是一种复用,不需要自己实现储存结构,而是根据需求提供接口,储存结构靠其他容器。反向迭代器是由正向迭代器适配…

基于Java SSM框架实现高校网课管理系统项目【项目源码+论文说明】

基于java的SSM框架实现高校网课管理系统演示 摘要 随着移动应用技术的发展,越来越多的学生借助于移动手机、电脑完成生活中的事务,许多的行业也更加重视与互联网的结合,以提高教学的教育水平和寻求更高的经济利益。针对高校网课管理系统&…

高级RAG:揭秘PDF解析

原文地址:https://pub.towardsai.net/advanced-rag-02-unveiling-pdf-parsing-b84ae866344e 2024 年 2 月 3 日 附加内容:揭秘PDF解析:如何从科学pdf论文中提取公式 对于RAG,从文档中提取信息是一个不可避免的场景。确保从源头…

LeetCode LCR 085.括号生成

正整数 n 代表生成括号的对数,请设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n 3 输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”] 示例 2: 输入&#x…

线程池(ThreadPoolExecutor,as_completed)和scrapy框架初步构建——学习笔记

用法1:map函数 with ThreadPoolExecutor() as pool: results pool.map(craw,utls)for result in results:print(result) 1.Scrapy框架: 五大结构:引擎,下载器,爬虫,调度器,管道&#x…

<网络安全>《50 网络攻防专业课<第十四课 - 华为防火墙的使用(3)>

7防火墙的防范技术(2) 7.1 DNS Flood攻击防范 攻击介绍 攻击者在短时间内通过向DNS(Domain Name System)服务器发送大量的查询报文,使得服务器不得不对所有的查询请求进行回应,导致DNS服务器无法为合法用户…

Spring的优点

1.方便解耦,简化开发 Spring就是一个容器,可以将所有对象创建和关系维护交给Spring管理。 2.AOP编程支持 面向切面编程,方便实现程序进行权限拦截,运行监控等功能。 3.声明式事务的支持 通过配置完成事务的管理,…