015、LangChain + RAG实战:把知识库问答系统真正串成一条可维护的工程链路
上一篇我们刚刚讲完,LangChain入门最值得先学的3个核心组件就是:PromptTemplate,OutputParser,Chain.
但是如果你真的开始做知识库项目,很快就会发现:**掌握几个组件,并不等于已经把RAG系统组织好了。
因为很多人做RAG的真实状态,并不是“不会”,而是“会一点,但是越做越乱”。
最初的时候,你可能只想做一个简单的知识库问答:
- 用户提出问题
- 查找一些相关的资料
- 将资料拼接到Prompt中
- 调整模型回答
好像也没有几步的样子。
于是就有很多人直接开始动手了:先查向量库,然后拼接出一个很长的字符串,再调用模型进行处理,并把结果返回。第一次跑通的时候成就感很强
但是项目往前走两步的时候,问题就出现了:
- 检索策略是否需要调整?
- 上下文拼接是否要统一?
- Prompt模板是否需要根据场景进行区分?
- 来源信息如何回传给前端?
- 是否需要进行结构化处理?
后面要不要加query改写、rerank日志缓存评估?
这时候你就会突然发现:RAG真正难的地方,并不是检索和生成这两个字,而是如何把这条链路组织成一个可以持续扩展、维护更新并且不断演进的系统。
这也是为什么我一直强调:
RAG不应该只是零散拼接。
零散拼接的代码可以帮你把Demo做出来;但是只有工程化的组织才能让你的知识库系统真
