![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LangChain
文章平均质量分 95
数智笔记
目前从事数据挖掘工作,期望在自己学习总结的同时,也能分享有益的东西给别人,希望有志者能在数据挖掘领域共同进步
展开
-
LangChain系列使用指南:组件介绍_数据处理_文本嵌入Embeddings
LangChain 中的基本 Embeddings 类提供了两种方法:一个用于嵌入文档,另一个用于嵌入查询。之所以将它们作为两个单独的方法,是因为一些嵌入提供商对文档(用于搜索)和查询(搜索查询本身)有不同的嵌入方法。这很有用,因为这意味着我们可以在向量空间中思考文本,并做一些类似语义搜索的操作,比如在向量空间中寻找最相似的文本片段。可以实现嵌入的缓存。缓存支持的嵌入器是一个包装器,用于在键值存储中缓存嵌入。首先,让我们看一个示例,该示例使用本地文件系统存储嵌入,并使用 FAISS 向量存储进行检索。原创 2024-03-24 14:23:30 · 1659 阅读 · 0 评论 -
LangChain系列使用指南:组件介绍_数据处理_检索器
由于检索器接口非常简单,编写自定义检索器非常容易。通常,摘要可能更准确地概括了一个块的内容,从而导致更好的检索结果。下面我们展示了如何创建摘要,然后嵌入它们。chain = (# 用于索引子块的向量存储# 父文档的存储层# 检索器(初始为空)您还可以提供一个提示以及一个输出解析器,将结果拆分为查询列表。# 输出解析器将LLM结果拆分为查询列表# "lines" 是解析输出的关键(属性名称)# 链# 其他输入# 运行) # "lines" 是解析输出的关键(属性名称)原创 2024-03-23 23:27:06 · 1342 阅读 · 0 评论 -
LangChain系列使用指南:组件介绍_数据处理_文本分割
标记分割的有效性在很大程度上取决于标记器对语言结构的理解,确保生成有意义的标记。它可以逐个元素返回分块,也可以将具有相同元数据的元素组合在一起,其目标是(a)将相关文本(或多或少)语义地分组,并(b)保留编码在文档结构中的上下文丰富信息。例如,在以下新闻文章(截至本文撰写时)中,文档的结构使得顶级标题的文本,虽然标记为“h1”,但位于与我们期望的文本元素“上方”在计算文本中的标记数时,应使用与语言模型中使用的相同的标记器。默认行为是将文本分割成适合您想要使用的句子转换模型的标记窗口的块。原创 2024-03-23 12:53:04 · 1252 阅读 · 0 评论 -
LangChain系列使用指南:组件介绍_数据处理_文档索引
将文档索引到向量存储时,可能需要删除一些现有文档。在某些情况下,您可能希望删除与正在索引的新文档来自相同来源的任何现有文档。在其他情况下,您可能希望全部删除现有文档。当内容发生变异时(例如,源 PDF 文件已经修订),在索引期间会有一段时间,用户可能会同时获取新旧版本。至关重要的是,索引 API 即使对已经经历多个转换步骤的文档(例如通过文本分块)也能正常工作,与原始源文档相关。如果我们突变一个文档,新版本将被写入,所有共享相同来源的旧版本将被删除。例如,如果这些文档代表某个父文档的片段,则两个文档的。原创 2024-03-23 09:24:12 · 1357 阅读 · 0 评论 -
LangChain系列使用指南:组件介绍_数据处理_文件解析
langchain处理各类文件类型原创 2024-03-23 09:15:14 · 1310 阅读 · 0 评论 -
LangChain系列使用指南:组件介绍_模型输入输出_输出格式化
在某些情况下,您可能希望实现一个自定义解析器,将模型输出结构化为自定义格式。使用 LCEL 中的或– 我们强烈推荐这种方式用于大多数情况通过继承输出解析的基类之一来实现 – 这是一种较为复杂的方式这两种方法之间的区别主要是表面的,主要体现在触发哪些回调(例如vs.),以及可追踪平台(如 LangSmith)中可视化可运行 lambda 和解析器的方式。原创 2024-03-19 07:34:30 · 1388 阅读 · 0 评论 -
LangChain系列使用指南:组件介绍_模型输入输出_提示语Prompts
让我们编写一个示例选择器,根据单词长度选择要选择的示例。# 这假设部分输入将是一个 'text' 键# 初始化变量以存储最佳匹配及其长度差异# 遍历每个示例# 计算示例的第一个单词与新单词长度的差异# 如果当前示例长度更接近,则更新最佳匹配。原创 2024-03-18 10:43:43 · 1111 阅读 · 0 评论 -
LangChain系列使用指南:组件介绍_模型输入输出_大语言模型
本文介绍如何创建一个自定义的大语言模型(LLM)包装器,以便您可以使用自己的LLM或与LangChain支持的不同包装器。一个_call方法,接受一个字符串和一些可选的停用词,并返回一个字符串。一个_llm_type属性,返回一个字符串,仅用于日志记录目的。一个属性,用于帮助打印此类。应返回一个字典。让我们实现一个非常简单的自定义LLM,它只返回输入的前n个字符。n: int@propertydef _call(self,) -> str:@property"""获取标识参数。"""原创 2024-03-18 09:03:27 · 1092 阅读 · 0 评论 -
LangChain系列使用指南:组件介绍_模型输入输出_聊天模型
接口包装起来,可以让您在现有的 LangChain 程序中使用您的 LLM,并且只需进行最少的代码修改!它不允许您实现可能希望从聊天模型中获得的所有功能,但它很快实现,如果需要更多功能,可以过渡到下面展示的。实现,可以使用此技巧,但如果能够实现本机异步代码,那将是更好的解决方案,因为该代码将具有更少的开销。这是一个快速发展的领域,随着更多模型添加函数调用功能,预计会对此模式进行补充。,并且将从一些优化中受益(例如,通过线程池进行批处理),异步支持,首先,我们需要讨论消息,这些是聊天模型的输入和输出。原创 2024-03-17 08:17:15 · 1393 阅读 · 0 评论 -
LangChain系列使用指南:LangChain快速入门
我们仅涉及了提示、模型和输出解析器的基础知识 - 要深入了解这里提到的所有内容,请参阅文档的此部分。我们只是简单介绍了检索的基础知识 - 想要深入了解这里提到的所有内容,请参阅文档的这一部分。我们只是简单介绍了代理的基础知识 - 想要深入了解这里提到的所有内容,请参阅文档的这一部分。我们将展示如何使用通过 API 提供的模型,如 OpenAI,以及本地开源模型,使用像 Ollama 这样的集成。这个链将接收一个问题,查找相关文档,然后将这些文档连同原始问题传递给一个 LLM,并要求它回答原始问题。原创 2024-03-16 21:26:01 · 2828 阅读 · 0 评论