Langchain极简教程: 三、数据连接

系列文章

Langchain极简教程: 一、Hello Langchain
Langchain极简教程: 二、模型
Langchain极简教程: 三、数据连接
Langchain极简教程: 四、提示词
Langchain极简教程: 五、输出解析器
Langchain极简教程: 六、链
Langchain极简教程: 七、记忆组件
Langchain极简教程: 八、代理 (Agent)
Langchain极简教程: 九、一个完整的RAG案例

什么是数据连接?

LLM应用往往需要用户特定的数据,而这些数据并不属于模型的训练集。LangChain 的数据连接概念,通过提供以下组件,实现用户数据的加载、转换、存储和查询:

  • 文档加载器:从不同的数据源加载文档
  • 文档转换器:拆分文档,将文档转换为问答格式,去除冗余文档,等等
  • 文本嵌入模型:将非结构化文本转换为浮点数数组表现形式,也称为向量
  • 向量存储:存储和搜索嵌入数据(向量)
  • 检索器:提供数据查询的通用接口

我们通过下一段落的实践,来介绍这些组件的使用。

数据连接实践

在LLM应用连接用户数据时,通常我们会以如下步骤完成:

  1. 加载文档
  2. 拆分文档
  3. 向量化文档分块
  4. 向量数据存储

这样,我们就可以通过向量数据的检索器,来查询用户数据。接下来我们看看每一步的代码实现示例。最后,我们将通过一个完整的示例来演示如何使用数据连接。

加载文档

Langchain 提供了多种文档加载器,用于从不同的数据源加载不同类型的文档。比如,我们可以从本地文件系统加载文档,也可以通过网络加载远程数据。想了解 Langchain 所支持的所有文档加载器,请参考Document Loaders

在本节课程中,我们将使用最基本的 TextLoader 来加载本地文件系统中的文档。代码如下:

from langchain_community.document_loaders.text import TextLoader

loader = TextLoader("./data/README.md")
docs = loader.load()

在上述代码中,我们使用 TextLoader 加载了本地文件系统中的 ./data/README.md 文件。TextLoaderload 方法返回一个 Document 对象数组(DocumentLangchain 提供的文档类,包含原始内容和元数据)。我们可以通过 Document 对象的 content 属性来访问文档的原始内容。

完整代码请参考本节课程的示例代码

拆分文档

拆分文档是文档转换中最常见的操作。拆分文档的目的是将文档拆分为更小的文档块,以便更好地利用模型。当我们要基于长篇文本构建QA应用时,必须将文本分割成块,这样才能在数据查询中,基于相似性找到与问题最接近的文本块。这也是常见的AI问答机器人的工作原理。

Langchain 提供了多种文档拆分器,用于将文档拆分为更小的文档块。我们逐个看看这些拆分器的使用方法。

按字符拆分

Character

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值