自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【RAG】向量?知识库的底层原理:向量数据库の技术鉴赏 | HNSW(导航小世界)、LSH、K-means

哈希碰撞:由于输入是固定长度的数据,而输出是固定长度的哈希值,根据鸽巢原理,必然会出现数据不同而哈希值相同的情况,这叫碰撞。- 正常而言,哈希算法要尽可能减少碰撞的发生,而(对向量)位置敏感哈希函数-LSH则相反,尽可能让位置相近的数据发生碰撞,然后根据哈希碰撞来进行分组,构建方法:随机划出直线分割平面,两面的点分别增加意味0或1来表示

2025-05-03 18:37:05 905 1

原创 你知不知道DeepSeek对话中像打字机一样的流式输出效果是怎么实现的?AI聊天项目实战经验:流式输出的前后端完整实现!(RAG,Langchain,Python)

来看这条简单清晰的逻辑链:LLMs_chain.astream(langchain中chain的API:流式输出LLM的一个个回复块「原料chat_sew.stream_chat (生成器,转换chunk为初步的SSE格式字典「初步加工产品)stream_response_generator(生成器,转换SSE协议字符串丨打包成快递)StreamingResponse(FastAPI用于流式传输响应体的响应类,以SSE协议发送数据块到客户端|快递员)-> 「前端

2025-04-22 14:56:54 1614 3

原创 【Python】魔术方法是真的魔法!(第四期)

方法更多地定义在描述符类(descriptor class)中,它作为一个 hook,在构建类实例时被调用,主要用于赋值和初始化类的name属性。"""一个数据描述符,在所有者类创建时设置其名称。"""self.name = None # 将由 __set_name__ 设置print(f"RevealedAccess.__set_name__ 被调用: owner=class RevealedAccess : """一个数据描述符,在所有者类创建时设置其名称。

2025-05-22 16:54:37 1132

原创 【Python】魔术方法是真的魔法!(第三期)

魔术方法是在尝试删除对象属性时被调用。它不会在对象正常生命周期结束时被调用,而是在使用。关键字删除属性时执行。该方法没有返回值,但在其中可以进行一些操作,如打印提示信息。),则当读取不存在属性时,程序将不会出现错误,而是返回预设的值。对存储在类级别的字典中,使得所有该类的对象共享这些自定义属性。魔术方法是在尝试访问对象不存在的属性时被调用的。来实现默认行为,但也支持自定义实现,例如将。,当设置对象属性时会被调用。函数时,如果要恢复其默认行为,应使用。函数,并在其中返回特定值(如。魔术方法有两个参数,

2025-05-18 10:11:14 1002

原创 【Python】魔法方法是真的魔法! (第二期)

hash自定义__eq__方法后,默认__hash__会被删除需要同时自定义__hash__方法必须保证相等对象具有相同hash值# 只定义了 __eq__,没有定义 __hash__

2025-05-17 20:11:13 1076

原创 【Python】EAFP?请求原谅比请求允许容易?

与其小心翼翼地预测所有可能的失败,不如相信代码大多数时候能正常工作,当确实出错时,优雅地处理异常。这正是 EAFP 哲学的精髓。

2025-05-16 13:41:49 1080

原创 【Python】【面试凉经】Fastapi为什么Fast

FastAPI 它优越于其他一些主流web框架像 django或 flask 的这个点在哪里? 我:

2025-05-15 20:57:30 1265

原创 【Python】【面试凉经】上下文管理器这一块,你讲一下你的见解

self.start = time.time() # 记录开始时间class Timer : def __enter__(self) : self . start = time . time() # 记录开始时间 return self def __exit__(self , * args) : print(f"Elapsed: {time . time() - self . start } sec") with Timer() : time . sleep(1.5) # 会输出经过的时间。

2025-05-15 17:11:07 533

原创 【Python】小子!是魔术方法!

一面:说一说你对魔术方法的理解。我:魔术方法是真的魔法!本系列将揭晓魔术方法与Python的鸭子类型哲学的巧妙绝伦

2025-05-13 09:32:28 1587 1

原创 【Python】魔法方法是真的魔法! (第一期)

__new__和__init__分别用于对象的创建和初始化,__new__控制对象的创建逻辑,而__init__用于初始化对象。__str__和__repr__用于返回对象的字符串表示,前者注重可读性,后者提供更详细的信息。__format__用于自定义对象的格式化输出。__bin__用于返回对象的二进制表示。__del__作为析构函数,用于对象释放时的清理工作,但由于Python的垃圾回收机制,其使用并不直观。这些魔术方法在特定场景下提供了对对象行为的精细控制。

2025-05-13 09:28:37 299

原创 【Python】装饰器在装什么

> 装饰器decorator,可以简单的说 是一个输入参数是函数,返回值也是函数的**一个函数**

2025-05-10 20:58:00 1173

原创 【Python】包了一个闭包,Python解释器偷偷干了什么

当然它比较神奇的地方在于:即使list_appender的调用结束了,甚至对list_appender的引用都没有了,这个闭包变量它依然能活着,因为函数对象`appender`包含了对闭包的引用。

2025-05-09 13:09:45 1039

原创 【RAG】Milvus、Pinecone、PgVector向量数据库索引参数优化

### IVF类索引关键参数(基于聚类算法)1. **nlist** (倒排列表数量): - 决定将向量空间划分为多少个聚类中心 - 值越大搜索越精确但耗时越长 - 推荐值: 通常设置为数据量的4√n到n/1000之间 - 例如: 1百万数据量可设nlist=1000到40002. **nprobe** (搜索时探查的聚类数量): - 决定搜索时检查多少个最近邻的聚类 - 值越大结果越精确但速度越慢 - 推荐值: 通常为nlist的1%~10% - 例如

2025-05-09 09:50:32 1440

原创 【Python】import 的时候,发生了什么…

在Python中,什么是`module`和`package`?如何导入一个包含子包的`package`? `Module` 是Python运行时的概念,它是一个独立的命名空间,包含其他Python对象,通常对应一个`.py`文件。而 `package` 则是一种特殊的`module`,它除了包含自身模块外,还可以包含其他`sub package`和`module`,并且在操作系统层级上,一个`package`对应的是一个文件夹,其中可以有多个文件和子文件夹。可以使用`import package_nam

2025-05-07 10:13:19 425

原创 【面试官:在你的项目中你是怎么实现混合检索的?我:先这样再那样

为什么要引入`BM25`?一开始项目是只用向量检索的,有一次我问了一个问题“重排序是什么?”,八条向量检索都没有捕获到“重排序”片段,因为在原文中,“重排序”也只出现了一次,在一个小点中一笔带过。所以光靠向量检索不能够捕捉到这样微小的字眼。我们可以看到……

2025-05-06 10:21:38 1192

原创 【Python】一直没搞懂生成器是什么。。

上期我们讲解了迭代器这期我们来讲讲它的好兄弟——生成器### 生成器 (Generator)?生成器是一种特殊的 **`迭代器`** (`Iterator`)。**迭代器** 是你可以逐个访问其元素的对象(比如在 `for` 循环中使用)。列表、元组、字典、字符串等都是可

2025-05-04 15:32:23 676

原创 【Python】一直没搞懂迭代器是什么。。

iterable是个容器,可以提供iterator,可以理解为完整的链表或者链表的表头;iterator是一个可以指向下一个对象的对象,可以理解为链表的一个单元;两者结合弥补了python不能用指针的缺陷,非常适合在链表这种数据结构中使用;为什么iterator最好也是iterable,是因为这样可以使得每一个子链都可以被调用。

2025-05-04 11:43:19 882

原创 现在让我们来解读协程 coroutine. co 常是一个表示:“一起“的前缀,如cooperate ,routine 有 惯例,例行程序 的意思。怎么和协程的功能作用结合起来理解呢?

易混淆为并行(Parallel),而!**Coroutine = Co(协作) + Routine(例程)**,这一命名完美体现了其核心设计思想。以下是逐层解析:---#### **1. 词根与字面意义**- **Co-**(前缀): - 源自拉丁语 **"com-"**(共同、一起),如 **cooperate(合作)**、**coexist(共存)**。协程本质是。

2025-05-02 20:34:55 498

原创 Langchain,为何要名为langchain?

`langchain` 是一个大语言模型开发框架。我的理解中,`lang` 是词根"语言",chain是单词"链",`langchain` 便是将语言模型和组件串联成链的框架。而 `langchain` 的图标是一只鸟和一条链,一条链我能理解,为什么会有一只鸟来代表 `lang` 呢?

2025-05-02 12:38:49 872

原创 【氵】async\awiait异步是啥?为啥就能高并发?多进程多线程\事件循环哪个牛?

Q3, Python,特别是fastapi也拥有async\awiait 的异步处理机制,如果Python是单线程语言(我不清楚这点),那么它与nodejs相比,并发能力是不是同一水平? Q4,java是多线程,java是通过建立多线程来提高并发度,所以java的并发能力高于nodejs这类单线程语言,我的理解正确吗? Q5 GO的并发能力似乎很强,它的实现机制是类似java,还是nodejs?

2025-05-01 19:26:17 827

原创 【RAG】Context Precison 提高33.3%!重排序是什么?基于LangChain的重排序实现

**打个比方** 想象你在图书馆找书: 1. **第一步(检索)**:图书管理员快速从书架上抱来20本可能相关的书(基于书名/关键词的粗略匹配)。 2. **第二步(重排序)**:你翻开每本书的目录,仔细对比哪几本**真正解答你的问题**,留下3本最相关的(高精度筛选)。 **重排序就是那个“仔细翻目录”的过程**,确保最终交给大脑(LLM)的书是精华。

2025-05-01 19:09:35 695

原创 面试官:你会怎么做前端web性能优化?我:.%*&.!

>面试话语:例如:页面有一个压缩图片功能,而这个功能的第三方库很大;> 这个功能用户不会立即使用、甚至可能不使用。将该功能异步加载

2025-04-30 19:22:01 1039

原创 CDN是啥?十分钟让Cloudflare免费为你的网站做CDN加速!

朋友你好你是否觉得自己的网站加载有点慢?用户等待时间长,体验不佳?不慌,今天我们就来聊聊网站加速的利器——CDN,并且手把手教你如何利用 Cloudflare 的免费服务,在十分钟内给你的网站加上"加速器"!理解 CDN 是什么,以及它为什么能让网站飞起来。掌握使用 Cloudflare 为你的网站(特别是像我们这个 Vue + Vite + Nginx 项目)配置免费 CDN 的核心步骤。挑选一个 CDN 服务商(我们就选 Cloudflare)。在 CDN 平台配置你的源站信息。

2025-04-29 09:22:43 984

原创 【RAG知识库问答】报错排查:新增模型混用提示【用户反馈与优化-2025.04.28】

最近写了一个知识库问答系统的项目,部署上线后把链接写在了简历里,然后丢大脸了:各种报错。~~明明我自己用的时候还好好的~~ 连忙加班加点地改bugの悲惨故事。 所以真心感慨大家在项目上线前,一定要找你的小白朋友试试项目,便能很快发现你的项目缺什么,会出什么差错,破除【知识的诅咒】错误和失败不是终点,远眺,它们是成功的转折点。祝愿大家都能收到心仪的 offer.问题不~~是一般的~~大😎,正文开始⬇️

2025-04-28 22:40:17 2243 1

原创 【MCP】哎只能在cursor中用MCP吗?NONONO!三分钟教你自己造一个MCP客户端!

至此我们就完成了一个自己的 MCP 客户端了### 好了,现在你可以在简历上写上:精通 MCP 了 [doge]

2025-04-26 20:02:40 1248

原创 巨坑!解决 Windows 上 FastAPI/Asyncio 子进程 `NotImplementedError` 问题File “C:\Python310\lib\asyncio\base_even

要解决这个问题,需要借助神秘魔法【ProactorEventLoop】

2025-04-26 18:48:12 967

原创 【Langchain】RAG 优化:提高语义完整性、向量相关性、召回率--从字符分割到语义分块 (SemanticChunker)

这是因为`RecursiveCharacterTextSplitter` 的局限性,它将原本相关的文本切成了两个部分,第一个部分被召回,而第二个部分因为包含的信息更少,其向量相关性也下降了,没有被召回。这就导致了检索质量不理想,因为`RecursiveCharacterTextSplitter`既影响了**语块完整性**,也影响了语块的**向量相关性**。

2025-04-25 17:53:26 1140

原创 关于nginx,负载均衡是什么?它能给我们的业务带来什么?怎么去配置它?

想象一下一个超市只有一个收银台,高峰期肯定会排起长队。负载均衡就像是超市增开了多个收银台,并有一个调度员指挥顾客去当前最空闲或下一个可用的收银台结账。

2025-04-24 21:43:19 1386

原创 Nginx 反向代理,啥是“反向代理“啊,为啥叫“反向“代理?而不叫“正向”代理?

和 Java Bean 的“控制反转 (IoC)”异曲同工?**这是一个有趣的类比!可以说它们在**思想层面**有相似之处,即**责任的转移**或**控制权的转移**,但它们应用的领域和解决的问题是完全不同的。*   **控制反转 (Inversion of Control, IoC):**    *   **领域:** 软件设计、对象之间的依赖关系管理。    *   **核心思想:** 将创建和管理对象(Bean)的**控制权**,从代码本身(比如 `new MyObject()`) **反

2025-04-24 21:32:31 1203

原创 怎么把我的前后端项目通过docker部署到云服务器【手把手教学】

上文我们讲解了docker的概念和基本操作,演示了本地项目部署到本地接下来我们将手把手演示,将你的前后端项目通过docker部署到云服务器。

2025-04-23 09:59:12 779

原创 【docker0基础教学】手把手教你将你的本地项目进行docker部署

在Dockerfile的最后我们会用到CMD来指定**当Docker容器运行起来以后要执行的命令**。大家需要注意这里容器和镜像的区别,并且它和我们之前讲到的RUN不一样:**RUN是创建镜像时候使用的,而CMD是运行容器的时候使用的。**

2025-04-22 17:45:47 799

原创 分享开源项目oneapi的部分API接口文档【oneapi?你的大模型网关】

OneAPI开源项目的地址->最近在学习oneapi,阅读了部分源码,把接口文档分享给大家。

2025-04-15 09:20:57 1137 2

原创 你想不想让你写的博客一键发布多平台?!

*OpenWrite是什么:**OpenWrite是一款自媒体工具,它提供一键发布功能,可以帮你将文章统一发布到各个平台 ,包括 CSDN 、 SegmentFault、简书、今日头条等等。

2025-04-12 15:37:37 1083 1

原创 【RAG】如何让你的RAG-Langchain项目持久化对话历史\保存到数据库中

项目目前使用的 ChatMessageHistory 是一个内存中的历史记录存储方式。MongoDBChatMessageHistory (适用于本项目技术栈中的 MongoDB)

2025-04-09 21:42:40 570

原创 使用OllamaEmbeddings时,报错ollama._types.ResponseError(status code:502)和(status code:500)

第一步:set OLLAMA_HOST=0.0.0.0第二步:ollama serve502问题解决。

2025-03-31 14:48:26 603 1

RAGLangchain项目 BM25与向量语义检索混合策略设计:提升长尾关键词捕获能力及检索精度了文档的核心内容

为什么要引入`BM25`?一开始项目是只用向量检索的,有一次我问了一个问题“重排序是什么?”,八条向量检索都没有捕获到“重排序”片段,因为在原文中,“重排序”也只出现了一次,在一个小点中一笔带过。所以光靠向量检索不能够捕捉到这样微小的字眼…… 内容概要:本文详细介绍了在一个项目中采用BM25关键字检索与向量语义检索相结合的混合检索策略的原因、实现方式及其优势。由于纯向量检索在处理某些特定词汇(如“重排序”)时存在不足,引入BM25能够弥补这一缺陷,增强对稀有关键词的捕捉能力。文中阐述了如何利用Langchain组件BM25Retriever实现BM25检索,并通过EnsembleRetriever将BM25与向量检索结果进行融合,同时探讨了与重排序逻辑的整合方案。对于性能优化方面,提出了使用asyncio.to_thread()解决同步方法带来的阻塞问题,并讨论了使用MongoDB替代ChromaDB存储文档片段的可能性。 适合人群:对搜索引擎优化、信息检索技术感兴趣的开发者,尤其是那些希望提升自己项目检索效率的人群。 使用场景及目标:①希望通过引入BM25改进现有检索系统的精准度;②掌握如何在项目中集成BM25与向量检索,实现两者优势互补;③学习如何优化混合检索系统的性能,确保高效运行。 阅读建议:读者应重点关注BM25和向量检索的工作原理及其结合点,理解为什么这种混合策略能更好地解决问题。同时,对于涉及到的技术细节,如Langchain组件的具体用法、性能优化措施等,建议结合实际案例深入研究,以便更好地应用于自己的项目中。

2025-05-05

【Python编程】深入解析迭代器与生成器的工作原理及应用场景:从基础概念到自定义实现了Python中的迭代

内容概要:本文详细解释了Python中的迭代器和生成器的概念及其工作原理。首先介绍了迭代器的基本概念,包括可迭代对象(iterable)和迭代器(iterator)的区别与联系,以及如何自定义链表类来实现迭代器协议。接着探讨了生成器作为特殊迭代器的特点,强调了`yield`关键字的作用,即它可以定义生成器函数并在函数体内充当暂停点,保存函数状态以便后续继续执行。最后对比了迭代器和生成器在状态保存位置、实现复杂度、内存占用等方面的异同,指出了生成器更适合处理大数据或惰性计算场景的优势。 适合人群:对Python编程有一定了解,尤其是想深入理解迭代器和生成器机制的开发者或学生。 使用场景及目标:①掌握Python中迭代器协议的实现方式,能够自定义迭代器;②理解生成器的工作原理,学会使用`yield`关键字创建生成器函数;③比较迭代器与生成器的差异,选择合适的数据处理工具以优化程序性能。 其他说明:文章通过具体的代码示例帮助读者更好地理解和应用所学知识,同时提供了关于Python函数调用栈帧(frame)的相关背景信息,有助于加深对生成器背后机制的认识。

2025-05-04

【Python编程】深入解析迭代器与可迭代对象:构建自定义链表迭代系统及其实现方法

内容概要:本文详细解释了迭代器(iterator)和可迭代对象(iterable)的概念及其在Python中的实现方式。首先介绍了for循环与迭代器的关系,指出可迭代对象是可以通过for循环逐个访问其元素的对象,如列表、字典等,这些对象内部实现了`__iter__`方法。接着深入探讨了如何自定义链表并为其创建迭代器,包括定义节点类(Node)和迭代器类(NodeIter),其中Node实现了`__iter__`方法返回迭代器实例,NodeIter则实现了`__next__`方法用于逐个返回链表中的节点。最后强调了迭代器最好也实现`__iter__`方法以便成为可迭代对象,从而允许对部分链表进行迭代。 适合人群:具有基础Python编程知识的学习者或开发者,尤其是对数据结构和面向对象编程有一定了解的人群。 使用场景及目标:①理解Python中迭代机制的工作原理;②掌握如何自定义实现迭代器和可迭代对象;③学习如何构建简单的链表结构并对其进行遍历操作。 其他说明:本文通过具体代码示例帮助读者更好地理解和实践迭代器概念,同时为后续学习生成器等相关内容打下基础。此外,作者还分享了一些个人项目经验和博客写作心得,但这些内容与迭代器主题关联不大。

2025-05-04

【向量数据库与近似最近邻算法】向量?知识库的底层原理 多维特征表示及高效搜索方法综述:涵盖K-Means、LSH、HNSW等技术原理与应用场景

内容概要:本文详细介绍了近似最近邻算法(ANN)及其相关概念和技术,包括向量化表示的核心概念和向量数据库的特点。向量化表示通过多维特征描述对象,在特征空间中相似对象距离更近,支持向量运算。向量数据库以向量集合形式存储数据,采用相似度搜索,返回近似最近邻结果。最近邻问题的解决方案有暴力搜索、基于聚类的ANN(如K-Means)、基于哈希的ANN(如LSH)、基于图结构的ANN(如NSW和HNSW)以及积量化(PQ)。每种方法在预处理成本、查询速度、内存消耗和准确性方面各有优劣,适用于不同场景。典型应用场景包括实时推荐、内存敏感型应用、中等规模数据处理、高维数据快速过滤和小数据集验证。 适合人群:对机器学习、数据挖掘和推荐系统有一定了解的技术人员,尤其是从事相关领域开发和研究的工程师和研究人员。 使用场景及目标:①了解向量化表示的核心概念及其应用场景;②掌握不同ANN算法的工作原理及其优缺点;③根据实际需求选择合适的ANN算法,如实时推荐选择HNSW,内存敏感型应用选择PQ等。 其他说明:本文内容来源于B站UP主的讲解,通过生动形象的例子和动画,使复杂概念易于理解。此外,还提供了多种ANN算法的具体实现细节和技术对比,有助于读者深入理解和实践。

2025-05-03

【网站加速技术】基于Cloudflare的CDN加速系统配置与优化:提升网站性能和用户体验的方法步骤

内容概要:本文详细介绍了CDN(内容分发网络)的概念及其工作原理,通过比喻解释了CDN如何通过分布式的边缘节点加速网站访问,降低延迟并提高可用性。文章重点讲解了如何使用Cloudflare的免费服务为网站配置CDN加速,包括注册Cloudflare账号、配置源站信息、修改DNS解析、调整前端项目配置以及部署更新等具体步骤。此外,还提供了配置Nginx作为源站服务器的相关指导,并介绍了如何通过GTmetrix等工具验证CDN的效果,解决常见问题如缓存未命中等。最后,文章提及了Cloudflare的一些高级功能,如页面规则、缓存设置、安全防护等。 适合人群:适合希望提升网站性能的网站管理员、开发者,尤其是那些对CDN概念和技术有一定兴趣但缺乏实践经验的技术人员。 使用场景及目标:①帮助用户理解CDN的工作机制及其带来的优势;②指导用户快速搭建并配置Cloudflare的免费CDN服务;③教会用户如何测试和优化CDN配置效果。 阅读建议:由于涉及较多实际操作步骤和技术细节,建议读者按照文中给出的具体步骤逐一尝试,同时结合提供的工具进行效果验证。对于遇到的问题,可以通过文中提供的解决方案进行排查。

2025-04-29

怎么把我的前后端项目通过docker部署到云服务器【手把手教学】大学生原创github.com/hbchen7

内容概要:本文档是一份面向初学者的手把手教学,旨在指导读者如何将本地的前后端项目通过Docker部署到云服务器。文档首先简要回顾了Docker的基本概念与操作,重点在于如何将本地项目部署到本地Docker Desktop。对于后端部署,提供了两种方法:一是在服务器上直接构建镜像,这种方法适合快速上手和测试,但对服务器有一定要求;二是上传镜像到仓库再拉取部署(这部分内容尚未完成)。在具体操作上,详细介绍了如何准备项目文件、安装必要的软件(如宝塔面板)、配置Docker环境、检查Docker Compose版本以及构建并运行容器。前端部分则提及了传统部署方式,推荐了一篇关于使用Nginx部署Vue3项目的文章作为参考,而基于Docker的前端部署方法仍在规划中。 适合人群:适合对Docker有一定兴趣但基础薄弱的开发者,尤其是那些希望将自己的前后端项目部署到云服务器的个人开发者或小型团队。 使用场景及目标:①帮助读者掌握从本地到云端的Docker部署流程;②为读者提供实际操作指南,降低学习成本;③通过实例操作加深对Docker的理解,提升实战能力。 其他说明:文档由一位计算机专业的大三学生撰写,内容偏向入门级,后续计划补充更多高级主题如LangChain教程等内容。文中提到的部分高级功能如前端Docker部署等还在筹备中。

2025-04-23

手工原创0基础手把手教你将你的本地项目进行docker部署 基于Docker的本地项目部署指南:Python应用容器化与多容器编排实践

内容概要:本文详细介绍了如何将本地项目进行Docker部署,涵盖从创建Dockerfile到运行容器的全过程。首先,确保已安装Windows版Docker Desktop。接着,在项目根目录创建Dockerfile,使用FROM指定基础镜像(如Python:3.10-slim-bullseye),通过WORKDIR设置工作目录,COPY命令复制依赖文件(如requirements.txt),RUN命令安装依赖项,并使用EXPOSE暴露端口,最后用CMD定义启动命令。通过docker build命令构建镜像,docker run命令运行容器。此外,文章还介绍了多阶段构建、数据卷的使用以及Docker Compose的配置,用于管理多容器应用,包括定义服务、网络和卷,确保容器间的有效协作。 适合人群:具备一定编程基础,特别是对Python或其他编程语言有一定了解的研发人员,尤其是工作1-3年的开发者。 使用场景及目标:①掌握Dockerfile的编写,包括指定基础镜像、设置工作目录、复制文件、安装依赖和暴露端口等操作;②学会使用docker build和docker run命令创建和运行容器;③理解多阶段构建的优势,减少镜像体积;④掌握数据卷的使用,确保数据持久化;⑤利用Docker Compose管理多容器应用,实现服务间的有效协作。 阅读建议:此资源不仅介绍Docker的基本操作,还深入探讨了多容器管理和优化镜像构建的方法。读者应在实践中逐步理解和应用这些概念,建议边学习边动手实验,结合实际项目进行练习。

2025-04-22

langchain项目如何实现流式输出经验分享前端流式输出(AI,RAG,fastapi,Vue,python,SSE)-watermark.pdf

`LLMs_chain.astream`(langchain中chain的**API**:流式输出LLM的一个个回复块|**原料**) ---> `chat_sev.stream_chat`(**生成器**,转换chunk为初步的SSE格式字典|**初步加工产品**) ---> `stream_response_generator`(**生成器**,转换SSE协议字符串|**打包成快递**) ---> `StreamingResponse`(FastAPI用于流式传输响应体的**响应类**,以SSE协议发送数据块到客户端|**快递员**) ---> |**前端**-`fetchEventSource`(第三方库方法,接受SSE数据,累加到ref|**收货、组装**) ---> **Vue响应式更新** —-> 用户眼睛:**哇sai!流式输出~** 内容概要:本文详细介绍了一个基于Langchain项目的流式输出实现经验分享,涵盖前后端技术栈和具体实现步骤。后端使用Python的FastAPI框架结合Langchain库,通过`Runnable.astream()`方法实现LLM的流式输出。每个输出块经初步加工转换为SSE格式字典,再打包成SSE协议字符串,最终通过`StreamingResponse`类以SSE协议发送到客户端。前端采用Vue框架,使用`@microsoft/fetch-event-source`库处理SSE连接,接收SSE数据并实时更新页面。文章还解释了生成器函数、yield关键字等概念,并展示了如何通过AbortController实现用户手动终止流式响应的功能。

2025-04-22

9787302583127《Python网络程序设计(微课版)》-课后习题解答

9787302583127《Python网络程序设计(微课版)》-课后习题解答。适用人群:计算机专业、软件工程专业、网络工程专业的大学生。

2025-04-19

【OneAPI开源项目】API接口文档:用户管理、令牌管理和模型渠道管理功能详解

内容概要:本文档详细介绍了OneAPI开源项目的API接口,涵盖用户管理、令牌管理和模型与渠道管理三大模块。用户管理模块包括用户注册、登录及获取当前用户信息等功能,其中注册和登录接口受限于管理员的后台设置及中间件限制。令牌管理模块允许用户查询自身创建的所有令牌,获取令牌列表并查看令牌详情。模型与渠道管理模块提供了获取模型列表、渠道列表的功能,并支持管理员进行渠道的添加、删除、更新及测试操作。所有接口均详细列出了请求方法、路径、认证方式、请求体及响应示例,确保开发者能快速理解和使用OneAPI。 适合人群:熟悉RESTful API开发的软件工程师,特别是需要集成或使用OneAPI的开发者。 使用场景及目标:①帮助开发者理解OneAPI的核心功能和接口设计;②为用户提供详细的接口调用指南,确保正确配置和使用API;③协助管理员进行渠道配置和管理,保障系统的稳定运行。 阅读建议:建议读者首先熟悉OneAPI的整体架构和基本概念,然后根据具体需求查阅相关接口的详细说明。对于管理员来说,重点阅读渠道管理部分,以确保正确配置和维护系统。对于普通开发者,重点掌握用户管理和令牌管理部分,以便顺利集成OneAPI。

2025-04-19

你想不想让你写的博客一键发布多平台?!【粘贴图片自动上传图床~一次撰写多端发布】【经验分享-完全免费】基于OpenWrite与Picgo的多平台博客发布系统:实现Markdown文章与图片自动化管理

内容概要:本文针对计算机小白撰写博客过程中遇到的图片上传和多平台发布难题,提供了一套完整的解决方案。首先介绍了OpenWrite工具,它可以一键将Markdown格式的文章发布到多个平台如CSDN、SegmentFault、简书等。其次详细讲解了如何利用Picgo、Gitee仓库和Obsidian插件构建自动图床系统,解决了不同平台间图片上传繁琐的问题。通过这种方式,用户可以在编写Markdown文档时,粘贴图片自动上传至图床,并生成对应的链接,从而实现一次撰写、多端发布的高效工作流。 适合人群:刚开始写博客的计算机初学者或有一定经验但仍受困于多平台发布流程的博主。 使用场景及目标:①希望减少重复劳动,提高博客发布的效率;②解决跨平台发布时图片管理不便的问题;③学习并掌握使用OpenWrite、Picgo、Gitee和Obsidian等工具进行自动化操作的方法。 其他说明:读者可以根据自身情况选择是否使用文中提到的具体工具和服务,并且需要注意部分步骤可能涉及到网络环境限制(如插件下载),需提前做好准备。

2025-04-19

空空如也

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

TA关注的人

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