Matplotlib
一、Matplotlib简介1.1 什么是MatplotlibMatplotlib是Python中最常用的数据分析可视化库,可快速绘制各类静态、高质量的图表(如折线图、柱状图、散点图、直方图等),支持自定义图表样式、标签、颜色等细节,是数据分析中“数据呈现”的核心工具。 Matplotlib与NumPy、Pandas的关系: Matplotlib可直接接收NumPy数组和Pandas的Series、DataFrame数据,无需额外数据格式转换; Pandas的绘图功能(如df.plot())底层就是基于Matplotlib实现的,可快速生成基础图表; 三者协同使用,可完成“数据读取(Pandas)→ 数据处理(NumPy+Pandas)→ 数据可视化(Matplotlib)”的完整数据分析流程。 核心模块:matplotlib.pyplot(通常简写为plt),是绘制图表的主要接口,提供了简洁的函数式绘图方法。 1.2 安装Matplotlib使用pip命令安装,与NumPy、Pandas兼容,建议安装最新稳定版: 12345# 安装最新版本Matplotlibpi...
Pandas
一、Pandas简介1.1 什么是PandasPandas(Python Data Analysis Library)是基于NumPy开发的Python数据分析库,专门用于处理结构化数据(如表格数据、CSV文件、Excel文件等),提供了直观、高效的数据读取、清洗、筛选、分组、聚合等功能,是数据分析、数据挖掘的核心工具。 Pandas与NumPy的关系: Pandas基于NumPy实现,底层使用ndarray存储数据,继承了NumPy的高效运算能力; NumPy专注于多维数组运算,而Pandas专注于结构化数据处理,提供了更贴近实际业务的API; 两者协同使用,可高效完成从数据读取到分析的全流程。 核心数据结构:Series(一维结构化数据)、DataFrame(二维结构化数据,类似Excel表格)。 1.2 安装Pandas使用pip命令安装,建议同时安装openpyxl(用于读取Excel文件): 12345# 安装最新版本Pandas和openpyxlpip install pandas openpyxl# 安装指定版本(适配NumPy 1.24.3,避免版本...
Numpy
一、NumPy简介1.1 什么是NumPyNumPy(Numerical Python)是Python中用于科学计算的核心库,主要用于处理高维数组(ndarray),并提供了大量的数学函数、线性代数、傅里叶变换、随机数生成等功能,是Pandas、Matplotlib等数据分析工具的基础。 核心优势: 高效的数组运算:基于C语言实现,运算速度远快于Python原生列表 简洁的API:提供直观的函数,简化数据处理流程 多维度支持:轻松处理1维、2维及更高维度的数组 与其他库无缝衔接:是数据分析、机器学习的必备工具 1.2 安装NumPy使用pip命令安装(最常用): 12345# 安装最新版本pip install numpy# 安装指定版本(如1.24.3,适配多数数据分析环境)pip install numpy==1.24.3 验证安装是否成功: 12import numpy as npprint(np.__version__) # 输出版本号,如1.24.3即安装成功 二、NumPy核心:ndarray数组2.1 什么是ndarrayndarray(N-d...
LangChain4j之RAG
RAG (检索增强生成)LLM 的知识仅限于它已经训练过的数据。 如果你想让 LLM 了解特定领域的知识或专有数据,你可以: 使用 RAG,我们将在本节中介绍 用你的数据微调 LLM 结合 RAG 和微调 什么是 RAG?简单来说,RAG 是一种在发送给 LLM 之前,从你的数据中找到并注入相关信息片段到提示中的方法。 这样 LLM 将获得(希望是)相关信息,并能够使用这些信息回复, 这应该会降低产生幻觉的概率。 相关信息片段可以使用各种信息检索方法找到。 最流行的方法有: 全文(关键词)搜索。这种方法使用 TF-IDF 和 BM25 等技术, 通过匹配查询(例如,用户提问的内容)中的关键词与文档数据库进行搜索。 它根据每个文档中这些关键词的频率和相关性对结果进行排名。 向量搜索,也称为”语义搜索”。 文本文档使用嵌入模型转换为数字向量。 然后根据查询向量和文档向量之间的余弦相似度 或其他相似度/距离度量找到并排序文档, 从而捕捉更深层次的语义含义。 混合搜索。结合多种搜索方法(例如,全文 + 向量)通常可以提高搜索的有效性。 目前,本页主要关注向量搜索...
LangChain4j之函数调用
工具(函数调用)一些 LLM 除了生成文本外,还可以触发操作。 有一个被称为”工具”或”函数调用”的概念。 它允许 LLM 在必要时调用一个或多个可用的工具,通常由开发者定义。 工具可以是任何东西:网络搜索、调用外部 API 或执行特定代码片段等。 LLM 实际上不能自己调用工具;相反,它们在响应中表达调用特定工具的意图(而不是以纯文本形式响应)。 作为开发者,我们应该使用提供的参数执行这个工具,并将工具执行的结果反馈回来。 例如,我们知道 LLM 本身在数学计算方面并不擅长。 如果您的用例涉及偶尔的数学计算,您可能希望为 LLM 提供一个”数学工具”。 通过在请求中向 LLM 声明一个或多个工具, 如果它认为合适,它可以决定调用其中一个工具。 给定一个数学问题和一组数学工具,LLM 可能会决定为了正确回答问题, 它应该首先调用提供的数学工具之一。 让我们看看这在实践中是如何工作的(有工具和没有工具的情况): 没有工具的消息交换示例: 12345678请求:- 消息: - UserMessage: - 文本:475695037565 的平方根是多少?响应:...
LangChain4j之高阶api
AI Services到目前为止,我们一直在介绍底层组件,如 ChatLanguageModel、ChatMessage、ChatMemory 等。 在这个层面上工作非常灵活,给予您完全的自由,但也迫使您编写大量的样板代码。 由于 LLM 驱动的应用程序通常不仅需要单个组件,还需要多个组件协同工作 (例如,提示模板、聊天记忆、LLM、输出解析器、RAG 组件:嵌入模型和存储) 并且经常涉及多次交互,协调所有这些组件变得更加繁琐。 我们希望您专注于业务逻辑,而不是低级实现细节。 因此,LangChain4j 中目前有两个高级概念可以帮助您:AI 服务和链。 Chains (legacy)链的概念源自 Python 的 LangChain(在引入 LCEL 之前)。 其思想是为每个常见用例(如聊天机器人、RAG 等)提供一个 Chain。 链组合多个低级组件并协调它们之间的交互。 它们的主要问题是,如果您需要自定义某些内容,它们过于僵化。 LangChain4j 只实现了两个链(ConversationalChain 和 ConversationalRetrievalChain)...
LangChain4j之会话记忆
聊天记忆手动维护和管理ChatMessage是很麻烦的。 因此,LangChain4j提供了ChatMemory抽象以及多种开箱即用的实现。 ChatMemory可以作为独立的低级组件使用, 或者作为高级组件(如AI服务)的一部分。 ChatMemory作为ChatMessage的容器(由List支持),具有以下额外功能: 淘汰策略 持久化 对SystemMessage的特殊处理 对工具消息的特殊处理 记忆与历史请注意,”记忆”和”历史”是不同的概念。 历史保持用户和AI之间的所有消息完整无缺。历史是用户在UI中看到的内容。它代表实际对话内容。 记忆保存一些信息,这些信息呈现给LLM,使其表现得好像”记住”了对话。 记忆与历史有很大不同。根据使用的记忆算法,它可以以各种方式修改历史: 淘汰一些消息,总结多条消息,总结单独的消息,从消息中删除不重要的细节, 向消息中注入额外信息(例如,用于RAG)或指令(例如,用于结构化输出)等等。 LangChain4j目前只提供”记忆”,而不是”历史”。如果您需要保存完整的历史记录,请手动进行。 淘汰策略淘汰策略是必要的,原因如...
LangChain4j入门
1.什么是LangChain4JLangChain4j 的目标是简化将 LLM 集成到 Java 应用程序中的过程。 具体方式如下: 统一 API: LLM 提供商(如 OpenAI 或 Google Vertex AI)和嵌入(向量)存储(如 Pinecone 或 Milvus) 使用专有 API。LangChain4j 提供统一的 API,避免了学习和实现每个特定 API 的需求。 要尝试不同的 LLM 或嵌入存储,您可以在它们之间轻松切换,无需重写代码。 LangChain4j 目前支持 15+ 个流行的 LLM 提供商 和 20+ 个嵌入存储。 全面的工具箱: 自 2023 年初以来,社区一直在构建众多 LLM 驱动的应用程序, 识别常见的抽象、模式和技术。LangChain4j 将这些提炼成一个即用型包。 我们的工具箱包含从低级提示模板、聊天记忆管理和函数调用 到高级模式如代理和 RAG 的工具。 对于每个抽象,我们提供一个接口以及基于常见技术的多个即用型实现。 无论您是在构建聊天机器人还是开发包含从数据摄取到检索完整管道的 RAG, LangChain4j 都提供多...
Git常用命令整理
Git常用命令全面整理本文全面整理Git日常开发中高频使用命令,按功能分类,每条命令附一句话说明,简洁易懂、可直接复制使用,覆盖95%+日常开发场景,适合新手入门及老手快速查阅。 一、基础配置(首次使用必配)用于配置Git全局信息、个性化设置,仅需首次配置,后续可按需修改。 12345678910111213141516171819202122# 配置全局用户名(提交记录中显示的用户名)git config --global user.name "你的用户名"# 配置全局邮箱(与Git账号/代码托管平台账号绑定)git config --global user.email "你的邮箱地址"# 查看所有全局配置信息(验证配置是否生效)git config --list# 查看指定配置项(如单独查看用户名/邮箱)git config user.name # 查看用户名git config user.email # 查看邮箱# 配置默认文本编辑器(如vim,提交备注时使用)git config --global core.editor vi...
Springboot集成ES
Springboot集成ESES的Java客户端1. 早期阶段:Transport Client(基于 TCP) 出现版本:ES 早期版本(1.x ~ 6.x) 工作方式 基于 内部 TCP 协议 与 ES 节点通信 客户端必须与 ES 集群版本完全一致(主版本、次版本、修订版本) 优点 性能较高(长连接,无 HTTP 解析开销) 缺点 版本耦合度高,升级风险大 API 不统一,学习成本高 安全性弱(没有原生 HTTPS 支持) 状态 ES 7.x 标记为 废弃 ES 8.x 完全 移除 2. 中期阶段:High Level REST Client(HLRC) 出现版本:ES 5.0 引入,7.x 成为主力 工作方式 基于 HTTP/REST API 通信 通过封装好的 Java API 构造请求、解析响应 优点 版本兼容性更宽松(主版本一致即可) 支持 HTTPS 和各种认证方式 功能覆盖大部分 ES 操作 缺点 API 设计较老,非类型安全(依赖字符串和 Map) 构建复杂查询时容易出错 对 ES 8.x 新特性支持有限 状态 E...