自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 收藏
  • 关注

原创 《Learning Langchain》阅读笔记11-RAG(7)索引优化:RAPTOR方法和ColBERT方法

介绍两种方法:RAPTOR:用于树状检索的递归抽象处理,ColBERT:优化嵌入,这两种方法都更适用于多个文档检索的情况,尤其是第二个ColBERT方法。

2025-04-28 12:53:18 931

原创 《Learning Langchain》阅读笔记10-RAG(6)索引优化:MultiVectorRetriever方法

介绍langchain中RAG索引优化的MultiVectorRetriever方法

2025-04-27 17:30:37 1016

原创 《Learning Langchain》阅读笔记9-RAG(5)跟踪文档的更改

首先,你需要创建一个记录管理器(record manager),用于追踪哪些文档之前已经被索引过。然后,使用 index 函数 将你的向量存储(vector store)与新的文档列表进行同步。在这个示例中,我们使用的是增量模式(incremental mode),因此任何与之前已有文档 ID 相同的新文档,都会用新版本进行替换。

2025-04-26 13:18:38 570

原创 《Learning Langchain》阅读笔记8-RAG(4)在vector store中存储embbdings

本小节我们学习了如何在vector store中存储embeddings,并且使用了PostgreSQL数据库。通过docker连接数据库,还通过插件PGVector这个为 PostgreSQL 数据库设计的向量(embedding)存储与相似度搜索插件,使得你可以在 PostgreSQL 中直接存储向量,并进行高效的相似度检索(vector similarity search)。最后还使用了免费的可视化PostgreSQL数据库的软件pgAdmin对数据库的tables中的数据进行查看。

2025-04-25 18:17:37 1311

原创 《Learning Langchain》阅读笔记7-RAG(3)生成embeddings

在前面的部分中,我们已经学习了如何将文档读取为文本以及如何将文本切分为chunks,这一节我们来讲讲如何生成文本嵌入embeddings。

2025-04-24 11:51:05 396

原创 《Learning Langchain》阅读笔记6-RAG(2)将文本分成块

上一章中,我们已经将文档转换为文本,在langchain_community.document_loaders中调用合适的loader,以加载不同类型的文件比如.txt、.pdf等。下一步,我们将要将文本分为chunks,也就是将文本分为块。

2025-04-23 11:35:15 1053

原创 《Learning Langchain》阅读笔记5-RAG(1)将文档转换为文本

在上一章中,我们学习了使用 LangChain 创建 LLM 应用程序的重要构建块。我们还构建了一个简单的 AI 聊天机器人,它由发送给模型的提示和模型生成的输出组成。但是,这个简单的聊天机器人存在一些主要限制。如果你的使用场景需要模型未曾训练过的知识怎么办?例如,假设你想使用 AI 询问有关公司的问题,但信息包含在私人 PDF 或其他类型的文档中。

2025-04-21 17:33:33 630

原创 《Learning Langchain》阅读笔记4-基于 Gemini 的 Langchain:组装 LLM 应用的多个部分

到目前为止,我们所了解的关键组件是LangChain框架的基本构建块。这就引出了一个关键问题:我们如何有效地结合它们来构建LLM应用程序?

2025-04-20 16:40:46 1059

原创 《Learning Langchain》阅读笔记3-基于 Gemini 的 Langchain如何从LLMs中获取特定格式

在某些情况下,我们需要 LLM 生成结构化输出,即以机器可读格式(如 JSON、XML 或 CSV)或甚至以编程语言(如 Python 或 JavaScript)生成的输出。当我们打算将该输出传递给其他代码时,这非常有用,使 LLM 可以在更大的应用程序中发挥作用。

2025-04-18 12:48:02 534

原创 《Learning Langchain》阅读笔记2-基于 Gemini 的 Langchain PromptTemplate 实现方式

本文将使用Gemini实现《Learning Langchain》中的PromptTemplate 实现方式,替代书中的调用openai API,白嫖太香了!

2025-04-17 12:29:28 950

原创 Langchain + Gemini API调用基本操作

如何在Langchain中使用gemini API,实现快乐白嫖~

2025-04-16 21:22:40 928

原创 如何在Langchain中配置gemini API

如何在Langchain中配置gemini API

2025-04-15 17:15:53 290

原创 jupyter中切换Anaconda虚拟环境

jupyter中切换虚拟环境,查看anaconda中有哪些虚拟环境切换并且查看是否已经有ipykernel,下载langchain

2025-04-15 11:01:33 378

原创 《Learning Langchain》阅读笔记1-前置知识

《Learning Langchain》LLM基本知识,本文可能会一笔带过,着重记录那些需要理解记忆的知识。

2025-04-14 17:48:54 759

原创 A Brief History: from GPT-1 to GPT-3

This is my reading notes of 《Developing Apps with GPT-4 and ChatGPT》.In this section, we will introduce the evolution of the OpenAI GPT medels from GPT-1 to GPT-4.In mid-2018, OpenAI published a paper titled “Improving Language Understanding by Generative

2025-03-26 20:45:12 1406

原创 静态数组——算法笔记速成(1)

静态数组的基本知识

2025-03-26 12:39:23 812

原创 LeetCode hot 100 每日一题(17)——160.相交链表

这是一道难度为简单的题目,让我们来看看题目描述:给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构。104105。

2025-03-26 10:48:57 1002

原创 LeetCode hot 100 每日一题(16)——240. 搜索二维矩阵 II

leetcode 240. 搜索二维矩阵 II

2025-03-25 19:44:43 1071

原创 GPT-4 and ChatGPT Essentials

This is my reading notes of 《Developing Apps with GPT-4 and ChatGPT》.

2025-03-24 21:47:35 1391 1

原创 LeetCode hot 100 每日一题(15)——48.旋转图像

这是一道难度为中等的题目,让我们来看看题目描述:给定一个 n × n 的二维矩阵matrix表示一个图像。请你将图像顺时针旋转 90 度。你必须在旋转图像,这意味着你需要直接修改输入的二维矩阵。使用另一个矩阵来旋转图像。

2025-03-24 20:14:29 479

原创 LeetCode hot 100 每日一题(14)——54.螺旋矩阵

你可以试着将这个螺旋遍历过程拆分成四个简单的步骤,每一步只关注一个方向,并记住一个顺时针的遍历顺序:从左到右、从上到下、从右到左、从下到上。想象矩阵就像一层层的“洋葱皮”。每一层的遍历就是围绕这个“洋葱”走一圈,你只需要记住当前层的边界,然后按照顺时针方向依次执行四个步骤。你可以编一个简单的口诀,比如“左到右,上到底,右到左,下到上”。每完成一圈后,再调整边界,重复这个过程。

2025-03-24 19:46:12 559

原创 LeetCode hot 100 每日一题(13)——73. 矩阵置零

这是一道难度为中等的题目,让我们来看看题目描述:给定一个_m_ x _n_的矩阵,如果一个元素为,则将其所在行和列的所有元素都设为。请使用算法。231231。

2025-03-22 11:18:36 807

原创 LeetCode hot 100 每日一题(12)——238.除自身以外数组的乘积

这是一道难度为中等的题目,我们来看看题目描述:给你一个整数数组nums,返回 数组answer,其中answer[i]等于nums中除nums[i]之外其余各元素的乘积。题目数据数组nums之中任意元素的全部前缀元素和后缀的乘积都在整数范围内。请且在O(n)时间复杂度内完成此题。

2025-03-20 20:16:15 672

原创 LeetCode hot 100 每日一题(11)——189. 轮转数组

这是一道难度为中等的题目,让我们来看看题目描述:给定一个整数数组nums,将数组中的元素向右轮转k个位置,其中k是非负数。向右轮转 1 步:向右轮转 2 步:向右轮转 3 步:向右轮转 1 步: [99,-1,-100,3]向右轮转 2 步: [3,99,-1,-100]105−231231105。

2025-03-20 19:37:54 914

原创 Java 中数组与列表的区别

Java 中数组与列表的区别

2025-03-17 16:07:45 612

原创 LeetCode hot 100 每日一题(10)——56. 合并区间

这是一道难度为中等的题目,我们来看看题目描述:以数组intervals表示若干个区间的集合,其中单个区间为。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].[[1,5]]区间 [1,4] 和 [4,5] 可被视为重叠区间。104starti​104说人话解释:求重叠的区间并集,然后返回所有的并集。

2025-03-17 16:05:00 1078

原创 LeetCode hot 100 每日一题(9)——560. 和为 K 的子数组

子串和子数组数据结构不同:子数组:指的是数组中连续的一段元素。数组可以是数字、对象或其他类型的集合。子串:专指字符串中连续的一段字符序列。应用场景不同:子数组:常用于解决数组问题,比如求连续子数组的和、寻找最大连续子数组等。子串:常用于字符串处理问题,比如判断字符串中是否包含某个模式、最长回文子串等。

2025-03-14 19:31:48 801

原创 Exception in thread “main“ java.lang.NoSuchMethodError:

如果仍然报相同错误,说明你的环境里仍然存在另一个有冲突的 Solution.class。请在工程目录下(尤其是 bin、out、target 等编译输出文件夹)搜索并删除所有可能的旧版本,然后重新编译运行。原因是因为在不同的.java程序中使用了同名的Solution类,导致编译器和运行时选择的类不一致。你可以在bin文件夹中删除旧的 .class 文件。

2025-03-13 21:23:23 336

原创 LeetCode hot 100 每日一题(8)——438. 找到字符串中所有字母异位词

这是滑动窗口的另一道题目,难度为中等。让我们来看看题目描述:给定两个字符串s和p,找到s中所有p的的子串,返回这些子串的起始索引。不考虑答案输出的顺序。[0,6]起始索引等于 0 的子串是 “cba”, 它是 “abc” 的异位词。起始索引等于 6 的子串是 “bac”, 它是 “abc” 的异位词。[0,1,2]起始索引等于 0 的子串是 “ab”, 它是 “ab” 的异位词。起始索引等于 1 的子串是 “ba”, 它是 “ab” 的异位词。

2025-03-13 12:31:13 940

原创 滑动窗口基本模板(算法)

【代码】滑动窗口基本模板(算法)

2025-03-11 21:31:26 157

原创 LeetCode hot 100 每日一题(7)--3. 无重复字符的最长子串

滑动窗口算法的核心逻辑是:两个while// 增大窗口right++;// 缩小窗口left++;// 滑动窗口算法伪码框架// 用合适的数据结构记录窗口中的数据,根据具体场景变通// 比如说,我想记录窗口中元素出现的次数,就用 map// 如果我想记录窗口中的元素和,就可以只用一个 int// c 是将移入窗口的字符// 增大窗口right++;// 进行窗口内数据的一系列更新...// *** debug 输出的位置 ***

2025-03-11 21:05:29 755

原创 LeetCode hot 100 每日一题(6)--15. 三数之和

这份代码的核心思想在于利用递归将较复杂的 3Sum 问题(或 n-sum 问题)降解为 2-sum 问题,通过排序和去重操作来保证结果的正确性和唯一性。

2025-03-08 17:49:35 1423

原创 LeetCode hot 100 每日一题(5)--11. 盛最多水的容器

题目描述给定一个长度为n的整数数组height。有n条垂线,第i条线的两个端点是(i, 0)和。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。你不能倾斜容器。示例一图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。1105104又到了激动人心的说人话环节:数组中每一个数字就是图中的柱子高度,找到图中两个柱子围起来最大的区域。

2025-03-06 21:27:05 508

原创 java基础(算法用)

自用java基础(算法用)

2025-03-05 11:17:26 931

原创 java中指针的用法

java中指针的简单用法

2025-03-04 11:50:24 896

原创 LeetCode hot 100 每日一题(4)--283. 移动零

在这道题中,指针Java 中没有直接操作内存地址的指针,但可以使用下标变量(如ij)来模拟指针的作用,通过记录当前位置,实现对数组的遍历和修改。由于 Java 中数组是引用类型,在方法内部对数组的修改会直接反映在原数组上,因此利用下标操作可以实现不复制数组的原地修改。一个下标(如i)用来遍历数组中的每个元素。另一个下标(如j)用来记录下一个非零元素应该放置的位置。第一轮遍历过程中,将所有非零元素依次复制到下标j指向的位置,然后j后移。第二轮遍历则从j。

2025-03-04 11:40:05 1155

原创 java中HashSet用法

(HashMap)实现的集合类,用于存储不重复的元素。​它不保证元素的顺序,即元素的插入顺序可能与迭代顺序不同。方法从集合中移除指定的元素。如果元素存在且被移除,返回 true;方法将元素添加到集合中。如果元素已存在,添加操作不会生效,且返回 false。使用 contains(Object o) 方法判断集合中是否包含指定的元素。可以使用增强型 for 循环或迭代器来遍历 HashSet 中的元素。以下是一个完整的示例,演示了。方法获取集合中元素的数量。方法移除集合中的所有元素。方法检查集合是否为空。

2025-03-03 18:31:56 398

原创 LeetCode hot 100 每日一题(3)--128. 最长连续序列

下面是HashSet在 Java 中的声明和基本用法示例,以及详细解释:在 Java 中,HashSet是一个基于哈希表(HashMap)实现的集合类,用于存储不重复的元素。​它不保证元素的顺序,即元素的插入顺序可能与迭代顺序不同。声明HashSet要使用 HashSet,首先需要导入类。// 创建一个存储字符串的 HashSet Set < String > set = new HashSet < >();

2025-03-03 18:31:12 1134 2

原创 java中ArrayList用法

是一个动态数组,适用于需要频繁添加、删除和随机访问元素的场景。它提供了简单易用的 API,使得我们可以方便地操作集合数据。由于底层基于数组实现,访问速度快,但在中间插入或删除元素时可能需要移动数据,因此在设计程序时需要考虑操作的频率和数据量。时,通常使用泛型指定存储的数据类型。

2025-03-01 12:20:47 217

原创 LeetCode hot 100 每日一题(2)--49. 字母异位词分组

在这道题目中出现了ArrayListArrayList是一个动态数组,适用于需要频繁添加、删除和随机访问元素的场景。它提供了简单易用的 API,使得我们可以方便地操作集合数据。由于底层基于数组实现,访问速度快,但在中间插入或删除元素时可能需要移动数据,因此在设计程序时需要考虑操作的频率和数据量。声明与初始化声明一个ArrayList时,通常使用泛型指定存储的数据类型。添加元素访问元素获取列表的大小:修改元素删除元素遍历列表i++) {常用其他方法。

2025-03-01 12:13:15 1360

空空如也

空空如也

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

TA关注的人

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