|
@ -142,7 +142,7 @@ |
|
|
|
|
|
|
|
|
* **一份合格的产品需求文档(多数内容有即可,不同团队要求大体类似)** |
|
|
* **一份合格的产品需求文档(多数内容有即可,不同团队要求大体类似)** |
|
|
|
|
|
|
|
|
``` |
|
|
```markdown |
|
|
## 1. 标题页 |
|
|
## 1. 标题页 |
|
|
|
|
|
|
|
|
- **产品名称**:[产品名称] |
|
|
- **产品名称**:[产品名称] |
|
@ -2745,7 +2745,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
|
|
|
|
|
|
* 开发网盘文件重命名接口,包括文件夹和文件一样适用 |
|
|
* 开发网盘文件重命名接口,包括文件夹和文件一样适用 |
|
|
|
|
|
|
|
|
<img src="/img/image-20241226170055385.png" alt="image-20241226170055385" style="zoom:50%;" /> |
|
|
<img src="./img/image-20241226170055385.png" alt="image-20241226170055385" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
* 业务逻辑方法梳理 |
|
|
* 业务逻辑方法梳理 |
|
|
|
|
|
|
|
@ -2873,7 +2873,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
* 递归和非递归,我们采用非递归,内存里面操作的方式 |
|
|
* 递归和非递归,我们采用非递归,内存里面操作的方式 |
|
|
* 内存里面操作也有多种实现方式,比如分组或者遍历处理 |
|
|
* 内存里面操作也有多种实现方式,比如分组或者遍历处理 |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
* 后端接口协议分析,倒推代码处理逻辑 |
|
|
* 后端接口协议分析,倒推代码处理逻辑 |
|
|
|
|
|
|
|
@ -2943,19 +2943,19 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
|
|
|
|
|
|
* 查询用户的全部文件夹列表 |
|
|
* 查询用户的全部文件夹列表 |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
* 构建一个Map,key为文件夹ID,value为FolderTreeNodeDTO对象 |
|
|
* 构建一个Map,key为文件夹ID,value为FolderTreeNodeDTO对象 |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
* 构建文件夹树,遍历文件夹映射,为每个文件夹找到其子文件夹 |
|
|
* 构建文件夹树,遍历文件夹映射,为每个文件夹找到其子文件夹 |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
* 返回根节点(parentId为0的节点)过滤出根文件夹即可 |
|
|
* 返回根节点(parentId为0的节点)过滤出根文件夹即可 |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
#### 【难点】查询文件树接口编码案例实战 |
|
|
#### 【难点】查询文件树接口编码案例实战 |
|
|
|
|
|
|
|
@ -3238,7 +3238,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
* 批量操作对应的文件列表,移动到对应的目录下面 |
|
|
* 批量操作对应的文件列表,移动到对应的目录下面 |
|
|
* 需要考虑什么?如何实现相关功能? |
|
|
* 需要考虑什么?如何实现相关功能? |
|
|
|
|
|
|
|
|
<img src="/img/image-20250102105611605.png" alt="image-20250102105611605" style="zoom:50%;" /> |
|
|
<img src="./img/image-20250102105611605.png" alt="image-20250102105611605" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -3255,7 +3255,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
|
|
|
|
|
|
* 编码实战 |
|
|
* 编码实战 |
|
|
|
|
|
|
|
|
<img src="/img/image-20250102112917137.png" alt="image-20250102112917137" style="zoom:50%;" /> |
|
|
<img src="./img/image-20250102112917137.png" alt="image-20250102112917137" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
```java |
|
|
```java |
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
@Transactional(rollbackFor = Exception.class) |
|
@ -3298,11 +3298,11 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
* 批量整理对应的文件列表,移动到对应的目录下面 |
|
|
* 批量整理对应的文件列表,移动到对应的目录下面 |
|
|
* 需要考虑什么?如何实现相关功能? |
|
|
* 需要考虑什么?如何实现相关功能? |
|
|
|
|
|
|
|
|
<img src="/img/image-20250102105611605.png" alt="image-20250102105611605" style="zoom:50%;" /> |
|
|
<img src="./img/image-20250102105611605.png" alt="image-20250102105611605" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
* 编码实现 |
|
|
* 编码实现 |
|
|
|
|
|
|
|
|
<img src="/img/image-20250102112809176.png" alt="image-20250102112809176" style="zoom:50%;" /> |
|
|
<img src="./img/image-20250102112809176.png" alt="image-20250102112809176" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
* 检查父ID是否合法 |
|
|
* 检查父ID是否合法 |
|
|
|
|
|
|
|
@ -3360,7 +3360,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
* 判断是否为文件夹:如果当前项是文件夹,则递归获取其子文件,并继续递归处理。 |
|
|
* 判断是否为文件夹:如果当前项是文件夹,则递归获取其子文件,并继续递归处理。 |
|
|
* 添加到结果列表:根据 onlyFolder 参数决定是否只添加文件夹,或者同时添加文件和文件夹 |
|
|
* 添加到结果列表:根据 onlyFolder 参数决定是否只添加文件夹,或者同时添加文件和文件夹 |
|
|
|
|
|
|
|
|
<img src="/img/image-20250102113509986.png" alt="image-20250102113509986" style="zoom:50%;" /> |
|
|
<img src="./img/image-20250102113509986.png" alt="image-20250102113509986" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
* `findAllAccountFileDOWithRecur` 递归逻辑处理(多个地方会使用,封装方法) |
|
|
* `findAllAccountFileDOWithRecur` 递归逻辑处理(多个地方会使用,封装方法) |
|
|
|
|
|
|
|
@ -3391,7 +3391,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
* 测试文件批量移动 |
|
|
* 测试文件批量移动 |
|
|
* bug修复 |
|
|
* bug修复 |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
* 数据准备 |
|
|
* 数据准备 |
|
|
|
|
|
|
|
@ -3445,28 +3445,28 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
* 提供模块化开发能力,支持LLM(如GPT、Claude等)与外部数据源(数据库、API)的集成 |
|
|
* 提供模块化开发能力,支持LLM(如GPT、Claude等)与外部数据源(数据库、API)的集成 |
|
|
* 包含链(Chain)、代理(Agent)、记忆(Memory)等核心组件,用于构建复杂AI应用 |
|
|
* 包含链(Chain)、代理(Agent)、记忆(Memory)等核心组件,用于构建复杂AI应用 |
|
|
|
|
|
|
|
|
<img src="/img/image-20250301141529448.png" alt="image-20250301141529448" style="zoom:50%;" /> |
|
|
<img src="./img/image-20250301141529448.png" alt="image-20250301141529448" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
* LangServer |
|
|
* LangServer |
|
|
|
|
|
|
|
|
* 部署工具,可将LangChain应用快速转换为REST API,支持并行处理、流式传输和异步调用 |
|
|
* 部署工具,可将LangChain应用快速转换为REST API,支持并行处理、流式传输和异步调用 |
|
|
* 自动生成OpenAPI文档, 滚动更新支持, 内置Prometheus指标, 适用于企业级生产环境 |
|
|
* 自动生成OpenAPI文档, 滚动更新支持, 内置Prometheus指标, 适用于企业级生产环境 |
|
|
|
|
|
|
|
|
<img src="/img/image-20250301140529990.png" alt="image-20250301140529990" style="zoom:50%;" /> |
|
|
<img src="./img/image-20250301140529990.png" alt="image-20250301140529990" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
* LangSmith |
|
|
* LangSmith |
|
|
|
|
|
|
|
|
* 开发者调试与监控平台,支持对LLM应用的性能分析、测试和部署优化 |
|
|
* 开发者调试与监控平台,支持对LLM应用的性能分析、测试和部署优化 |
|
|
* 提供可视化调试界面和自动化评估工具,提升开发效率与可靠性 |
|
|
* 提供可视化调试界面和自动化评估工具,提升开发效率与可靠性 |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
* LangGraph |
|
|
* LangGraph |
|
|
|
|
|
|
|
|
* 状态管理工具,用于构建多代理系统,支持流式处理和复杂任务分解 |
|
|
* 状态管理工具,用于构建多代理系统,支持流式处理和复杂任务分解 |
|
|
* 可视化流程设计器, 循环/条件分支支持,分布式状态持久化, 自动断点续跑 |
|
|
* 可视化流程设计器, 循环/条件分支支持,分布式状态持久化, 自动断点续跑 |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
* 产品矩阵对比 |
|
|
* 产品矩阵对比 |
|
|
|
|
|
|
|
@ -3477,7 +3477,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
| LangGraph | 复杂流程编排 | Activiti BPMN | 业务工作流设计、状态管理 | |
|
|
| LangGraph | 复杂流程编排 | Activiti BPMN | 业务工作流设计、状态管理 | |
|
|
| LangChain Core | 基础组件库 | Spring AI | 基础AI功能开发 | |
|
|
| LangChain Core | 基础组件库 | Spring AI | 基础AI功能开发 | |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -3706,7 +3706,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
|
|
|
|
|
|
* 大模型IO交互链路概览 |
|
|
* 大模型IO交互链路概览 |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
* LangChain模块对比大家熟知的Java Spring生态 |
|
|
* LangChain模块对比大家熟知的Java Spring生态 |
|
|
|
|
|
|
|
@ -3817,7 +3817,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
|
|
|
|
|
|
* 大模型使用开发的Model IO链路核心三要素 |
|
|
* 大模型使用开发的Model IO链路核心三要素 |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
| 组件 | 作用 | 典型类/方法 | |
|
|
| 组件 | 作用 | 典型类/方法 | |
|
|
| :---------: | :------------------------: | :-------------------------------------------: | |
|
|
| :---------: | :------------------------: | :-------------------------------------------: | |
|
@ -3825,7 +3825,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
| **Models** | 对接不同LLM服务的统一接口 | `ChatOpenAI` | |
|
|
| **Models** | 对接不同LLM服务的统一接口 | `ChatOpenAI` | |
|
|
| **Parsers** | 将模型输出转换为结构化数据 | `StrOutputParser`, `JsonOutputParser` | |
|
|
| **Parsers** | 将模型输出转换为结构化数据 | `StrOutputParser`, `JsonOutputParser` | |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
* LangChain支持的模型类型说明 |
|
|
* LangChain支持的模型类型说明 |
|
|
|
|
|
|
|
@ -4150,7 +4150,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
Prompt工程:写自然语言指令→大模型生成结果 |
|
|
Prompt工程:写自然语言指令→大模型生成结果 |
|
|
``` |
|
|
``` |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
* Prompt设计四要素 |
|
|
* Prompt设计四要素 |
|
|
|
|
|
|
|
@ -4390,7 +4390,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
* 动态内容组装 |
|
|
* 动态内容组装 |
|
|
* 避免Prompt硬编码 |
|
|
* 避免Prompt硬编码 |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
* PromptTemplate核心变量和方法 |
|
|
* PromptTemplate核心变量和方法 |
|
|
* template 定义具体的模板格式,其中 `{变量名}` 是占位符 |
|
|
* template 定义具体的模板格式,其中 `{变量名}` 是占位符 |
|
@ -4600,7 +4600,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
* 天然适配聊天模型(如GPT-3.5/4) |
|
|
* 天然适配聊天模型(如GPT-3.5/4) |
|
|
* 可维护对话上下文 |
|
|
* 可维护对话上下文 |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
* 消息类型体系 |
|
|
* 消息类型体系 |
|
|
|
|
|
|
|
@ -5058,7 +5058,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
* 将大模型的自由文本转为结构化数据(类似Java的JSON/XML解析) |
|
|
* 将大模型的自由文本转为结构化数据(类似Java的JSON/XML解析) |
|
|
* 自动处理模型输出的格式错误 |
|
|
* 自动处理模型输出的格式错误 |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
* 解析器工作原理 |
|
|
* 解析器工作原理 |
|
|
|
|
|
|
|
@ -5321,7 +5321,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
- **序列化**:轻松转换数据为字典/JSON |
|
|
- **序列化**:轻松转换数据为字典/JSON |
|
|
- **配置管理**:支持复杂配置项的验证 |
|
|
- **配置管理**:支持复杂配置项的验证 |
|
|
|
|
|
|
|
|
<img src="/img/image-20250228151848080.png" alt="image-20250228151848080" style="zoom:30%;" /> |
|
|
<img src="./img/image-20250228151848080.png" alt="image-20250228151848080" style="zoom:30%;" /> |
|
|
|
|
|
|
|
|
* 对比Java开发的模型验证 |
|
|
* 对比Java开发的模型验证 |
|
|
|
|
|
|
|
@ -5881,7 +5881,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
* 兼容性:与Pydantic数据模型无缝集成,支持结构化输出验证。 |
|
|
* 兼容性:与Pydantic数据模型无缝集成,支持结构化输出验证。 |
|
|
* 容错机制:避免因模型输出不稳定导致程序中断 |
|
|
* 容错机制:避免因模型输出不稳定导致程序中断 |
|
|
|
|
|
|
|
|
<img src="/img/export_4232z.png" alt="export_4232z" style="zoom:50%;" /> |
|
|
<img src="./img/export_4232z.png" alt="export_4232z" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
* 核心语法与使用步骤 |
|
|
* 核心语法与使用步骤 |
|
|
|
|
|
|
|
@ -6098,7 +6098,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
* 再将检索结果与问题共同输入生成模型得到最终答案 |
|
|
* 再将检索结果与问题共同输入生成模型得到最终答案 |
|
|
* 类比人类解答问题的过程:遇到问题时先查资料(检索),再结合资料组织回答(生成) |
|
|
* 类比人类解答问题的过程:遇到问题时先查资料(检索),再结合资料组织回答(生成) |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
* 用Java伪代码描述RAG工作流程: |
|
|
* 用Java伪代码描述RAG工作流程: |
|
|
|
|
|
|
|
@ -6150,7 +6150,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
|
|
|
|
|
|
* 技术架构 |
|
|
* 技术架构 |
|
|
|
|
|
|
|
|
<img src="/img/1-1579900.png" alt="1" style="zoom:50%;" /> |
|
|
<img src="./img/1-1579900.png" alt="1" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
* **涉及的技术链路环节: 文档加载器->文档转换器->文本嵌入模型->向量存储->检索器** |
|
|
* **涉及的技术链路环节: 文档加载器->文档转换器->文本嵌入模型->向量存储->检索器** |
|
|
|
|
|
|
|
@ -6264,7 +6264,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
|
|
|
|
|
|
* 效果测试 |
|
|
* 效果测试 |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
* 多数同学的问题 |
|
|
* 多数同学的问题 |
|
|
* **为啥可以根据我们的提问,进行检索到对应的词条?而且还可以正确检索?** |
|
|
* **为啥可以根据我们的提问,进行检索到对应的词条?而且还可以正确检索?** |
|
@ -6281,7 +6281,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
* 万丈高楼平地起,基础需要打牢固,一步步进行,然后学会举一反三使用 |
|
|
* 万丈高楼平地起,基础需要打牢固,一步步进行,然后学会举一反三使用 |
|
|
* 如果直接讲Agent智能体项目,那项目涉及到的很多技术就懵逼了,要学会思路 |
|
|
* 如果直接讲Agent智能体项目,那项目涉及到的很多技术就懵逼了,要学会思路 |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
* **涉及的技术链路环节: 文档加载器->文档转换器->文本嵌入模型->向量存储->检索器** |
|
|
* **涉及的技术链路环节: 文档加载器->文档转换器->文本嵌入模型->向量存储->检索器** |
|
|
|
|
|
|
|
@ -6295,7 +6295,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
网页 |
|
|
网页 |
|
|
``` |
|
|
``` |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
* 文档加载器 (Document Loaders) |
|
|
* 文档加载器 (Document Loaders) |
|
|
|
|
|
|
|
@ -6802,7 +6802,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
网页 |
|
|
网页 |
|
|
``` |
|
|
``` |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
* 需求背景,为啥要用? |
|
|
* 需求背景,为啥要用? |
|
|
|
|
|
|
|
@ -7313,7 +7313,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
|
|
|
|
|
|
* 向量就是一串有序的数字,像一条带方向的“箭头”, 在机器学习里面尤其重要 |
|
|
* 向量就是一串有序的数字,像一条带方向的“箭头”, 在机器学习里面尤其重要 |
|
|
|
|
|
|
|
|
<img src="/img/image-20250313142026018.png" alt="image-20250313142026018" style="zoom:50%;" /> |
|
|
<img src="./img/image-20250313142026018.png" alt="image-20250313142026018" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
* 世间万物使用计算机表示,用的数字化语言,让计算机能理解复杂事物, 每个数据都包含多种属性 |
|
|
* 世间万物使用计算机表示,用的数字化语言,让计算机能理解复杂事物, 每个数据都包含多种属性 |
|
|
|
|
|
|
|
@ -7441,19 +7441,19 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
|
|
|
|
|
|
* 基本形式 |
|
|
* 基本形式 |
|
|
|
|
|
|
|
|
<img src="/img/image-20250313151603856.png" alt="image-20250313151603856" style="zoom:50%;" /> |
|
|
<img src="./img/image-20250313151603856.png" alt="image-20250313151603856" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
* **单变量求和示例** |
|
|
* **单变量求和示例** |
|
|
|
|
|
|
|
|
* 计算1到5的整数和: |
|
|
* 计算1到5的整数和: |
|
|
|
|
|
|
|
|
<img src="/img/image-20250313151657094.png" alt="image-20250313151657094" style="zoom:50%;" /> |
|
|
<img src="./img/image-20250313151657094.png" alt="image-20250313151657094" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
* 计算前3个偶数的平方和: |
|
|
* 计算前3个偶数的平方和: |
|
|
|
|
|
|
|
|
<img src="/img/image-20250313151724171.png" alt="image-20250313151724171" style="zoom:50%;" /> |
|
|
<img src="./img/image-20250313151724171.png" alt="image-20250313151724171" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
* 点积(内积)的定义与计算 |
|
|
* 点积(内积)的定义与计算 |
|
|
|
|
|
|
|
@ -7461,18 +7461,18 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
|
|
|
|
|
|
* 点积是**两个向量对应分量相乘后求和**的运算,结果是一个标量(数值)。 |
|
|
* 点积是**两个向量对应分量相乘后求和**的运算,结果是一个标量(数值)。 |
|
|
|
|
|
|
|
|
<img src="/img/image-20250313161943645.png" alt="image-20250313161943645" style="zoom:50%;" /> |
|
|
<img src="./img/image-20250313161943645.png" alt="image-20250313161943645" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
* 几何意义 |
|
|
* 几何意义 |
|
|
|
|
|
|
|
|
* 点积反映两个向量的夹角关系 |
|
|
* 点积反映两个向量的夹角关系 |
|
|
* 通过在空间中引入笛卡尔坐标系,向量之间的点积既可以由向量坐标的代数运算得出 |
|
|
* 通过在空间中引入笛卡尔坐标系,向量之间的点积既可以由向量坐标的代数运算得出 |
|
|
|
|
|
|
|
|
<img src="/img/image-20250313162742811.png" alt="image-20250313162742811" style="zoom:50%;" /> |
|
|
<img src="./img/image-20250313162742811.png" alt="image-20250313162742811" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
* 点积计算示例 |
|
|
* 点积计算示例 |
|
|
|
|
|
|
|
|
<img src="/img/image-20250313162827278.png" alt="image-20250313162827278" style="zoom:50%;" /> |
|
|
<img src="./img/image-20250313162827278.png" alt="image-20250313162827278" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
#### 扫盲-向量的相似度计算之余弦相似度 |
|
|
#### 扫盲-向量的相似度计算之余弦相似度 |
|
|
|
|
|
|
|
@ -7481,7 +7481,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
* **正弦(sinθ)**:对边长度与斜边长度的比值。 |
|
|
* **正弦(sinθ)**:对边长度与斜边长度的比值。 |
|
|
* **余弦(cosθ)**:邻边长度与斜边长度的比值(即夹角的两边) |
|
|
* **余弦(cosθ)**:邻边长度与斜边长度的比值(即夹角的两边) |
|
|
|
|
|
|
|
|
<img src="/img/image-20250313164754696.png" alt="image-20250313164754696" style="zoom:50%;" /> |
|
|
<img src="./img/image-20250313164754696.png" alt="image-20250313164754696" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
* 为啥要学余弦相似度? |
|
|
* 为啥要学余弦相似度? |
|
|
|
|
|
|
|
@ -7500,9 +7500,9 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
|
|
|
|
|
|
* 公式(向量的模长等于其各分量平方和的平方根) |
|
|
* 公式(向量的模长等于其各分量平方和的平方根) |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
<img src="/img/image-20250313170520819.png" alt="image-20250313170520819" style="zoom:50%;" /> |
|
|
<img src="./img/image-20250313170520819.png" alt="image-20250313170520819" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
* **直观理解** |
|
|
* **直观理解** |
|
|
|
|
|
|
|
@ -7527,7 +7527,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
* 以二维向量为例:向量A = [3, 4],向量B = [1, 2] |
|
|
* 以二维向量为例:向量A = [3, 4],向量B = [1, 2] |
|
|
* 结论:两个向量方向高度相似! |
|
|
* 结论:两个向量方向高度相似! |
|
|
|
|
|
|
|
|
<img src="/img/image-20250313170904153.png" alt="image-20250313170904153" style="zoom:50%;" /> |
|
|
<img src="./img/image-20250313170904153.png" alt="image-20250313170904153" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
* 大模型中的核心应用场景 |
|
|
* 大模型中的核心应用场景 |
|
|
|
|
|
|
|
@ -7546,7 +7546,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
|
|
|
|
|
|
* 为什么重要:掌握余弦相似度,就是掌握了**连接数据与智能的钥匙**! |
|
|
* 为什么重要:掌握余弦相似度,就是掌握了**连接数据与智能的钥匙**! |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
#### 科学计算核心库NumPy和推荐系统案例 |
|
|
#### 科学计算核心库NumPy和推荐系统案例 |
|
|
|
|
|
|
|
@ -7718,7 +7718,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
|
|
|
|
|
|
* 句子1和2相近,因为维度大体相同 |
|
|
* 句子1和2相近,因为维度大体相同 |
|
|
|
|
|
|
|
|
<img src="/img/image-20250313210027704.png" alt="image-20250313210027704" style="zoom:50%;" /> |
|
|
<img src="./img/image-20250313210027704.png" alt="image-20250313210027704" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
* 应用场景 |
|
|
* 应用场景 |
|
|
|
|
|
|
|
@ -7738,7 +7738,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
* 这些向量可以用于计算文本之间的相似度、进行信息检索和聚类分析 |
|
|
* 这些向量可以用于计算文本之间的相似度、进行信息检索和聚类分析 |
|
|
* 文本嵌入的整体链路 `原始文本 → Embedding模型 → 数值向量 → 存储/比较` |
|
|
* 文本嵌入的整体链路 `原始文本 → Embedding模型 → 数值向量 → 存储/比较` |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
* LLM 大模型 vs Embedding 大模型 |
|
|
* LLM 大模型 vs Embedding 大模型 |
|
|
|
|
|
|
|
@ -7840,7 +7840,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
* 在线嵌入模型使用,也可以使用其他的厂商 |
|
|
* 在线嵌入模型使用,也可以使用其他的厂商 |
|
|
* 地址:https://bailian.console.aliyun.com/ |
|
|
* 地址:https://bailian.console.aliyun.com/ |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
```python |
|
|
```python |
|
|
from langchain_community.embeddings import DashScopeEmbeddings |
|
|
from langchain_community.embeddings import DashScopeEmbeddings |
|
@ -7886,7 +7886,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
用户数据 → 企业内网服务器 → 本地模型处理 → 结果存于本地数据库 |
|
|
用户数据 → 企业内网服务器 → 本地模型处理 → 结果存于本地数据库 |
|
|
``` |
|
|
``` |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
* 部署实战 |
|
|
* 部署实战 |
|
|
|
|
|
|
|
@ -8200,7 +8200,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
|
|
|
|
|
|
* 文档块通过嵌入模型处理后得到对应向量,下一步就是将向量存储到数据库中,方便后续进行检索使用 |
|
|
* 文档块通过嵌入模型处理后得到对应向量,下一步就是将向量存储到数据库中,方便后续进行检索使用 |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
* 传统数据库的局限性 |
|
|
* 传统数据库的局限性 |
|
|
|
|
|
|
|
@ -8331,7 +8331,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
* 适用场景:推荐系统、图像检索、自然语言处理(NLP)等 |
|
|
* 适用场景:推荐系统、图像检索、自然语言处理(NLP)等 |
|
|
* 全球大厂使用者 |
|
|
* 全球大厂使用者 |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
* 支持部署的架构 |
|
|
* 支持部署的架构 |
|
|
|
|
|
|
|
@ -8340,15 +8340,15 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
* Milvus Standalone 是单机服务器部署,所有组件都捆绑在一个 Docker 镜像中,方便部署 |
|
|
* Milvus Standalone 是单机服务器部署,所有组件都捆绑在一个 Docker 镜像中,方便部署 |
|
|
* Milvus Distributed 可部署在 K8S 集群上,采用云原生架构,适合十亿规模甚至更大的场景,该架构可确保关键组件的冗余。 |
|
|
* Milvus Distributed 可部署在 K8S 集群上,采用云原生架构,适合十亿规模甚至更大的场景,该架构可确保关键组件的冗余。 |
|
|
|
|
|
|
|
|
<img src="/img/image-20250318151846918.png" alt="image-20250318151846918" style="zoom:50%;" /> |
|
|
<img src="./img/image-20250318151846918.png" alt="image-20250318151846918" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
<img src="/img/image-20250318155633751.png" alt="image-20250318155633751" style="zoom:50%;" /> |
|
|
<img src="./img/image-20250318155633751.png" alt="image-20250318155633751" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
* Milvus 架构解析 |
|
|
* Milvus 架构解析 |
|
|
|
|
|
|
|
|
* 数据处理流程 :插入数据 → 生成日志 → 持久化到存储层 → 构建索引 → 支持查询。 |
|
|
* 数据处理流程 :插入数据 → 生成日志 → 持久化到存储层 → 构建索引 → 支持查询。 |
|
|
|
|
|
|
|
|
<img src="/img/export_qtyb85.png" alt="export_qtyb85" style="zoom:50%;" /> |
|
|
<img src="./img/export_qtyb85.png" alt="export_qtyb85" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
| 组件名称 | 核心职责 | 关键特性 | |
|
|
| 组件名称 | 核心职责 | 关键特性 | |
|
|
| :-------------: | :----------------------------------------------------------: | :---------------------------: | |
|
|
| :-------------: | :----------------------------------------------------------: | :---------------------------: | |
|
@ -8364,7 +8364,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
* 每列代表一个字段,每行代表一个实体。 |
|
|
* 每列代表一个字段,每行代表一个实体。 |
|
|
* 下图显示了一个有 8 列和 6 个实体的 Collection |
|
|
* 下图显示了一个有 8 列和 6 个实体的 Collection |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
#### Milvus核心概念和数据结构讲解 |
|
|
#### Milvus核心概念和数据结构讲解 |
|
|
|
|
|
|
|
@ -8491,7 +8491,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
|
|
|
|
|
|
* 基于向量夹角的相似度。 |
|
|
* 基于向量夹角的相似度。 |
|
|
|
|
|
|
|
|
<img src="/img/image-20250313170520819.png" alt="image-20250313170520819" style="zoom:50%;" /> |
|
|
<img src="./img/image-20250313170520819.png" alt="image-20250313170520819" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### Milvus的分区-分片-段结构和最佳实践 |
|
|
#### Milvus的分区-分片-段结构和最佳实践 |
|
@ -8515,7 +8515,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
|
|
|
|
|
|
* 三者协作关系 |
|
|
* 三者协作关系 |
|
|
|
|
|
|
|
|
<img src="/img/0-2288864.png" alt="0" style="zoom:50%;" /> |
|
|
<img src="./img/0-2288864.png" alt="0" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
| 维度 | 分区(Partition) | 分片(Shard) | 段(Segment) | |
|
|
| 维度 | 分区(Partition) | 分片(Shard) | 段(Segment) | |
|
|
| :--------: | :---------------: | :--------------------: | :----------------: | |
|
|
| :--------: | :---------------: | :--------------------: | :----------------: | |
|
@ -8547,13 +8547,13 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
|
|
|
|
|
|
* 系统自动将数据均分到3个分片(假设集群有3个节点) |
|
|
* 系统自动将数据均分到3个分片(假设集群有3个节点) |
|
|
|
|
|
|
|
|
<img src="/img/2-2287117.png" alt="2" style="zoom:50%;" /> |
|
|
<img src="./img/2-2287117.png" alt="2" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
* **段阶段(自动完成)** |
|
|
* **段阶段(自动完成)** |
|
|
|
|
|
|
|
|
* 分片内数据按512MB大小自动切割成多个段 |
|
|
* 分片内数据按512MB大小自动切割成多个段 |
|
|
|
|
|
|
|
|
<img src="/img/4.png" alt="4" style="zoom:50%;" /> |
|
|
<img src="./img/4.png" alt="4" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
* 三者协作原理 |
|
|
* 三者协作原理 |
|
|
|
|
|
|
|
@ -8651,7 +8651,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
- **Milvus Standalone**适用于中型数据集,可扩展至 1 亿向量。 |
|
|
- **Milvus Standalone**适用于中型数据集,可扩展至 1 亿向量。 |
|
|
- **Milvus Distributed 专为**大规模部署而设计,能够处理从一亿到数百亿向量的数据集。 |
|
|
- **Milvus Distributed 专为**大规模部署而设计,能够处理从一亿到数百亿向量的数据集。 |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
* Milvus分层架构(Docker部署都包括了) |
|
|
* Milvus分层架构(Docker部署都包括了) |
|
|
|
|
|
|
|
@ -8733,7 +8733,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
* **版本兼容性**:注意 Attu 与 Milvus 版本的匹配,避免接口不兼容问题【**当前安装的Milvus版本 V2.5X**】 |
|
|
* **版本兼容性**:注意 Attu 与 Milvus 版本的匹配,避免接口不兼容问题【**当前安装的Milvus版本 V2.5X**】 |
|
|
* GitHub地址:https://github.com/zilliztech/attu |
|
|
* GitHub地址:https://github.com/zilliztech/attu |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
* 核心功能 |
|
|
* 核心功能 |
|
|
|
|
|
|
|
@ -8755,7 +8755,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
|
|
|
|
|
|
* 安装实战(根据系统选择对应的客户端下载,输入ip+端口) |
|
|
* 安装实战(根据系统选择对应的客户端下载,输入ip+端口) |
|
|
|
|
|
|
|
|
 |
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -9364,7 +9364,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
|
|
|
|
|
|
* **原理**:通过向量空间中的距离计算(余弦相似度/L2距离等)找出最接近目标向量的结果 |
|
|
* **原理**:通过向量空间中的距离计算(余弦相似度/L2距离等)找出最接近目标向量的结果 |
|
|
|
|
|
|
|
|
<img src="/img/1-2540349.png" alt="1" style="zoom:50%;" /> |
|
|
<img src="./img/1-2540349.png" alt="1" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
* 核心特点 |
|
|
* 核心特点 |
|
|
|
|
|
|
|
@ -9406,7 +9406,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
* 设计初衷是解决传统相似性搜索(如余弦相似度)可能导致的“信息冗余”问题,在需要覆盖多角度信息或推荐多样化内容的场景中效果显著 |
|
|
* 设计初衷是解决传统相似性搜索(如余弦相似度)可能导致的“信息冗余”问题,在需要覆盖多角度信息或推荐多样化内容的场景中效果显著 |
|
|
* **原理**:在相似度和多样性之间进行权衡,避免结果冗余 |
|
|
* **原理**:在相似度和多样性之间进行权衡,避免结果冗余 |
|
|
|
|
|
|
|
|
<img src="/img/2-2540359.png" alt="2" style="zoom:50%;" /> |
|
|
<img src="./img/2-2540359.png" alt="2" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
* 算法原理图解 |
|
|
* 算法原理图解 |
|
|
|
|
|
|
|
@ -9466,7 +9466,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
|
|
|
|
|
|
* 企业推荐系统架构示例 |
|
|
* 企业推荐系统架构示例 |
|
|
|
|
|
|
|
|
<img src="/img/3-2540810.png" alt="3" style="zoom:50%;" /> |
|
|
<img src="./img/3-2540810.png" alt="3" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
#### 新版LangChain向量数据库VectorStore设计 |
|
|
#### 新版LangChain向量数据库VectorStore设计 |
|
|
|
|
|
|
|
@ -9496,7 +9496,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
from langchain_core.vectorstores import VectorStore |
|
|
from langchain_core.vectorstores import VectorStore |
|
|
``` |
|
|
``` |
|
|
|
|
|
|
|
|
<img src="/img/1-2537508.png" alt="1" style="zoom:50%;" /> |
|
|
<img src="./img/1-2537508.png" alt="1" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
* VectorStore 核心方法详解 |
|
|
* VectorStore 核心方法详解 |
|
|
|
|
|
|
|
@ -9607,7 +9607,7 @@ public JsonData list(@RequestParam(value = "parent_id")Long parentId){ |
|
|
|
|
|
|
|
|
* 场景:知识库冷启动 |
|
|
* 场景:知识库冷启动 |
|
|
|
|
|
|
|
|
<img src="/img/export_j1u9v.png" alt="export_j1u9v" style="zoom:50%;" /> |
|
|
<img src="./img/export_j1u9v.png" alt="export_j1u9v" style="zoom:50%;" /> |
|
|
|
|
|
|
|
|
#### LangChain整合Milvus新增和删除实战 |
|
|
#### LangChain整合Milvus新增和删除实战 |
|
|
|
|
|
|
|
|