基于LangChain的LLM应用开发 - RAG

什么是RAG

RAG,全称Retrieval-Augmented Generation,是一种结合了检索和生成的大型语言模型。它的工作原理是,首先从大量的文档中检索出相关的信息,然后将这些信息用于指导生成模型的输出。

RAG模型的主要优点是,它可以利用大量的非结构化文本数据,而不仅仅是训练时的输入-输出对。这使得它在处理一些需要大量背景知识或者需要引用外部信息的任务时,比如问答、对话系统等,表现出很好的效果。

RAG模型的一个关键组成部分是一个检索系统,它可以从大量的文档中快速准确地找到相关的信息。另一个关键组成部分是一个生成模型,它可以根据检索到的信息生成连贯、准确的文本。

RAG模型的一个主要挑战是如何有效地将检索和生成两个部分结合起来。这需要设计一种机制,使得生成模型可以有效地利用检索到的信息,而不是仅仅依赖于输入的文本。

如下为原理图

LangChain中实现RAG

(1)Document Loader
基础类:BaseLoader(ABC):

类定义了如何从不同的数据源加载文档,并提供了一个可选的方法来分割加载的文档。

使用这个类作为基础,开发者可以为特定的数据源创建自定义的加载器并确保所有这些加载器都提供了加载数据的方法。load_and_split方法还提供了一个额外的功能,可以根据需要将加载的文档分割为更小的块。

langchain.document_loader提供了各种data source加载器

e.g. TextLoader,CSVLoader,JSONLoader,ExcelLoader,PdfLoader....

Sample: TextLoader - 加载文本文件返回list:Document
from langchain.document_loaders import TextLoader
//创建TextLoader实例
//返回List<Document>
docs = TextLoader('../tests/state_of_the_union.txt').load()
>Sample: UnstructuredURLLoader - 加载网页内容

支持两种模式运行加载程序:"single"和"elements"。如果使用"single"模式,文档将作为单个langchain Document对象返回。如果使用"elements"模式,非结构化库将把文档拆分成标题和叙述文本等元素。

from langchain.document_loaders import UnstructuredURLLoader
urls = [&#
  • 29
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xinfeng118

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值