前两篇我们已经完成了两件事:

  • 第一篇:建立 MCP 与 CLI 的认知和选型框架
  • 第二篇:用 Python 封装了一个可运行 MCP Tool,并掌握 mcp dev 调试

这一篇进入真正的落地核心:配置
很多项目不是死在“写不出工具”,而是死在“配不对、查不到、管不住”。

这篇我会把 MCP 服务配置拆到参数级别,尽量做到“可抄、可跑、可排错”。


阅读全文 »

上一篇我们先统一了认知:MCP 不是 CLI 的替代,而是让模型稳定调用工具的标准协议层。
这一篇开始进入实战,目标很明确:

  1. 用 Python 从 0 封装一个可调用的 MCP Tool
  2. 讲清楚需要安装哪些库,以及每个库的作用
  3. 演示本地调试流程(含 mcp dev
  4. 给出一份能直接排错的 Debug 清单

阅读全文 »

最近在整理 Agent 工具链时,我发现很多同学会把 MCP 和 CLI 混在一起讨论:
有的人觉得 MCP 是 CLI 的“替代品”,也有人觉得 MCP 是“换个名词的函数调用”。

其实这两者并不是二选一关系,而是面向不同调用方的两种接口形态。
这篇先把“认知层”讲透,重点回答三个问题:

  1. MCP 到底是什么,解决了什么问题?
  2. MCP 和 CLI 的区别与联系是什么?
  3. 在真实项目里,该怎么做选型?

阅读全文 »

本文是 RAG 实战系列第五篇,也是最后一篇。前四篇覆盖了 RAG 的核心链路:文档解析 → 向量化 → 检索 → 问答生成。但一个”能跑通”的系统和一个”能跑好”的系统之间,差距往往在工程细节上。

这一篇讲的是:如何让 RAG 系统处理成百上千个问题时依然稳定、高效、可维护。

本系列基于开源项目 IlyaRice/RAG-Challenge-2 的工程实践总结。


阅读全文 »

本文是 RAG 实战系列第四篇,承接第三篇的检索与重排。上一篇结束时,我们已经拿到了最相关的若干 Chunk(或整页),拼成了一段 RAG Context。这一篇讲的是:把 Context 和问题交给 LLM,如何设计 Prompt、如何处理不同类型的问题、如何拿到结构化答案、以及怎么让 LLM 不瞎编。

本系列基于开源项目 IlyaRice/RAG-Challenge-2 的工程实践总结。


阅读全文 »

本文是 RAG 实战系列第三篇,承接第二篇的向量化与索引构建。上一篇结束时,我们已经为每个文档构建好了两套索引:FAISS 向量语义索引和 BM25 关键词稀疏索引。这一篇讲的是:用户提问时,如何从这些索引里找到最相关的 Chunk,并进一步提升检索质量

本系列基于开源项目 IlyaRice/RAG-Challenge-2 的工程实践总结。


阅读全文 »

本文是 RAG 实战系列第二篇,承接第一篇的文档解析与切块。上一篇结束时,我们已经得到了一批带元信息的 Chunk。这一篇讲的是:如何把这批 Chunk 变成可以被快速检索的索引

本系列基于开源项目 IlyaRice/RAG-Challenge-2 的工程实践总结。


阅读全文 »

本文是 RAG 实战系列第一篇,介绍 RAG 流水线的第一个环节:如何把原始 PDF 文档解析成可检索的文本片段。很多人忽视这一步,但实际上文档解析和切块的质量直接决定了整个 RAG 系统的上限。

本系列基于开源项目 IlyaRice/RAG-Challenge-2 的工程实践总结。


阅读全文 »

这篇文章是我学习 RAG 过程中整理的入门笔记,主要参考了开源项目 IlyaRice/RAG-Challenge-2 ——一个赢得了 Enterprise RAG Challenge 竞赛全部奖项的企业级年报问答系统,以及作者 Ilya Rice 的技术复盘博客 How I Won the Enterprise RAG Challenge

本文以这个项目为主线,帮助完全没接触过 RAG 的同学快速建立概念框架。


阅读全文 »

最近在复习 SQL 的开窗函数(Window Functions),这是 SQL 中非常强大的高级功能,能在保留每一行原始数据的同时进行分组计算,在数据分析场景中几乎无处不在。排名、累计求和、环比计算等需求都离不开它。内容不少,整理成一份速查手册方便日后回顾。


阅读全文 »
0%