自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

swpucwf的博客

写自己的笔记,让别人卷去吧

  • 博客(216)
  • 资源 (3)
  • 收藏
  • 关注

原创 langchain从入门到精通(四十一)——基于ReACT架构的Agent智能体设计与实现

ReACT。在 LangChain 中,要想创建基于 ReACT 架构的智能体,其实也非常简单,导入 AgentExecutor、create_react_agent,在实例化的时候,传递对应的 工具 + prompt 即可,其中 ReACT 架构的智能体 prompt 是有要求的。query: str = Field(description="执行谷歌搜索的查询语句")# 1.定义工具与工具列表"一个低成本的谷歌搜索API。"当你需要回答有关时事的问题时,可以调用该工具。

2025-07-09 20:21:32 1299

原创 langchain从入门到精通(四十)——函数调用技巧与流程

由于市面上的大语言模型众多,并不是所有的大语言模型都支持 函数调用 这个功能的,还存在相当多的大模型并不支持(特别是开源模型),对于这类模型,其实也可以通过编写特定的 Prompt,即可让模型调用适当的工具,原理其实就是让大语言模型尽可能按照特定的格式进行输出(例如输出函数的调用参数 JSON 数据)。”,这个时候链应用就崩溃了,所以在生产环境中,涉及到 函数调用、路由逻辑 等需要规范化数据的内容,尽可能使用支持 函数调用 的大语言模型,避免程序变得很脆弱。

2025-07-09 19:48:55 949

原创 langchain从入门到精通(三十九)——大模型函数调用与agent开发

创建自定义工具的3种技巧与使用场景在使用 函数调用 或者创建 智能体 时,我们需要提供 工具列表,以便大语言模型可以使用这些工具,虽然 LangChain 内部集成了大量的工具和工具包,但并不一定适合我们的业务场景,更多场合下我们会使用自定义工具,在 LangChain 中提供了 3 种构建自定义工具的技巧:@tool 装饰器、StructuredTool.from_function()类方法、BaseTool子类,不同的方式有不同的优缺点与应用场景。

2025-07-09 17:13:20 699

原创 李宏毅机器学习笔记——梯度下降法

深度学习介绍基于仿生学的一种自成体系的机器学习算法,包括但不限于图像识别、语音、文本领域。梯度下降法作为深度学习算法种常用的优化算法梯度下降法,是一种基于搜索的最优化方法,最用是最小化一个损失函数。梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降是最常采用的方法之一,另一种常用的方法是最小二乘法。在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。最小二乘法的问题梯度下

2025-07-03 09:06:21 1061

原创 STL容器类

it!=v.end();

2025-07-03 09:06:09 1602

原创 C语言基础

功能:#define 是用于定义宏的预处理指令。宏类似于常量,它会在编译时被替换为定义的值。例如,这里的 PI 会在程序中所有用到的地方被替换为 3.14。特点:宏通常用大写字母命名,以区别于变量,且无需分号结尾。使用场景:通常用于定义常量(如 PI),或特定的短代码片段(如 #define SQUARE(x) ((x) * (x)))。字面常量:直接在代码中使用的固定值。整数常量:如10-50。浮点常量:如3.14-0.001。字符常量:如'A''z'。字符串常量:如。宏常量:使用。

2025-07-03 09:05:18 685

原创 langchain从入门到精通(三十八)——RAG优化策略(十四)使用Self-RAG纠正低质量的检索生成

例如:直接输出答案、重新检索、剔除不相关的内容、检测生成内容是否存在幻觉、检测生成内容是否有帮助等,可以把 Self-RAG 看成是一个拥有自我反思能力的智能体,这个智能体主要用来依据相关知识库回复用户问题,自我迭代,直到输出满意的结果。在 Self-RAG 架构中,用到了 3 处循环结构,对于该架构的 AI 应用,单纯使用 LCEL 表达式构建的链应用也没法或者很难实现整个过程,同样必须使用到。对于不熟悉的题目,快速翻阅参考书,找到相关部分,在脑海中整理分类和总结后,再在试卷上作答。

2025-07-03 00:32:06 359

原创 langchain从入门到精通(三十七)——RAG优化策略(十三) 纠正性索引增强生成CRAG优化策略

纠正性检索增强生成(Corrective Retrieval-Augmented Generation,CRAG)是一种先进的自然语言处理技术,旨在提高检索的生成方法的鲁棒性和准确性。在 CRAG 中引入了一个轻量级的检索评估器来评估检索到的文档的质量,并根据评估结果触发不同的知识检索动作,以确保生成结果的准确性。检索文档:首先,基于用户的查询,系统执行检索操作以获取相关的文档或信息。评估检索质量:CRAG 使用一个轻量级的检索评估器对检索到的每个文档进行质量评估,计算出一个量化的置信度分数。

2025-07-03 00:28:54 332

原创 langchain从入门到精通(三十六)——RAG优化策略(十二) ReRank重排序提升RAG系统效果

通过 LangSmith 观察该检索器的运行流程,可以发现,原始检索器找到了 4 条数据,但是经过重排序后,只返回了相关性高的 3 条(可设置),有一条被剔除了,这也是 压缩器 和 文档转换器 的区别(不过在旧版本的 LangChain 中,两个没有区别,所以在很多文档转换器的文档中都可以看到压缩器的存在)。等,体验与评分最好的是 Cohere 的在线模型,不过它是一项付费服务(注册账号提供免费额度),并且由于 Cohere 服务部署在海外,国内访问速度并没有这么快。,除此之外,重排序 一般还会。

2025-07-03 00:25:56 447

原创 langchain从入门到精通(三十五)——RAG优化策略(十一)递归文档树检索实施高级RAG优化理解

至此,在 RAG 的 索引阶段,这些具有代表性的优化策略其实我们已经讲解完了,涵盖了分割策略(语义分割、递归字符分割)多向量/表征检索RAPTOR递归文档树检索,其中 特定Embeddings 即考虑使用维度更高的文本嵌入模型,并没有复杂的使用技巧。目前在 索引阶段,使用最多的优化策略还是在文档加载/分割与特定Embeddings。

2025-07-03 00:21:07 1046

原创 langchain从入门到精通(三十四)——RAG优化策略(十)父文档检索器实现拆分和存储平衡

在这种情况下,我们真正想要做的是先将原始文档拆分成较大的块(例如 1000-2000 个 Token),然后将其拆分为较小块,接下来索引较小块,但是检索时返回较大块(非原文档)。输出内容会返回完整的文档片段,而不是拆分后的片段(但是在向量数据库中存储的是分割后的片段)中,只需要传递多一个 父文档分割器 即可,其他流程无需任何变化,更新后的部分代码如下。在上面的示例中,我们使用拆分的文档块检索数据原文档,但是。

2025-07-03 00:07:02 213

原创 langchain从入门到精通(三十三)——RAG优化策略(九) MultiVector实现多向量检索文档

通过上面的运行流程,可以很容易知道在 原始文档 和 摘要文档 中都在元数据中设置了 唯一标识,从向量数据库中找到符合规则的数据后,通过查找其 元数据 的唯一标识,即可在 文档数据库 中匹配出原文档,完成整个多表征/向量的检索。,其中 假设性查询检索 是利用 LLM 对切块后的文档生成多个 假设性标题,在向量数据库中存储 假设性标题 文档块,使用检索到的数据查找 原始文档。通过这种方式可以为一个文档块生成多条特征/向量,在检索时能提升关联文档被检索到的概率,多向量检索的运行流程其实也非常简单,以。

2025-07-01 23:45:33 668

原创 langchain从入门到精通(三十二)——RAG优化策略(八)自查询检索器实现动态数据过滤

在这段 原始提问 中,如果执行相应的向量数据库相似性搜索,其实是附加了 筛选条件 的,即 year=2023,但是在普通的相似性搜索中,是不会考虑 2023 年这个条件的(因为没有添加元数据过滤器,2022年和2023年数据在高维空间其实很接近),存在很大概率会将其他年份的数据也检索出来。接下来使用特定的转换器,将生成的查询语句转换成适配向量数据库的 过滤器,并在检索时传递该参数,从而完成自查询构建的全过程,不同的向量数据库对应的转换器差异也非常大。这个思想其实就是 查询构建 或者称为 自查询。

2025-07-01 23:31:32 749

原创 langchain从入门到精通(三十一)——RAG优化策略(七)逻辑路由缩小检索范围

但是对于 LLM 来说,如果使用普通的 prompt 来约束输出内容的格式与规范,因为 LLM 的特性,很难保证输出格式符合特定的需求,所以可以考虑使用 函数回调 来实现,即设定一个 虚假的函数,告诉 LLM,这个函数有对应的参数,让 LLM 强制调用这个函数,这个时候 LLM 就会输出函数的调用参数,从而保证输出的统一性。而且不仅仅是规范化输出,函数回调的作用还远远不仅如此,在下一章的课时中,我们会来重点学习函数回调/Agent/LangGraph,去构建更加智能的应用!考虑到问题中的代码以及。

2025-07-01 14:14:54 1038

原创 langchain从入门到精通(三十)—— 检索器组件深入学习与使用技巧及自定义检索器

除了向量数据库检索器,在 LangChain 内部还集成了大量的第三方检索器,这些检索器功能众多,涵盖:维基百科搜索、Weaviate 混合搜索、Zep 检索器、ES 搜索 等,链接:https://imooc-langchain.shortvar.com/docs/integrations/retrievers/。

2025-07-01 14:00:45 840

原创 langchain从入门到精通(二十九)—— VectorStore组件深入学习与检索方法

而在 LangChain 中MMR 的实现过程和 FAISS 的 带过滤器的相似性搜索 非常接近,同样也是先执行相似性搜索,并得到一个远大于 k 的结果列表,例如 fetch_k 条数据,然后对搜索得到的 fetch_k 条数据计算文档之间的相似度,通过加权得分找到最终的 k 条数据。对于 score_threshold 的具体数值,要看相似性搜索方法使用的逻辑、计算相似性得分的逻辑进行设置,并没有统一的标准,并且与向量数据库的数据大小也存在间接关系,数据集越大,检索出来的准确度相比少量数据会更准确。

2025-07-01 11:21:58 587

原创 langchain从入门到精通(二十八)——RAG优化策略(六)集成多种检索器算法实现混合检索及问题转换总结

在 RAG 的 查询转换 阶段,目前市面上主流的优化策略涵盖了:多查询重写、RAG 多查询结果融合、问题分解策略、回答回退策略、HyDE 混合策略、集成检索器策略等,不同的优化策略有不同的优缺点:多查询重写:实现简单,使用参数较小的模型也可以完成对查询的转换(不涉及回答),因为多查询可以并行检索,所以性能较高,但是在合并的时候,没有考虑到不同文档的权重,仅仅按照顺序进行合并,会让某些高权重的文档在使用时可能被剔除。

2025-07-01 10:51:21 911

原创 langchain从入门到精通(二十七)——RAG优化策略(五)混合策略实现doc-doc对称检索

在使用 HyDE混合策略 转换 query 时,生成的 doc 如下作者可能会说,艺术比工程更持久和独立。之前学习的优化策略都是将对应的 查询 生成 新查询,通过 新查询 来执行相应的检索,但是在数据库中存储的数据一般都是 文档 层面上的,数据会远远比 查询 要大很多,所以 query 和 doc 之间是不对称检索,能找到的相似性文档相对来说也比较少。对于 doc-doc 类型的检索,虽然在语义空间上保持了一致,但是在 query->doc 的过程中,受限于各种因素,仍然可能产生错误信息。

2025-07-01 10:35:02 512

原创 langchain从入门到精通(二十六)——RAG优化策略(四)回答回退策略策略提升负责问题检索准确率

所以相应速度更快,性能更高,并且复杂度更低,对于一些参数量较小的模型,也可以实现不错的效果,对于 问题分解策略-迭代式回答,在一些极端的情况下,模型输出了有偏差的内容,每次都在有偏差的 问题+答案 生成新内容,很有可能会导致最后的输出完全偏离开始的预设。,这是一种用于增强语言模型的推理和问题解决能力的技巧,它鼓励 LLM 从一个给定的问题或问题后退一步,提出一个更抽象、更高级的问题,涵盖原始查询的本质。,这是一种简单但强大的指导生成的方式,在某些情况下可以显著提高模型性能(与之对应的是零样本),

2025-07-01 10:11:18 417

原创 langchain从入门到精通(二十五)——RAG优化策略(三)问题分解策略提升负责问题检索准确率

迭代式回答,会将上一次的 提问+答案,还有这一次的 检索上下文 一起传递给 LLM,让其生成答案,迭代到最后一次,就是最终答案。在 LangChain 中,并没有针对 问题分解策略 实现对应的 检索器 或者 预设链,所以只能自行实现这个优化策略,由于问题分解策略同样也是先生成对应的子问题(深入优先),所以需要单独构建一条链先进行问题的分解,然后迭代执行相应的检索,得到上下文,并使用 LLM 回复该问题,将得到的 迭代答案+问题,传递给下一个子问题。亦或者是并行将每个问题的答案合并成最终问题。

2025-07-01 09:55:19 344

原创 langchain从入门到精通(二十四)——RAG优化策略(二)多查询结果融合策略及 RRF

本文介绍了多查询结果融合策略及其RRF算法。传统多查询重写策略可能导致文档数量膨胀且忽略权重,而RAG融合通过RRF算法对检索结果重新排序,输出Top K个最优结果。RRF算法采用倒排序排名公式,通过两层遍历计算文档得分,k值设为60以平衡高低排名文档的重要性。文章还提供了RRF的Python实现代码,并展示了如何在LangChain中自定义RAGFusionRetriever,继承MultiQueryRetriever并重写检索与合并方法,最终实现基于RRF的多查询结果融合检索。

2025-07-01 00:12:37 784

原创 langchain从入门到精通(二十三)——RAG优化策略(一)介绍及多查询检索技巧介绍

并且由于需要转换 query 一般较小,以及生成 sub-queries 时对 LLM 的能力要求并不高,在实际的 LLM 应用开发中,通常使用参数较小的本地模型+针对性优化的 prompt 即可完成任务。从 LangSmith 平台记录的运行流程,可以很清晰看到这个检索器会先调用大语言模型生成 3 条与原始问题相关的 子问题,然后再逐个使用传递的检索器检索 3 个子问题,得到对应的文档列表,最后再将所有文档列表进行合并去重,得到最终的文档。设置为 0,确保生成的文本更加有确定性。

2025-07-01 00:01:10 1007

原创 langchain从入门到精通(二十二)——语义文档分割器与其他文档分割器的使用

字符文本分割器、递归字符文本分割器、Html标题/段分割器、语义分割器固定大小分块:这是最常见的分块方法,通过设定块的大小和是否有重叠来决定分块。这种方法简单直接,不需要使用任何NLP库,因此计算成本低且易于使用,例如 CharacterTextSplitter,亦或者直接循环遍历固定大小拆分。基于结构的分块:常见的 HTML、MARKDOWN 格式,或者其他可以有明确结构格式的文档。

2025-06-30 17:20:40 808

原创 langchain从入门到精通(二十一)——文档转换器与字符分割器组件的使用

在文档分割器中,最简单的分割器就是——字符串分割器,这个组件会基于给定的字符串进行分割,默认为 \n\n,并且在分割时会尽可能保证数据的连续性。递归字符文本分割器的核心部分在于传递不同的分割符列表,通过不同的优先级的列表,可以实现一些复杂文件的拆分,例如在该分割器内部预先构建了大量的的分割列表,用于在特定的编程语言中拆分文本。所以在 LLM 应用开发中,在加载完数据后,一般会执行多一步 转换 的过程,即将加载得到的 文档列表 进行转换,得到符合需求的 文档列表。在 LangChain 中通过。

2025-06-30 16:31:48 852

原创 langchain从入门到精通(二十)——自定义文档加载器使用技巧及Blob 方案介绍

对于一些企业的内部数据,例如数据库、API接口等定制化非常强的数据,如果使用通用的文档加载器进行提取,虽然可以提取记录到相应的信息,但是加载的数据格式或者样式大概率没法满足我们的需求,这个时候就可以考虑实现自定义文档加载器。例如使用的 WebBaseLoader 文档加载器加载网页首页的信息,会提取得到很多空白数据(空格、换行、Tab 等),将这类数据通过分割存储到向量数据库中,会极大降低检索与生成的效率和正确性。在 LangChain 中实现自定义文档加载器非常简单,只需要继承。

2025-06-30 15:59:24 967

原创 langchain从入门到精通(十九)——Document 组件与文档加载器的使用

在 LangChain 中最简单的加载器组件就是 TextLoader,这个加载器可以加载一个文本文件(源码、markdown、text 等存储成文本结构的文件,DOC 并不是文本文件),并把整个文件的内容读入到一个 Document 对象中,同时为文档对象的 metadata 添加 source 字段用于记录源数据的来源信息。在新的架构流程中,文档加载器起到的作用就是从各式各样的数据中提取出相应的信息,并转换成标准的 Document 组件,从而屏蔽不同类型文件的读取差异。

2025-06-30 15:40:51 1001

原创 langchain从入门到精通(十八)——向量数据库安装以及介绍自定义数据库

Faiss 是 Facebook 团队开源的向量检索工具,针对高维空间的海量数据,提供高效可靠的相似性检索方式,被广泛用于推荐系统、图片和视频搜索等业务。Faiss 支持 Linux、macOS 和 Windows 操作系统,在百万级向量的相似性检索表现中,Faiss 能实现 < 10ms 的响应(需牺牲搜索准确度)。Faiss 官网:https://faiss.ai/,Faiss 仓库:https://github.com/facebookresearch/faiss。

2025-06-24 14:39:44 822

原创 langchain从入门到精通(十七)——langchain嵌入模型组件介绍

底层的运行流程非常简单,本质上就是封装了一个持久化存储的数据存储仓库,在每次进行数据嵌入前,会从前数据存储仓库中检索对对应的向量,然后逐个匹配对应的数据是否相等,找到缓存中没有的文本,然后将这些文本调用嵌入生成向量,最后将生成的新向量存储到数据仓库中,从而完成对数据的存储。通过嵌入模型计算传递数据的向量需要昂贵的算力,对于重复的内容,Embeddings 计算的结果肯定是一致的,如果数据重复仍然二次计算,会导致效率非常低,而且增加无用功。在 LangChain 中,

2025-06-24 14:07:05 1030

原创 langchain从入门到精通(十六)——Embedding文本嵌入模型介绍与使用

要想使用向量数据库的相似性搜索,存储的数据必须是向量,那么如何将高维度的文字、图片、视频等非结构化数据转换成向量呢?Embedding 模型是一种在机器学习和自然语言处理中广泛应用的技术,它旨在将高纬度的数据(如文字、图片、视频)映射到低纬度的空间。Embedding 向量是一个 N 维的实值向量,它将输入的数据表示成一个连续的数值空间中的点。这种嵌入可以是一个词、一个类别特征(如商品、电影、物品等)或时间序列特征等。

2025-06-24 13:48:15 994

原创 langchain从入门到精通(十五)——RAG检索之向量数据库介绍

向量数据库就是一种专门用于存储和处理向量数据的数据库系统,传统的关系型数据库通常不擅长处理向量数据,因为它们需要将数据映射为结构化的表格形式,而向量数据的维度较高、结构复杂,导致传统数据库存储和查询效率低下,所以向量数据库应运而生。在向量数据库中,数据按列进行存储,通常会将多个向量组织成一个 M×N 的矩阵,其中 M 是向量的维度(特征数),N 是向量的数量(数据库中的条目数),这个矩阵可以是稠密或者稀疏的,取决于向量的稀疏性和具体的存储优化策略。这些向量之间的距离表示它们之间的相似性。

2025-06-24 11:31:07 778

原创 langchain从入门到精通(十四)——RAG应用开发基础及入门

大语言模型在处理自然语言时,有时会出现幻觉,表现为回答不准确或前后不一致的问题。事实性幻觉:指模型生成的内容与可验证的现实事实不一致。比如提问“第一个在月球上行走的人是谁?“,模型回复“Charles Lindbergh在1951年月球先驱任务中第一个登上月球”,而实际上,第一个登上月球的人是Neil Armstrong。而事实性幻觉又分为事实不一致(与现实世界信息相矛盾)和事实捏造(压根没有,无法根据现实信息验证)。忠实性幻觉:指模型生成的内容与用户的指令或上下文不一致。

2025-06-24 10:54:36 929

原创 langchain从入门到精通(十三)——Runnable组件

通过上述的案例,可以知道 .bind() 函数是在构建应用的时候添加上对应的默认调用参数,而在Runnable.bind() 函数的底层,本质上是往 Runnable 的 kwargs 属性添加对应的字段,并生成一个新的 Runnable,当 Runnable 组件执行调用时(invoke、ainvoke、stream、astream、batch、abatch等),会自动将 kwargs 字段里的所有参数合并并覆盖默认调用参数。我们就可以考虑使用 Runnable.bind() 来传递这些默认参数。

2025-06-22 21:05:59 1043

原创 langchain从入门到精通(十二)——不同记忆组件介绍

缓冲记忆组件是 LangChain 中最简单的记忆组件,绝大部分都不对数据结构和提取算法做任何处理,就是简单的原进原出,也是使用频率最高的记忆组件,在 LangChain 中封装了几种内置的缓冲记忆组件,涵盖:① ConversationBufferMemory:缓冲记忆,最简单,最数据结构和提取算法不做任何处理,将所有对话信息全部存储作为记忆。② ConversationBufferWindowMemory:缓冲窗口记忆,通过设定 k 值,只保留一定数量(2*k)的对话信息作为历史。

2025-06-17 01:26:11 773

原创 langchain从入门到精通(十一)——Memory 组件运行及不同组件分类

【代码】langchain从入门到精通(十)——Memory 组件运行及不同组件分类。

2025-06-17 01:16:43 410

原创 langchain从入门到精通(十)——ChatMessageHistory 组件

FileChatMessageHistory 会将对话历史存储到本地的文件中,可以使用这个记忆组件结合原生的 OpenAI SDK 来实现在命令行界面实现带有记忆功能的对话功能,并且关闭某次对话后,下次运行代码,读取到对应的文件时,仍然可以记忆之前对话的内容。图上可以划分成两部分,黄色 的部分为检索历史信息,红色的部分为存储历史信息的逻辑,可以看到,一个记忆类是由 历史消息的存储 与 记忆的处理逻辑 两个部分组成的,在 LangChain 中,也是类似的思路。如何检索与处理历史信息?

2025-06-17 00:33:53 1852

原创 langchain从入门到精通(九)——ChatGPT/Playground手动模拟记忆功能

chat_message_history:存储历史消息列表。moving_summary_buffer:移除消息的汇总字符串。summary_llm:生成摘要的 LLM,接收 summary(当前摘要)、query(人类提问)、content(AI生成)。max_tokens:限制记忆模块存储消息的最大 token 数。get_num_tokens:用于统计传入的文本的 token 数。

2025-06-15 10:47:35 507

原创 langchain从入门到精通(八)——常见记忆功能思路与常见记忆模式

除了将消息传递给 LLM,还可以将消息进行总结,每次只传递总结的信息,而不是完整的消息。这种模式记忆对于较长的对话最有用,可以避免过度使用 Token,因为将过去的信息历史以原文的形式保留在提示中会占用太多的 Token。无论是长期还是短期的互动都可以记忆(模糊记忆)。减少长对话中使用 Token 的数量,能记忆更多轮的对话信息。长对话时效果明显,虽然最初使用 Token 数量较多,随着对话进行,摘要方法增长速度减慢,与常规缓冲内存模型相比具有优势。

2025-06-15 10:30:28 988

原创 langchain从入门到精通(七)——利用回调功能调试链应用 - 让过程更透明

Callback 是 LangChain 提供的回调机制,允许我们在 LLM 应用程序的各个阶段使用 hook (钩子)。钩子的含义也非常简单,我们把应用程序看成一个一个的处理逻辑,从开始到结束,钩子就是在事件传送到终点前截获并监控事件的传输。Callback 对于记录日志、监控、流式传输等任务非常有用,简单理解, Callback 就是记录整个流程的运行情况的一个组件,在每个关键的节点记录响应的信息以便跟踪整个应用的运行情况。在 Agent 模块中调用了几次 tool,每次的返回值是什么?

2025-06-14 23:44:33 1164

原创 langchain从入门到精通(六)——LCEL 表达式与 Runnable 可运行协议

为了尽可能简化创建自定义链,LangChain 官方实现了一个 Runnable 协议,这个协议适用于stream :将组件的响应块流式返回,如果组件不支持流式则会直接输出。invoke :调用组件并得到对应的结果。batch :批量调用组件并得到对应的结果。astream :stream 的异步版本。ainvoke :invoke 的异步版本。abatch :batch 的异步版本。astream_log :除了流式返回最终响应块之外,还会流式返回中间步骤。

2025-06-14 23:15:39 942

原创 langchain从入门到精通(四)——Model组件及使用技巧

【代码】langchain从入门到精通(四)——Model组件及使用技巧。

2025-06-13 06:15:00 437

git常用的操作手册和指南

1. **配置 Git**:设置用户名和邮箱,确保提交记录中包含正确的用户信息。 2. **初始化仓库**:在本地目录中创建一个新的 Git 仓库。 3. **克隆仓库**:从远程仓库复制一份到本地,获取已有项目的副本。 4. **查看状态**:检查当前文件的状态,了解哪些文件被修改、删除或新增。 5. **添加文件**:将修改添加到暂存区,为提交做好准备。 6. **提交更改**:将暂存区的内容保存到本地仓库的历史记录中。 7. **查看历史**:查看项目的提交历史,了解更改的时间线。 8. **推送更改**:将本地提交的更改发送到远程仓库,与他人共享更新。 9. **拉取更改**:从远程仓库获取最新的更新,并将其合并到本地仓库。 10. **分支管理**:创建、切换和删除分支,便于独立开发不同的功能或版本。 11. **合并分支**:将不同分支的更改合并到一个分支中,整合开发成果。

2024-08-27

基于智谱AI和LangChain实现RAG应用代码

基于智谱AI和LangChain实现的RAG(Retrieval-Augmented Generation)应用是一种前沿的自然语言处理技术,结合了强大的语言生成模型和高效的检索系统。通过智谱AI的语言模型,RAG应用能够理解和生成高质量的自然语言文本,而LangChain提供的检索功能则确保了回答的准确性和相关性。 在这个系统中,用户提出的问题首先通过向量数据库进行检索,从中提取出最相关的文档或片段。随后,智谱AI模型利用这些检索到的上下文生成一个简明、准确的回答。通过集成会话记忆功能,RAG应用还支持多轮对话,能够保持上下文连贯性,适应复杂的交互需求。 这种技术的应用场景广泛,从智能问答系统、在线教育,到客户支持,RAG应用都能显著提升用户体验,提供更有针对性和深度的回答。总的来说,基于智谱AI和LangChain的RAG应用为下一代智能对话系统奠定了坚实的技术基础。

2024-08-27

基于LangChain和智谱API搭建知识库

基于LangChain和智谱API的知识库是一个强大的资源,它结合了自然语言处理和知识图谱技术,为用户提供全面且准确的知识检索和查询功能。LangChain是一个先进的语言处理引擎,能够实现文本的语义理解和分析,从而从大量的文本数据中提取有用的信息。智谱API则是一个基于知识图谱的搜索引擎,它能够将不同领域的知识进行关联和组织,形成一个完整的知识网络。 通过LangChain和智谱API的结合,用户可以方便地利用自然语言进行查询,无需专业的检索技巧或复杂的搜索语法。只需要输入相关领域的问题或关键词,系统就能自动理解用户的意图,并从知识库中找到最相关的资源。无论是科学、技术、医学还是人文社科领域的问题,都可以得到及时和正确的答案。 此外,LangChain和智谱API还支持多语言搜索和跨语言信息的处理。不论用户使用的是中文、英文还是其他语言,系统都能够进行准确的语义分析和知识检索。 总之,基于LangChain和智谱API的知识库提供了强大的语义理解和知识检索功能,帮助用户快速获取所需的信息,提升了信息检索的效率和准确性。

2024-08-26

百度的关键字爬取相关图片

百度关键字爬虫是一种用于从百度搜索引擎中抓取相关搜索结果的工具。它可以根据用户指定的关键字进行搜索,并将搜索结果保存为结构化的数据,如网页链接、标题、描述等信息。 Python编程语言:百度关键字爬虫常使用Python编写。如果您还不熟悉Python,可以学习一些基础知识,如语法、数据类型、循环和函数等。 爬虫框架:有很多Python爬虫框架可供选择,如Scrapy、BeautifulSoup和Selenium等。这些框架可以帮助您更方便地实现爬虫功能,处理网页和提取数据。您可以根据自己的需求选择合适的框架。 百度搜索API:如果您想更高效地获取百度搜索结果,可以考虑使用百度搜索API。该API提供了一系列接口,可以帮助您进行搜索,并获取相关的信息。您需要注册百度开发者账号,并获取API密钥。 数据存储:爬取的数据可以保存在本地文件中,也可以存储在数据库中,如MySQL或MongoDB等。您可以根据自己的需求选择适合的存储方式。 反爬虫策略:为了防止被百度的反爬虫机制封禁,您需要了解相关的反爬虫策略,并使用一些技巧来规避检测,如设置合适的爬取频率、使用代理IP和User-Age

2024-08-26

用于图像分割的代码源码

unet++实现代码参考源码

2024-04-21

图像分割的学习参考代码

图像分割的学习参考代码

2024-04-21

yolo v7的训练代码,包括导入导出

yolov7 的训练代码,包括数据集的制作,训练代码;

2024-04-20

实现一个简单的视频对象追踪应用,该应用支持多种追踪算法,并允许用户实时选择和追踪视频中的对象 这种技术在许多领域都有广泛的应用

实现一个简单的视频对象追踪应用,该应用支持多种追踪算法,并允许用户实时选择和追踪视频中的对象。这种技术在许多领域都有广泛的应用,包括安全监控、人机交互和自动驾驶车辆等。

2024-04-18

从指定路径读取图像文件、利用OpenCV进行图像处理,以及使用Caffe框架进行深度学习预测的过程

从指定路径读取图像文件、利用OpenCV进行图像处理,以及使用Caffe框架进行深度学习预测的过程。程序能够有效地对图像进行分类预测,并将结果直观地显示出来,适用于教学或研究目的。

2024-04-18

Python库d和OpenCV来实现眼部闭合检测,主要用于评估用户是否眨眼

这段代码使用了Python库d和OpenCV来实现眼部闭合检测,主要用于评估用户是否眨眼。下面是代码的主要步骤和相关的代码片段: ### 步骤一:导入必要的库和设置参数 首先,代码导入了必要的Python库,如dlib、OpenCV和scipy。通过`argparse`设置了输入视频和面部标记预测器的参数。 ```python from scipy.spatial import distance as dist from collections import OrderedDict import numpy as np import argparse import time import dlib import cv2 ``` ### 步骤二:定义面部关键点索引 使用`OrderedDict`定义了包含68个点的面部关键点,用于眼部分析。 ```python FACIAL_LANDMARKS_68_IDXS = OrderedDict([ ("mouth", (48, 68)), ("right_eyebrow", (17, 22)), ("left_e

2024-04-18

使用Python库dlib和OpenCV来实现面部特征点的检测和标注

使用Python库dlib和OpenCV来实现面部特征点的检测和标注。

2024-04-18

基于Opencv实现答题卡识别系统中的各个功能

实现答题卡识别系统中的各个功能。每个步骤都是自动化处理的关键部分,确保系统能够准确地读取和评分答题卡。自动化地完成了从读取图像到输出成绩的整个流程通过填涂密度判断学生选择,通过计算填涂区域的像素密度来判断学生的的选项。然后将这个选择与答案键中的正确选项进行比较,统计出正确的答案数量。

2024-04-18

停车位识别基于深度学习的停车位识别系统利用计算机视觉技术来自动检测和监控停车位的占用情况 地平线

基于深度学习的停车位识别系统利用计算机视觉技术来自动检测和监控停车位的占用情况。这种系统通常通过安装在停车场的摄像头来实现,摄像头捕捉的图像数据被送入深度学习模型进行分析。这些模型能够识别出图像中的停车位,并确定每个停车位是否被占用。此技术不仅提高了停车效率,减少了寻找停车位的时间,还可以被应用于智能交通系统中,实时更新停车信息,为驾驶者提供便利。深度学习模型的训练过程包括大量的图像数据,这些数据需要标注停车位的位置和状态,以训练模型准确识别。

2024-04-17

全景图像拼接;实现特征点检测与描述子

特征点检测与描述子计算: 使用 SIFT 算法检测图像的关键点,并计算每个点的描述子。这一步是识别图像中的特征并提取有用信息的关键步骤。 特征点匹配: 使用 KNN 和比值测试来筛选良好的匹配点。这一步是确保两图中对应的特征点确实相似,为后续的图像对齐打下基础。 计算单应性矩阵并进行图像变换: 使用 RANSAC 算法基于匹配点对计算单应性矩阵,这一矩阵能够描述一张图像到另一张图像的透视变换。 使用该矩阵通过透视变换将一张图像变形,使其与另一张图像对齐。 图像拼接: 将变换后的图像与另一张图像合并,形成一个单一的更大的图像。 结果展示: 可选地显示特征点的匹配情况,帮助理解两图是如何通过匹配点关联起来的。 ———————————————— 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/weixin_42917352/article/details/13789

2024-04-17

基于Opencv与tesseract 实现的文本识别

应用场景: 文档数字化:将纸质文档扫描后识别为数字文本。 自动化表单处理:从填写的表单中提取信息。 车牌识别:用于交通监控或自动收费系统。 辅助技术:帮助视觉障碍人士阅读印刷材料。 多语言支持:Tesseract 支持100多种语言的识别。 高度可定制:用户可以训练Tesseract来识别新的字体或优化特定语言的识别。 多种输出格式:Tesseract 可以输出普通文本、hOCR(带有布局信息的HTML)、PDF等格式。 集成易用:可以通过命令行使用,也可通过其API集成到其他应用程序中,比如通过pytesseract在Python中使用。

2024-04-17

基于OpenCV与模版匹配 实现信用卡、银行卡号识别

基于OpenCV与模版匹配 实现信用卡、银行卡号识别

2024-04-17

FasterRcnn.zip

FasterRcnn的代码复现

2021-11-17

MTCNN相关代码完美实现

深度学习 ,目标检测 、卷积神经网络

2021-11-05

Opencv从入门到跑路images.zip

用来实现博客上的资料

2021-07-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除