为什么不使用Python实现RAG?
为什么 Ragent 用 Java 做 RAG,而不是 Python?这个问题被问过挺多次的。
打开很多 RAG 教程、AI 应用开发课程,几乎清一色是 Python。LangChain 是 Python 的,LlamaIndex 是 Python 的,连 OpenAI 官方 SDK 的首选语言都是 Python。Python 在 AI 领域的地位不需要讨论——从底层的 PyTorch 到上层的 LangChain,整条 AI 技术栈都是围绕 Python 建设的,这是十几年积累的结果。
所以当 Ragent 是用 Java 做的,不少人的第一反应是:为什么不用 Python?
答案很简单:因为大多数要落地 AI 应用的公司,技术栈是 Java。
真实场景:一个 Java 技术栈的公司要做 AI
你在一家电商公司做后端开发,团队 8 个人,全部是 Java 技术栈——Spring Boot、MyBatis Plus、MySQL、Redis、RocketMQ。有一天老板说:咱们客服系统接个 AI 上去,做个智能问答。
你去网上搜教程,答案几乎一边倒:用 Python,装个 LangChain,几行代码搞定。听起来很美好,但真要在公司里落地,问题就来了。
1. 技术栈撕裂:从此技术栈不再单一
公司现有的所有服务都是 Java 写的——用户服务、订单服务、商品服务、客服工单系统。现在你要加一个 AI 问答模块,如果用 Python 写:
- 代码仓库要新开一个,构建工具从 Maven 变成 pip/poetry
- CI/CD 流水线要新写一条,Docker 镜像要另起一套基础镜像
- 部署环境要多装一套 Python 运行时,版本管理要搞 pyenv 或 conda
- 和现有 Java 服务的通信全部要走 HTTP/gRPC,本来可以用方法调用解决的事情,现在要定义接口、处理序列化、加超时重试
这不是在做 AI,这是在给公司引入一个异构系统。
一个原本统一的技术栈, 因为一个模块用了 Python,变成了两套构建体系、两套部署流程、两套监控方案。为了一个功能,整个工程体系的复杂度翻倍了。
2. 人员依赖:会 Python 的那个人离职了怎么办
这个是团队管理者需要考虑的最现实问题。
团队 8 个人,7 个只会 Java,1 个之前学过 Python,自告奋勇用 Python + LangChain 搞了一套 RAG 出来。系统上线了,跑得也还行。然后这个同学离职了。
剩下 7 个 Java 开发者面对一堆 Python 代码:
- 看不太懂
asyncio、装饰器、yield这些 Python 特有的模式 - LangChain 的
Chain、Runnable、RunnablePassthrough是什么东西?不知道 - 出了 Bug 要调试,连 Python 的 Debug 工具都不熟
- 想加个功能,得先花两周学 Python 和 LangChain 的基本概念
Python 确实是最容易上手的语言之一,但上手和能接手一个生产系统是两回事。要理解业务逻辑、框架设计、异常处理、部署配置,需要的不仅是语言语法,还有对整套生态的熟悉程度。一个系统的可维护性,取决于团队里大多数人能不能改它,而不是取决于当初那个写代码的人有多厉害。
这个风险在小团队里尤其致命。大厂可以专门招一个 Python 岗位来维护,但大多数中小团队没有这个编制——AI 模块就是某个后端开发顺手做的事,不可能为它专门配一个不同技术栈的人。