diff --git a/.obsidian/plugins/recent-files-obsidian/data.json b/.obsidian/plugins/recent-files-obsidian/data.json index f99f29f..210e684 100644 --- a/.obsidian/plugins/recent-files-obsidian/data.json +++ b/.obsidian/plugins/recent-files-obsidian/data.json @@ -1,13 +1,117 @@ { "recentFiles": [ + { + "basename": "CLAUDE.md", + "path": "work/移动杭研/AI 项目/CLAUDE.md.md" + }, + { + "basename": "常用命令", + "path": "resource/常用命令.md" + }, + { + "basename": "settings.local.json", + "path": "work/移动杭研/AI 项目/settings.local.json.md" + }, + { + "basename": "服务器-香港", + "path": "personal/服务器-香港.md" + }, + { + "basename": "20260311142461", + "path": "000-Inbox/20260311142461.md" + }, + { + "basename": "K-V 功能", + "path": "work/移动杭研/项目备忘/K-V 功能.md" + }, + { + "basename": "IBS NG 日志模板", + "path": "work/移动杭研/项目备忘/IBS NG 日志模板.md" + }, + { + "basename": "项目杂记", + "path": "work/移动杭研/项目备忘/项目杂记.md" + }, + { + "basename": "数据库信息", + "path": "work/移动杭研/项目备忘/数据库信息.md" + }, + { + "basename": "获取企业 token 脚本", + "path": "work/移动杭研/项目备忘/获取企业 token 脚本.md" + }, + { + "basename": "环境账号", + "path": "work/移动杭研/项目备忘/环境账号.md" + }, + { + "basename": "工作账号", + "path": "work/移动杭研/项目备忘/工作账号.md" + }, + { + "basename": "开发备注", + "path": "work/移动杭研/AI 项目/开发备注.md" + }, { "basename": "IBS 智能体具体落实技术方案", "path": "work/移动杭研/AI 项目/IBS 智能体具体落实技术方案.md" }, + { + "basename": "RAG Flow", + "path": "work/移动杭研/AI 项目/RAG Flow.md" + }, { "basename": "ibs-ai 项目梳理", "path": "work/移动杭研/AI 项目/ibs-ai 项目梳理.md" }, + { + "basename": "20260311083458", + "path": "000-Inbox/20260311083458.md" + }, + { + "basename": "20260311084236", + "path": "000-Inbox/20260311084236.md" + }, + { + "basename": "20260311090483", + "path": "000-Inbox/20260311090483.md" + }, + { + "basename": "20260311100356", + "path": "000-Inbox/20260311100356.md" + }, + { + "basename": "如何成为一个 React 工程师呢?", + "path": "resource/前端/如何成为一个 React 工程师呢?.md" + }, + { + "basename": "RAG Flow 部署", + "path": "work/移动杭研/AI 项目/RAG Flow 部署.md" + }, + { + "basename": "20260310144341", + "path": "000-Inbox/20260310144341.md" + }, + { + "basename": "20260310150987", + "path": "000-Inbox/20260310150987.md" + }, + { + "basename": "20260310142396", + "path": "000-Inbox/20260310142396.md" + }, + { + "basename": "20260310104243", + "path": "000-Inbox/20260310104243.md" + }, + { + "basename": "获取各省试商用详情(已无法使用)", + "path": "work/移动杭研/业务梳理/业务工单/获取各省试商用详情(已无法使用).md" + }, + { + "basename": "0223-试商用峰值带宽为什么查不到红象公司22", + "path": "work/移动杭研/问题处理/2024-02/0223-试商用峰值带宽为什么查不到红象公司22.md" + }, { "basename": "图纸-IBS 智能体-v3-项目架构", "path": "work/移动杭研/AI 项目/图纸-IBS 智能体-v3-项目架构.md" @@ -36,14 +140,6 @@ "basename": "20260309150326", "path": "000-Inbox/20260309150326.md" }, - { - "basename": "如何成为一个 React 工程师呢?", - "path": "resource/前端/如何成为一个 React 工程师呢?.md" - }, - { - "basename": "服务器-香港", - "path": "personal/服务器-香港.md" - }, { "basename": "直播源", "path": "personal/电影/直播源.md" @@ -72,14 +168,6 @@ "basename": "Ubuntu 24.04 LTS ELK 8 安装指南", "path": "resource/组件/Ubuntu 24.04 LTS ELK 8 安装指南.md" }, - { - "basename": "常用命令", - "path": "resource/常用命令.md" - }, - { - "basename": "环境账号", - "path": "work/移动杭研/项目备忘/环境账号.md" - }, { "basename": "开发笔记", "path": "work/移动杭研/开发记录/7.19.0/开发笔记.md" @@ -111,90 +199,6 @@ { "basename": "vim 快捷键与操作手册", "path": "resource/系统/vim 快捷键与操作手册.md" - }, - { - "basename": "VSCode 配置文件", - "path": "resource/配置/VSCode 配置文件.md" - }, - { - "basename": "Rime 配置文件", - "path": "resource/配置/Rime 配置文件.md" - }, - { - "basename": "PowerShell 配置文件", - "path": "resource/配置/PowerShell 配置文件.md" - }, - { - "basename": "Codex 配置文件", - "path": "resource/配置/Codex 配置文件.md" - }, - { - "basename": "Claude Code 提示词", - "path": "resource/配置/Claude Code 提示词.md" - }, - { - "basename": "Claude Code 配置文件", - "path": "resource/配置/Claude Code 配置文件.md" - }, - { - "basename": "19 家顶级 Web3 投资机构简介丨 Web3 创业者必看", - "path": "resource/剪藏/理财相关/19 家顶级 Web3 投资机构简介丨 Web3 创业者必看.md" - }, - { - "basename": "jar 包启动脚本", - "path": "resource/脚本/jar 包启动脚本.md" - }, - { - "basename": "数据清洗-日志筛选", - "path": "resource/脚本/数据清洗-日志筛选.md" - }, - { - "basename": "轮询备案号(GO)", - "path": "resource/脚本/轮询备案号(GO).md" - }, - { - "basename": "Rime YAML Custom Patch 语法笔记", - "path": "resource/工具/rime/Rime YAML Custom Patch 语法笔记.md" - }, - { - "basename": "Rime 小狼毫", - "path": "resource/工具/rime/Rime 小狼毫.md" - }, - { - "basename": "x-callback-url", - "path": "resource/工具/obsidian/x-callback-url.md" - }, - { - "basename": "Templater", - "path": "resource/工具/obsidian/Templater.md" - }, - { - "basename": "阅读记录", - "path": "personal/阅读/阅读记录.md" - }, - { - "basename": "装机系统", - "path": "personal/个人/装机系统.md" - }, - { - "basename": "装机历程", - "path": "personal/个人/装机历程.md" - }, - { - "basename": "债务记录", - "path": "personal/个人/债务记录.md" - }, - { - "basename": "日常记录", - "path": "personal/个人/日常记录.md" - }, - { - "basename": "情绪价值", - "path": "personal/个人/情绪价值.md" - }, - { - "basename": "结婚相关", - "path": "personal/个人/结婚相关.md" } ], "omittedPaths": [ diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 8b0c9cd..9bba418 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -4,22 +4,17 @@ "type": "split", "children": [ { - "id": "4b5820367a78b7bd", + "id": "ba67f7f262d91fde", "type": "tabs", "children": [ { - "id": "4695be4ed62c6a04", + "id": "08db0b367836cf1d", "type": "leaf", "state": { - "type": "markdown", - "state": { - "file": "work/移动杭研/AI 项目/IBS 智能体具体落实技术方案.md", - "mode": "source", - "source": false, - "backlinks": false - }, + "type": "empty", + "state": {}, "icon": "lucide-file", - "title": "IBS 智能体具体落实技术方案" + "title": "新标签页" } } ] @@ -97,7 +92,7 @@ } ], "direction": "horizontal", - "width": 507.5 + "width": 253.5 }, "right": { "id": "ca733f6d5936ae40", @@ -114,13 +109,12 @@ "state": { "type": "outline", "state": { - "file": "work/移动杭研/AI 项目/IBS 智能体具体落实技术方案.md", "followCursor": true, "showSearch": false, "searchQuery": "" }, "icon": "lucide-list", - "title": "IBS 智能体具体落实技术方案 的大纲" + "title": "大纲" } }, { @@ -232,34 +226,34 @@ "obsidian-excalidraw-plugin:New drawing": false } }, - "active": "4695be4ed62c6a04", + "active": "08db0b367836cf1d", "lastOpenFiles": [ - "work/移动杭研/AI 项目/ibs-ai 项目梳理.md", - "work/移动杭研/AI 项目/IBS 智能体具体落实技术方案.md", - "work/移动杭研/AI 项目/MCP Prompt.md", - "work/移动杭研/AI 项目/图纸-IBS 智能体-v3-项目架构.md", - "work/移动杭研/AI 项目/图纸-IBS 智能体-v2-项目架构 原生 MCP.md", - "work/移动杭研/AI 项目/图纸-IBS 智能体-v1-流量查询 demo 对象存储.md", - "work/移动杭研/AI 项目/图纸-IBS 智能体-v1-流量查询 demo.md", - "work/移动杭研/AI 项目/IBS 智能体-v4.md", - "work/移动杭研/AI 项目/IBS 智能体-v3-遗弃.md", - "resource/ai/prompts/Prompt 公司智能体.md", + "work/移动杭研/AI 项目/CLAUDE.md.md", + "calendar/diary/2026-03-12.md", + "calendar/diary/2026-03-11.md", "calendar/diary/2026-03-10.md", - "000-inbox/20260309173243.md", - "000-inbox/20260309150326.md", "calendar/diary/2026-03-09.md", - "calendar/diary/2026-03-08.md", - "calendar/weeks/2026-W10.md", - "calendar/diary/2026-03-07.md", "calendar/diary/2026-03-06.md", - "calendar/diary/2026-03-05.md", - "calendar/diary/2026-03-04.md", - "calendar/diary/2026-03-03.md", - "calendar/diary/2026-03-02.md", - "000-Inbox/20260309173243.md", - "000-Inbox/20260309150326.md", - "resource/前端/如何成为一个 React 工程师呢?.md", + "resource/常用命令.md", + "work/移动杭研/AI 项目/settings.local.json.md", "personal/服务器-香港.md", + "000-inbox/20260311142461.md", + "000-Inbox/20260311141403.md", + "000-Inbox/20260311145376.md", + "000-inbox/20260311145376.md", + "000-Inbox/20260311142461.md", + "work/移动杭研/项目备忘/K-V 功能.md", + "work/移动杭研/项目备忘/IBS NG 日志模板.md", + "work/移动杭研/项目备忘/项目杂记.md", + "work/移动杭研/项目备忘/数据库信息.md", + "work/移动杭研/项目备忘/获取企业 token 脚本.md", + "work/移动杭研/项目备忘/环境账号.md", + "work/移动杭研/项目备忘/工作账号.md", + "000-inbox/20260311141403.md", + "work/移动杭研/AI 项目/开发备注.md", + "work/移动杭研/AI 项目/IBS 智能体具体落实技术方案.md", + "work/移动杭研/AI 项目/RAG Flow.md", + "work/移动杭研/AI 项目/ibs-ai 项目梳理.md", "resource/工具/rime", "attachment/images-paste/image-20260304153545122.png", "work/移动杭研/开发记录/7.19.0", diff --git a/attachment/images-paste/image-20260304153545122.png b/attachment/images-paste/image-20260304153545122.png deleted file mode 100644 index c9f53b7..0000000 Binary files a/attachment/images-paste/image-20260304153545122.png and /dev/null differ diff --git a/calendar/diary/2026-03-10.md b/calendar/diary/2026-03-10.md index 8b80bf2..482af34 100644 --- a/calendar/diary/2026-03-10.md +++ b/calendar/diary/2026-03-10.md @@ -1,9 +1,30 @@ # 任务 - [x] 开发:参加 IBS 项目晨会,同步昨日问题跟进事项。(李春良 0.5) -- [ ] 开发:梳理 IBS V7.19.0 需求。(新业务平面引入与系统集成实施 李春良 4) -- [ ] 项目:IBS 智能体具体落实技术方案调研。(李春良 3) +- [x] 开发:开发 IBS V7.19.0 需求。(新业务平面引入与系统集成实施 20% 李春良 2) +- [x] 项目:IBS 智能体具体落实技术方案调研,文档编写。(李春良 5) +- [x] 项目:试商用客户峰值带宽(企业)导出匹配 ID。(李春良 0.5) # 日志 +帮我把数据梳理为一个markdown表格,不可以动数据。就是做到 markdown表格。每个属性都要。直接输出表格。 + +你好,想请教一个使用场景。 + +因为我们的 MCP 服务会做一些实际的业务 HTTP 请求,所以我们期望把最外层的用户 token,或者是 MCP 的自定义 token 透传给这个 MCP server。请问这个有什么比较好的实现方式吗? + +另外,我发现目前系统自带的 MCP Config 是一个静态配置,有什么比较好的方案可以实现动态检索工具呢? + +万分感谢! + # 总结 + +AI 开发,今天测试了 MCP 的调用。 + +今天和龙哥聊天,发现自己是一种和善的人格,比如龙哥说,京东、美团导致大部分普通人没有工作。 + +我发先我的思维一致是相反的,我认为大厂在某一定程度上是给社会带来了好处的,加快了社会的发展。、 + +但是想想确实,自己无论如何的成长学习,感觉和他们的差距越来越大,层级和周边人的影响是再试太大了。 + +自从换了输入法,自己的打字的速度实在是太慢了。总感觉右手不是很舒服。 diff --git a/calendar/diary/2026-03-11.md b/calendar/diary/2026-03-11.md new file mode 100644 index 0000000..3a8f3b6 --- /dev/null +++ b/calendar/diary/2026-03-11.md @@ -0,0 +1,38 @@ +# 任务 + +- [x] 开发:参加 IBS 项目晨会,同步昨日问题跟进事项。(李春良 0.5) +- [x] 开发:梳理 IBS V7.19.0 需求。(新业务平面引入与系统集成实施 30% 李春良 2) +- [x] 项目:IBS 智能体具体落实技术方案调研,打通流程。(李春良 5) + +# 日志 + +当前项目是我们的 MCP 注册中心,相当于我们提供了一个统一的 MCP 服务。我们为用户和管理员提供了一个 API 注册接口,当管理员把接口规范传给我们后,我们就可以直接为 AI 提供标准化的 MCP 接口。 + +现在遇到的一个问题是,我们想把这个注册中心给不同的平台用户使用(比如 IBS 用户、CDN 项目组等)。由于有多个项目组,且每个项目组都有自己的工具,如何有效区分这些工具成了关键。 + +请帮我调研一下: + +1. MCP 协议层面是否支持根据不同的用户 Key 返回不同的工具? +2. 针对这种需求,目前市面上是否有比较成熟的实现方案(最好是符合我们项目的技术栈)? + +总的来说,我想把它接入到一个智能体中,让不同的用户平台根据自己的 Key 获取对应的工具,这样也能减轻上下文的压力。请帮我调研一下,然后我们再讨论出一个成熟的技术方案。 + +现在进一步解决我的问题,MCP 的鉴权已经通了,如上边说的当前项目是我们的 MCP 注册中心,相当于我们提供了一个统一的 MCP 服务。我们为用户和管理员提供了一个 API 注册接口,当管理员把接口规范传给我们后,我们就可以直接为 AI 提供标准化的 MCP 接口。 + +此时有个问题了。如果各个平台有自己的鉴权的话,如何能把 token 透传下去呢?因为这个 token 可能是各个项目自己用来横向鉴权的,比如控制谁能查哪些域名等等场景。是不是可以给 mcp 增加额外的 header 然后增加到 mcp 发起调用的 header 中。帮我调研一个可行的,标准的方案。 + +# 总结 + +今天突破了 ibs-ai-mcp 项目的进展,目前实现了 token 的透传。算是实现了整个流程必要的一环。 + +下午在公司内展示了 cosmic 拆分工具的使用,再次回头看这个工具的整体设计,感觉自己有进步了,在最近学习了智能体的开发。 + +我个人认为智能体开发,前端技能目前来说是必要的。 + +晚上听了卡兹克的直播,感觉自己还是没有在小的前沿,自己过于关注比如账号注册的用户名等等这些无用的东西。感觉这些人真的比想想中年轻,对 AI 的拥抱程度。在看看周边的人,感觉对 AI 的拥抱程度真的好低呀。简直不是在一个层级。目前还在 AI 对话的形态。 + +在当下这个热潮中,周末还是有必要玩儿一下龙虾。 + +田宝和 AI 聊了好久。感觉可以把 AI 融入到我的生活中。 + +我们不应该评判是否是 AI 产出的,要看最终的内容是否是我们想要的。 diff --git a/calendar/diary/2026-03-12.md b/calendar/diary/2026-03-12.md new file mode 100644 index 0000000..ecc10c7 --- /dev/null +++ b/calendar/diary/2026-03-12.md @@ -0,0 +1,8 @@ +# 任务 + +- [ ] 开发:参加 IBS 项目晨会,同步昨日问题跟进事项。(李春良 0.5) +- [ ] 开发:梳理 IBS V7.19.0 需求。(新业务平面引入与系统集成实施 30% 李春良 2) + +# 日志 + +# 总结 diff --git a/resource/前端/如何成为一个 React 工程师呢?.md b/resource/前端/如何成为一个 React 工程师呢?.md index dfb693b..21a632d 100644 --- a/resource/前端/如何成为一个 React 工程师呢?.md +++ b/resource/前端/如何成为一个 React 工程师呢?.md @@ -144,7 +144,7 @@ export default FunctionalCounter # 第二章 组件化开发核心 -Props 通信 +Props 通信(只读的,子组件不可以进行修改,单向数据流。) ```tsx type Props = { @@ -163,12 +163,59 @@ export default PrintNmae ``` -传参 +普通传参 ```tsx ``` +children 传参,这里 type + +```tsx +import React from 'react' + +type CardProps = React.PropsWithChildren<{}> + +const Card = ({ children }: CardProps) => { + return ( +
+ {children} +
+ ) +} + +export default Card +``` + +关于 `{ children }: CardProps` 是组件接收一个 props 然后从里边结构出来 children + +类型声明: + +```tsx +type UserProps = { + name: string + age: number + isVerified: boolean + hobbies?: string[] +} + +export const User = (user: UserProps) => { + const { name, age, isVerified, hobbies } = user + + return ( +
+

{name}

+

Age: {age}

+

校验: {isVerified ? '已验证' : '未验证'}

+ {hobbies && hobbies.length > 0 &&

爱好: {hobbies.join(', ')}

} +
+ ) +} + +``` + # CSS 顶级作用域 diff --git a/work/移动杭研/AI 项目/CLAUDE.md.md b/work/移动杭研/AI 项目/CLAUDE.md.md new file mode 100644 index 0000000..515dfa5 --- /dev/null +++ b/work/移动杭研/AI 项目/CLAUDE.md.md @@ -0,0 +1,31 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +本文件用于指导 Claude Code(claude.ai/code)在此仓库中开展工作。 + +## 技术栈 + +- Java:`21`(``) +- 后端框架:Spring Boot `4.0.3` +- 后端框架:Spring Ai `1.1.2` + +## 开发规范 + +如果涉及改动对外提供的 RESTful API 需对 MCP 动态工具管理 API 文档进行及时更新。 + +开发 MCP 相关功能需要遵守 MCP 协议说明。 + +## 日志和注释 + +- 日志和注释使用中文 +- 关键位置须有日志,日志级别仅需要 `info` 和 `error` 两个级别 +- public 方法必须提供注释说明,关键位置也可以适量增加注释说明 + +## 测试规范(强约束) + +- 新增功能、修复问题、修改业务行为:必须新增/更新对应的测试用例(优先单元测试),覆盖核心规则与边界条件 +- 修复 Bug:必须提供回归测试(修复前失败、修复后通过) +- 纯代码格式/注释调整:可以不新增测试,但必须确保现有测试全部通过 +- 必要时才写集成测试(如持久化/序列化/校验):控制数量,避免把所有测试都写成 `@SpringBootTest` +- 提交前必须在仓库根目录运行 `mvn test` 并确保全部通过;测试未通过禁止提交 diff --git a/work/移动杭研/AI 项目/IBS 智能体具体落实技术方案.md b/work/移动杭研/AI 项目/IBS 智能体具体落实技术方案.md index 83ce0dd..c8f7a7f 100644 --- a/work/移动杭研/AI 项目/IBS 智能体具体落实技术方案.md +++ b/work/移动杭研/AI 项目/IBS 智能体具体落实技术方案.md @@ -89,8 +89,6 @@ dify API 的研究。 DeepSeek-R1-Distill-Qwen-32B 工具调用。 -![](../../../attachment/images-paste/image-20260304153545122.png) - 发指令 --》ibs-ai --> RAGflow --> 智能决策 a 工具 b 知识库 需要 MCP server Token 和 用户 Token。 diff --git a/work/移动杭研/AI 项目/RAG Flow 部署.md b/work/移动杭研/AI 项目/RAG Flow 部署.md new file mode 100644 index 0000000..f580e80 --- /dev/null +++ b/work/移动杭研/AI 项目/RAG Flow 部署.md @@ -0,0 +1,324 @@ +# 一、RAGFlow 部署前提 + +最低硬件要求: + +- CPU ≥ 4 核 +- 内存 ≥ 16 GB +- 磁盘 ≥ 50 GB +- Docker ≥ 24 +- Docker Compose ≥ 2.26 ([ragflow.com.cn][1]) + +RAGFlow 默认依赖这些组件: + +- MySQL +- Redis +- MinIO(对象存储) +- Elasticsearch / Infinity(检索) +- API Server + +这些都已经写在 `docker-compose` 里。 ([ragflow.com.cn][2]) + +--- + +# 二、系统参数调整(必须) + +RAGFlow 用 Elasticsearch,需要调内核参数: + +```bash +sysctl vm.max_map_count +``` + +如果小于 **262144**: + +```bash +sudo sysctl -w vm.max_map_count=262144 +``` + +永久生效: + +```bash +echo "vm.max_map_count=262144" >> /etc/sysctl.conf +sysctl -p +``` + +否则 ES 会启动失败。 ([ragflow.com.cn][1]) + +--- + +# 三、下载 RAGFlow + +```bash +git clone https://github.com/infiniflow/ragflow.git +cd ragflow +``` + +进入 docker 目录: + +```bash +cd docker +``` + +目录结构大概: + +``` +ragflow/ + ├ docker/ + │ ├ docker-compose.yml + │ ├ docker-compose-base.yml + │ ├ .env + │ └ service_conf.yaml.template +``` + +--- + +# 四、配置环境变量 + +编辑 `.env` + +```bash +nano .env +``` + +主要配置: + +```env +# elasticsearch +STACK_VERSION=8.11.3 +ELASTIC_PASSWORD=ragflow + +# kibana +KIBANA_USER=rag_flow +KIBANA_PASSWORD=infini_rag_flow + +# ports +ES_PORT=1200 +KIBANA_PORT=6601 +``` + +如果需要修改 Web 端口: + +编辑 `docker-compose.yml` + +```yaml +ports: + - "8080:80" +``` + +访问地址就变成: + +``` +http://服务器IP:8080 +``` + +--- + +# 五、启动 RAGFlow + +```bash +docker compose -f docker-compose.yml up -d +``` + +查看容器: + +```bash +docker ps +``` + +正常会有这些容器: + +``` +ragflow-server +ragflow-worker +mysql +redis +minio +elasticsearch +kibana +``` + +--- + +# 六、访问 RAGFlow + +浏览器访问: + +``` +http://服务器IP +``` + +首次使用需要注册账号。 + +然后就可以: + +1️⃣ 创建 Dataset(知识库) + +2️⃣ 上传 PDF / Markdown / 文档 + +3️⃣ 自动解析 + +4️⃣ 创建 AI Chat + +RAG 就跑起来了。 + +--- + +# 七、连接大模型 + +RAGFlow **本身不带 LLM**,需要接模型。 + +常见配置: + +| 类型 | 推荐 | +| ----- | -------------- | +| 本地模型 | Ollama | +| GPU推理 | vLLM | +| API | OpenAI / Azure | +| 国产 | DeepSeek | + +例如接 **Ollama** + +先装 Ollama: + +```bash +curl -fsSL https://ollama.com/install.sh | sh +``` + +拉模型: + +```bash +ollama pull llama3 +``` + +然后在 RAGFlow UI: + +``` +Settings → Model Providers +``` + +添加: + +``` +Provider: Ollama +URL: http://host.docker.internal:11434 +``` + +--- + +# 八、常用运维命令 + +查看日志 + +```bash +docker logs ragflow-server -f +``` + +停止 + +```bash +docker compose down +``` + +升级 + +```bash +git pull +docker compose pull +docker compose up -d +``` + +--- + +# 九、生产环境建议 + +推荐配置: + +``` +8 CPU +32GB RAM +100GB SSD +``` + +并且: + +- Elasticsearch 单独部署 +- MinIO 使用对象存储 +- GPU + vLLM + +RAGFlow 在企业环境一般是: + +``` +Nginx + │ +RAGFlow API + │ +Elasticsearch +Redis +MySQL +MinIO +``` + +--- + +# 十、很多人部署失败的 3 个原因 + +90% 卡在这里: + +### 1 Docker 版本太低 + +必须: + +``` +Docker ≥ 24 +Compose ≥ 2.26 +``` + +--- + +### 2 内存不足 + +RAGFlow 启动 ES + Python worker + +最低: + +``` +16GB +``` + +--- + +### 3 vm.max_map_count 没改 + +ES 直接 crash。 + +--- + +# 十一、如果你是做 AI 产品(强烈建议) + +我建议你这样部署 RAGFlow: + +``` +RAGFlow + │ +vLLM (推理) + │ +Embedding Service + │ +对象存储 +``` + +效果比默认好很多。 + +--- + +💡 如果你愿意,我可以再给你一份 **“RAGFlow 企业级部署架构”**(包括): + +- GPU 推理架构 +- embedding 服务 +- chunk pipeline +- RAGFlow + MCP +- 和你现在的 **智能体架构怎么融合** + +我可以直接画一张 **完整 RAG 系统架构图**。 + +[1]: https://ragflow.com.cn/docs?utm_source=chatgpt.com "快速入门 | RAGFlow 引擎" +[2]: https://ragflow.com.cn/docs/dev/configurations?utm_source=chatgpt.com "配置 | RAGFlow 引擎" diff --git a/work/移动杭研/AI 项目/RAG Flow.md b/work/移动杭研/AI 项目/RAG Flow.md new file mode 100644 index 0000000..8b817a1 --- /dev/null +++ b/work/移动杭研/AI 项目/RAG Flow.md @@ -0,0 +1,29 @@ +RAGFlow的核心映像在早期版本(如v0.21.1)约为9GB,这主要是因为包含了内置的embedding模型。 + +## 镜像大小变化 + +从v0.22.0开始,RAGFlow 改为只发布 slim 版本,不再包含内置的 embedding 模型,镜像大小减少到约 2 GB。 + +当前版本(v0.24.0)的镜像信息: + +- 下载大小:约2GB +- 运行时展开大小:约7GB + +## 9GB大小的原因 + +早期9GB的镜像包含: + +- 内置的BCE embedding模型 +- 内置的BGE embedding模型 +- 完整的RAGFlow应用程序及其所有依赖 + +现在 slim 版本需要用户自行配置外部的大模型和 embedding 服务,因此镜像体积大幅减小。 + +--- + +| 服务 | 用途 | Docker镜像 | +| ----------------- | --------- | -------------------------- | +| **Elasticsearch** | 向量数据库(默认) | `elasticsearch:8.11.3` | +| **Redis** | 缓存和消息队列 | `valkey:6.0.2` | +| **MySQL** | 元数据存储 | `mysql:8.0.39` | +| **MinIO** | 对象存储 | `minio:RELEASE.2025-06-13` | diff --git a/work/移动杭研/AI 项目/settings.local.json.md b/work/移动杭研/AI 项目/settings.local.json.md new file mode 100644 index 0000000..022429d --- /dev/null +++ b/work/移动杭研/AI 项目/settings.local.json.md @@ -0,0 +1,30 @@ +``` +{ + "permissions": { + "allow": [ + "Bash(./mvnw test:*)", + "Bash(./mvnw dependency:get:*)", + "Bash(curl:*)", + "mcp__deepwiki__ask_question", + "Bash(mvn test:*)", + "mcp__deepwiki__read_wiki_structure", + "mcp__deepwiki__read_wiki_contents", + "Bash(python:*)", + "Bash(mvn compile:*)", + "Bash(mvn dependency:tree:*)", + "Read(//c/Users/docke/.m2/repository/io/modelcontextprotocol/**)", + "Read(//c/Users/docke/.m2/**)", + "Bash(jar tf:*)", + "Bash(javap:*)", + "Bash(mvn clean:*)", + "Bash(mvn spring-boot:run:*)", + "Bash(jar:*)", + "WebFetch(domain:spec.modelcontextprotocol.io)", + "WebFetch(domain:spring.io)", + "WebFetch(domain:developers.redhat.com)", + "Bash(find \"D:\\\\MyCode\\\\Work\\\\yd-hy\\\\ibs-mcp\" -type f \\\\\\( -name \"*.sql\" -o -name \"schema*\" -o -name \"*schema*\" \\\\\\) 2>/dev/null | head -20)" + ] + } +} + +``` diff --git a/work/移动杭研/AI 项目/开发备注.md b/work/移动杭研/AI 项目/开发备注.md new file mode 100644 index 0000000..95452e9 --- /dev/null +++ b/work/移动杭研/AI 项目/开发备注.md @@ -0,0 +1,14 @@ +``` +{ + "success": true, + "message": "API Key 创建成功", + "data": { + "id": 1, + "apiKey": "c2f2956653614bc4ab05711c03f0ff36", + "tenantCode": "tenant001", + "description": "测试 API Key", + "enabled": true, + "createdAt": "2026-03-11T10:03:41.9902653" + } +} +```