![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
LangChain
文章平均质量分 88
LangChain学习笔记,参考资料:https://python.langchain.com.cn/docs/
https://python.langchain.com/docs/get_started
荧惑yh
这个作者很懒,什么都没留下…
展开
-
LangChain核心模块——Agents
Agents的核心思想是使用语言模型来选择要采取的一系列操作。在Chains中,一系列操作被硬编码(在代码中)。在Agents中,语言模型被用作推理引擎来确定要采取哪些操作以及按什么顺序。原创 2024-04-04 22:22:40 · 1518 阅读 · 0 评论 -
LangChain使用实例——Query analysis
“Search”为许多用例提供支持——包括检索增强生成的“检索”部分。最简单的方法是将用户问题直接传递给检索器。为了提高性能,还可以使用“query analysis”以某种方式“优化”查询。传统上,这是通过基于规则的技术来完成的,但随着LLM的兴起,使用LLM来实现这一点变得越来越流行而且更加可行。具体来讲,这涉及将原始问题(或消息列表)传递到LLM并返回一个或多个优化查询,这些查询通常包含一个字符串和可选的其他结构化信息。原创 2024-03-31 14:47:54 · 934 阅读 · 0 评论 -
LangChain使用实例——RAG
LLMs支持的最强大的应用程序之一是复杂的问答 (Q&A) 聊天机器人,这些应用程序可以回答有关特定源信息的问题,使用一种称为(RAG)的技术。原创 2024-03-27 10:13:44 · 1371 阅读 · 0 评论 -
LangChain核心模块 Retrieval——Indexing
最重要的是,Indexing API 甚至可以处理相对于原始源文档经历了多个转换步骤(例如,通过文本分块)的文档。原创 2024-03-25 10:04:38 · 1033 阅读 · 0 评论 -
LangChain核心模块 Retrieval——Retrievers
数据进入数据库,仍然需要检索,LangChain支持多种检索算法。LangChain支持易于上手的基本方法——即简单语义搜索。然而,我们还在此基础上添加了一系列算法以提高性能。检索器是一个接口,它根据非结构化查询返回文档,它比矢量存储更通用。检索器不需要能够存储文档,只需返回(或检索)它们即可。矢量存储可以用作检索器的骨干,但也有其他类型的检索器。检索器接受字符串查询作为输入,并返回文档列表作为输出。原创 2024-03-25 10:03:54 · 2259 阅读 · 0 评论 -
LangChain核心模块 Retrieval——文本嵌入模型、Vector stores
Embeddings创建一段文本的矢量表示,这样我们就可以在向量空间中思考文本,并执行语义搜索之类的操作,在向量空间中查找最相似的文本片段。存储和搜索非结构化数据的最常见方法之一是将其嵌入,并存储生成的嵌入向量,然后在查询时嵌入非结构化查询并检索与嵌入查询“最相似”的嵌入向量。支持缓存的嵌入器是嵌入器的包装器,它将嵌入缓存在键值存储中。将它们作为两种单独方法的原因是,某些嵌入提供程序对文档(要搜索的)与查询(搜索查询本身)有不同的嵌入方法。嵌入单个查询,嵌入一段文本是为了与其他嵌入的文本进行比较。原创 2024-03-24 17:02:34 · 1092 阅读 · 0 评论 -
LangChain核心模块 Retrieval——文本分割
是一个“结构感知”分块器,它在元素级别拆分文本,并为每个与任何给定块“相关”的标题添加元数据。这样做的效果是尝试将所有段落(然后是句子,然后是单词)尽可能长时间地放在一起,因为这些通常看起来是语义相关性最强的文本片段。“语义相关”的含义可能取决于文本的类型。在较高层次上,它会分成句子,然后分成 3 个句子为一组,然后合并嵌入空间中相似的句子。检索的关键部分时仅获取文档的相关部分,主要任务之一是将大文档分割为更小的块。最简单的例子是,将长文档分割成更小的块,以适合模型的上下文窗口。原创 2024-03-24 12:36:05 · 1316 阅读 · 0 评论 -
LangChain核心模块 Retrieval——文档加载器
许多LLM申请需要用户的特定数据,这些数据不属于模型训练集的一部分,实现这一目标的主要方法是RAG(检索增强生成),在这个过程中,将检索外部数据,然后在执行生成步骤时将其传递给LLM。 LangChain 提供了 RAG 应用程序的所有构建模块 - 从简单到复杂。文档的这一部分涵盖了与检索步骤相关的所有内容 - 例如数据的获取。原创 2024-03-24 12:34:14 · 1364 阅读 · 0 评论 -
LangChain核心模块 Model I/O——Output Parsers
输出解析器负责获取 LLM 的输出并将其转换为更合适的格式。输出解析器是帮助构建语言模型响应的类。原创 2024-03-23 12:50:55 · 284 阅读 · 0 评论 -
LangChain核心模块 Model I/O——LLMs
Large Language Models (LLMs) 是LangChain的核心组件,LangChain不为自己的LLMs提供服务,而是提供一个标准接口来与许多不同的LLMs进行交互。具体来说,该接口是以字符串作为输入并返回字符串的接口。原创 2024-03-23 12:49:21 · 498 阅读 · 0 评论 -
LangChain核心模块 Model I/O——Chat Models
流支持默认返回单个值的迭代器(或异步流情况下的 AsyncIterator),即底层 ChatModel 提供程序返回的最终结果。这显然不会为您提供逐个令牌的流式传输,这需要 ChatModel 提供商的本机支持,但确保需要令牌迭代器的代码可以适用于我们的任何 ChatModel 集成。对于原型设计非常有用,但不允许实现您可能想要从聊天模型中获得的所有功能,但它实现起来很快,如果您需要更多功能,您可以过渡到。许多模型实现了帮助器方法,这些方法将负责格式化不同的类似函数的对象并将其绑定到模型。原创 2024-03-23 12:47:05 · 1326 阅读 · 0 评论 -
LangChain核心模块 Model I/O——Prompts
模板可以包括说明、少量示例以及适合给定任务的特定上下文和问题,LangChain提供了创建和使用提示模板的工具,LangChain致力于创建与模型无关的模板,以便能够轻松地跨不同语言模型重用现有模板。 语言模型的提示是用户提供的一组指令或输入,用于指导模型的响应,帮助模型理解上下文并生成相关且连贯的基于语言的输出,例如回答问题、完成句子或参与某项活动。在此管道中,每个新元素都是最终提示中的一条新消息。“部分”提示模板是有意义的 - 例如传入所需值的子集,以创建一个新的提示模板,该模板仅需要剩余的值子集。原创 2024-03-23 12:45:26 · 1610 阅读 · 0 评论 -
LangChain核心模块 Model I/O——相关概念
LangChain 集成的模型主要有两种类型:LLMs 和Chat Models。它们由它们的输入和输出类型定义。它们由它们的输入和输出类型定义。LLMsLangChain中的LLMs指的是纯文本补全模型,它们包装的 API 将字符串提示作为输入并输出字符串完成。Chat Models通常由LLMs支持,但专门针对对话进行了调整。最重要的是,它们的API使用与纯文本完成模型不同的接口。不再使用单个字符串,而是将聊天消息列表作为输入,并返回 AIMessage作为输出。原创 2024-03-23 12:43:46 · 707 阅读 · 0 评论 -
LangChain核心模块 Model I/O
任何语言模型应用程序的核心元素都是。LangChain 为您提供了与任何语言模型交互的构建块。原创 2024-03-23 12:42:01 · 337 阅读 · 0 评论 -
LangChain表达式LCEL(六)
最常见和最有价值的组合是:->LLMChatModel->几乎任何其它链都会使用这个构建块。原创 2024-03-20 19:33:34 · 1074 阅读 · 0 评论 -
LangChain表达式LCEL(五)
RunnableParallel 对于非常有用。这里提示的输入应该是一个带有“context”和“question”键的地图。用户输入只是问题。因此,我们需要使用检索器获取上下文,并通过“question”键下的用户输入。请注意,当将 RunnableParallel 与另一个 Runnable 组合时,我们甚至不需要将字典包装在 RunnableParallel 类中 - 类型转换已为我们处理。原创 2024-03-19 22:24:52 · 1046 阅读 · 0 评论 -
LangChain表达式LCEL(四)
流式处理对于基于 LLM 的应用程序对最终用户的响应至关重要,重要的 LangChain 原语,如 LLMs、解析器、提示、检索器和代理实现了 LangChain Runnable 接口。原创 2024-03-19 22:24:17 · 870 阅读 · 0 评论 -
LangChain表达式LCEL(三)
为了尽可能简化创建自定义链的过程,我们实现了一个“Runnable”协议,这是一个标准接口,可以轻松定义自定义链并以标准方式调用它们。streaminvokebatchastreamainvokeabatch和所有可运行对象都公开输入和输出的:创建一个简单的PromptTemplate + ChatModel链。原创 2024-03-18 22:06:22 · 1146 阅读 · 0 评论 -
LangChain表达式LCEL(二)
LCEL通过提供以下功能,使得从基本组件构建复杂链变得容易。Runnableinvokebatchstreamainvoke:简单的提示+模型链。原创 2024-03-18 22:04:35 · 339 阅读 · 0 评论 -
LangChain表达式LCEL(一)
LangChain表达式语言(LCEL)是一种声明式的方式,可以将链条组合在一起。LCEL从一开始就被设计为。原创 2024-03-17 21:44:19 · 1022 阅读 · 0 评论 -
LangChain模块介绍
构建私域知识库时所用到的Data,更多是强调怎么把外部的数据获取进过来,并存储到一个地方,然后基于这个地方再进行相关的搜索或数据提取,因此在这个步骤有不同的参与方,再把各个参与方进行不同的串联或组合。用来给对话形式的model存储对话的历史记录,还可以将历史记录重新的灌入到对话中。串联Model I/O、Data Connections、Memory。顾名思义,LangChain提供了回调能力,做日志记录、调用链路的追踪。不仅会把计划列出来,还会去执行这些计划。Agent的灵魂,可以实时搜索并做总结。原创 2024-03-17 15:54:11 · 1219 阅读 · 0 评论 -
LangChain快速入门
LangChain应用程序的核心构建模块是LLMChain。原创 2024-03-17 15:34:34 · 367 阅读 · 0 评论