系列文章
Langchain极简教程: 一、Hello Langchain
Langchain极简教程: 二、模型
Langchain极简教程: 三、数据连接
Langchain极简教程: 四、提示词
Langchain极简教程: 五、输出解析器
Langchain极简教程: 六、链
Langchain极简教程: 七、记忆组件
Langchain极简教程: 八、代理 (Agent)
Langchain极简教程: 九、一个完整的RAG案例
什么是数据连接?
LLM应用往往需要用户特定的数据,而这些数据并不属于模型的训练集。LangChain 的数据连接概念,通过提供以下组件,实现用户数据的加载、转换、存储和查询:
- 文档加载器:从不同的数据源加载文档
- 文档转换器:拆分文档,将文档转换为问答格式,去除冗余文档,等等
- 文本嵌入模型:将非结构化文本转换为浮点数数组表现形式,也称为向量
- 向量存储:存储和搜索嵌入数据(向量)
- 检索器:提供数据查询的通用接口
我们通过下一段落的实践,来介绍这些组件的使用。
数据连接实践
在LLM应用连接用户数据时,通常我们会以如下步骤完成:
- 加载文档
- 拆分文档
- 向量化文档分块
- 向量数据存储
这样,我们就可以通过向量数据的检索器,来查询用户数据。接下来我们看看每一步的代码实现示例。最后,我们将通过一个完整的示例来演示如何使用数据连接。
加载文档
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 文件。TextLoader 的 load 方法返回一个 Document 对象数组(Document 是 Langchain 提供的文档类,包含原始内容和元数据)。我们可以通过 Document 对象的 content 属性来访问文档的原始内容。
完整代码请参考本节课程的示例代码。
拆分文档
拆分文档是文档转换中最常见的操作。拆分文档的目的是将文档拆分为更小的文档块,以便更好地利用模型。当我们要基于长篇文本构建QA应用时,必须将文本分割成块,这样才能在数据查询中,基于相似性找到与问题最接近的文本块。这也是常见的AI问答机器人的工作原理。
Langchain 提供了多种文档拆分器,用于将文档拆分为更小的文档块。我们逐个看看这些拆分器的使用方法。
按字符拆分
Character

最低0.47元/天 解锁文章
2782

被折叠的 条评论
为什么被折叠?



