RAG 框架横评:LangChain、LlamaIndex、自研,到底怎么选
这个问题我被问过很多次而且问的人往往已经卡了很久。「我这个知识库要用哪个框架」「我朋友说 LangChain 太重是不是该自己写」我的回答总是让人有点失望框架是你这个项目里最不重要的一环。它决定你组装的速度不决定你的效果。但这句话太空得展开讲才有用所以有了这篇。我把三条路都认真走过一遍用一个通用编排框架、用一个检索专用框架、以及完全自己写。这篇讲清三件事——它们各自省你什么、它们的成本在哪、以及什么时候该换路。框架省的是什么先说一个我踩出来的认知框架帮你省的是「组装」不是「想清楚」。一个 RAG 流程无非几步切文档、算向量、存进向量库、按问题检索、把检索结果拼进提示词。这几步谁都会写一个下午能写完。框架的贡献是帮你把这几步的接口定好、把常见组合预置好让你不用每步都自己设计。但真正影响效果的是切片怎么切、要不要加重排、检索多少个、提示词怎么组织。这些框架替你想不了它只能给你几个参数。所以换框架治不了效果问题它治的是开发速度问题。想明白这点之后选框架这件事就变得很轻了——你只要回答一个问题我愿不愿意花时间自己写那几段组装代码来换取后面完全可控。我现在的习惯是第一版一定用现成框架因为我需要用最快的速度看见效果、拿到判断。等我知道了这个场景「难点在哪」再决定要不要把那一层拿回来自己写。先跑起来再决定要不要接管。三条路通用编排框架的强项是「什么都能接」。你手上那些零散的模型、向量库、外部接口它基本都有现成的封装。代价是它的抽象层很厚你得先跟着它的概念走一遍才动得了手。检索专用框架的强项是「检索这条链已经替你调好」。索引、切分、召回、重排这些环节它给的默认值就挺合理。我最快搭出一个能用的知识库用的就是它。自研的强项只有一个但这个很值钱没有黑盒。效果不对的时候我知道去哪一行改。用框架时我得先猜「是它默认值的问题还是我的问题」猜的过程最耗时间。五个维度摆在一起看更清楚。分数还是我的体感你的场景不一样权重也不一样。有一点我要说清楚自研在「上手速度」上只拿 2 分不是因为它难是因为它慢。慢在前两周你得自己把基础设施写一遍这段投入没法省。「长期维护省心」这项我给了自研 3 分而不是 5 分很多人会觉得奇怪。原因很实际**自己写的代码维护的人也是你自己。**框架的坑有人踩过、有文档、有社区自己写的坑只有你知道。自由度换来的责任是真实存在的。看什么LangChainLlamaIndex自研最强的地方接什么都行检索链路开箱可用全程可控最烦的地方抽象多、版本动非检索场景绕前期投入大第一周体感边学边用跑得最快最慢适合谁流程杂、要接很多东西主要就是做检索效果要反复调检索框架什么感觉用检索专用框架的体验是这样的代码量非常小因为大部分环节它已经替你连好了。索引和检索这两步它替你安排好了index VectorStoreIndex.from_documents(docs)engine index.as_query_engine(similarity_top_k5)engine.query(“解约条款是怎么写的”)我第一次跑通就有点吃惊因为我知道底下它替我做了切片、算了向量、存了索引、拼了提示词。四行代码干掉了大概两百行活。问题出在后面。效果不太行的时候我想改切片方式得先去翻它的切分器接口我想换一种重排策略得先弄清它的节点结构。改的每一步都比我预想的多绕一个弯。这不是框架的错是「开箱」的必然代价——**它替你做的那两百行你必须先读懂才能改。**读懂的功夫跟当初自己写的功夫差不多。自研写多少后来我们自己写的版本其实没有很多人想象的那么多代码。关键是先划一条线只把「一定会变」的那部分自己掌控别的照样用现成的。只自研这一层检索接口class Retriever:def search(self, q, k5, filtersNone) - list[Chunk]:raise NotImplementedError换嵌入模型、换向量库、加重排都只改实现切分器和向量库本身照旧用开源现成的不重复造我们把自研的范围圈得很死只写检索和拼提示词这两层加起来大概四百行。切分器、向量库、重排模型全是现成的开源。这样既拿到了可控性也没把人力砸在重复造轮子上。这个圈法的好处在调效果的时候特别明显。我想试「检索 10 条再重排取 3 条」改一个参数就能跑想试另一种切分边界写个新实现挂上去。整个调试循环从半天缩到了一小时以内。一个真实的例子说个具体的讲清楚「边走边调」这件事实际是怎么发生的。去年我给一个内部工具做文档问答。第一版用的是检索专用框架两小时跑通效果大概六十分——能答但经常答不全。比如问「报销流程要几步」它只回了一步。我把召回结果打出来看发现切片是按固定长度切的一条流程被切成了三段。这点我知道怎么修——按标题结构切别按长度切。但在这套框架里改切分器我得先弄明白它的节点模型花了大半天。那次我改完之后就有了预感后面我还想试重排、想试多路召回、想试按文档类型给不同权重而这些都会撞上同样的墙。于是我把检索那一层抠出来自己写了。效果提升的过程很琐碎但很有效。加一轮重排从六十分到七十二分改成按标题切到七十八分检索从五条提到十条再取前三条到八十三分。这些改动都很小但每一步我都能立刻看到分数动这种反馈是继续调下去的动力。回头看真正的转折点不是「换到自研」而是「我能在一小时内试完一个想法」。调效果这件事拼的是试验次数不是单次试验的聪明程度。成本交叉点什么时候该从框架走到自研我画了条曲线来说明这件事因为它不是线性的。框架那条线起步很低因为第一天就能跑起来但随着你的需求变复杂它的成本涨得很快——你会不断遇到「它不支持我要的那种改法」每次都要绕、要 hack、要等版本。自研那条线起步高因为开头两周要把基础写一遍。但它涨得慢因为复杂度的增加只是多写几个实现。两条线交一次那就是分水岭。左边用框架右边自研。我要强调的一直是**大部分项目的复杂度落在交叉点左边。**很多团队一上来就自研是把右边的答案用在了左边的场景上。怎么判断自己在哪一边看一件事就够了过去两个月你有多少次因为「框架不让你那样做」而放弃了一个想法。超过三次你在右边一次都没有你在左边。三个误区关于这个话题我见过三种反复出现的误解值得单独拆一下。第一个是把框架当效果方案。「效果不好换个框架试试」——这是我听过最贵的一句话。效果不好九成是因为切片和检索策略没调对换框架之后你还是得调那两件事只是换了个地方调。**第二个是把自研理解成什么都自己写。**有人一听到自研就跟我说「那不得写几万行」。真不是。切分器、向量库、重排模型这些社区都有成熟实现没必要重复造。自研的意思是「关键那几层你说了算」不是「所有轮子都自己造」。**第三个是跟着版本追新。**框架迭代快看到新版本出了就升级升完发现 API 变了、行为也变了得重新回归一遍效果。我的做法是只在遇到明确需要的时候才升升级前一定先把当前的召回指标记下来升完对比一下有没有掉。这三个误区有个共同点它们都在用「换点什么」来代替「调点什么」。而 RAG 这件事恰恰是调的部分远比换的部分重要。我的建议把三条路的顺序排一下我的建议是这样先从检索专用框架起步因为它让你最快看到效果。用一两周把切片、召回、重排的默认值都试一遍建立起「什么参数影响什么」的手感。然后看你的调优是不是开始被框架卡住了。如果每次改点什么都要跟框架搏斗那就把最常改的那一层一般是检索抠出来自研别的继续用现成的。如果你的活本来就很杂——要接七八个外部系统、流程里有一堆分支那通用编排框架反而更合适因为它接东西确实方便。选它的时候心里要有数你是在用一部分可控性换组装速度。不管走哪条路有两件事一定要提前做把检索封成一层自己的接口以及把切分策略做成可替换的。有这两层你换框架的成本就是重写两个类而不是重建整个项目。这是我这两年唯一觉得必须先做、不能等的基础工作。最后框架选型的纠结之所以让人痛苦是因为它看起来像个重要决定。它确实重要但它的重要程度被高估了——真正决定你 RAG 好不好用的是你在切片和检索策略上花的那些时间而那件事跟框架无关。能最快跑起来的那条路通常就是你现在该走的那条。等你被它卡住了你自然会知道下一步往哪走——被卡住这件事本身就是最好的选型依据。别在第一天就把三个月后的架构定死。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】