摘要
本周主要学习了RAG系统中链(Chain)的核心概念与调用方式。首先明确了RAG链的本质是将检索步骤与生成步骤串联,形成"检索→注入上下文→调用LLM"的完整流程;随后进一步掌握了链的两种关键调用方法------`invoke`用于同步阻塞、一次性返回完整结果,而`stream`用于流式输出、逐步返回生成内容,以适应不同交互场景下的需求。
abstract
This week, the main focus was on learning the core concepts and invocation methods of chains in RAG systems. First, I clarified that the essence of a RAG chain is to connect the retrieval step with the generation step, forming a complete "retrieve → inject context → call LLM" process. Subsequently, I further mastered two key invocation methods for the chain: invoke, which is used for synchronous blocking and returns the complete result at once, and stream, which is used for streaming output and returns generated content step by step, to meet the needs of different interaction scenarios.
RAG中的"Chain"通常指一个将检索与生成步骤串联起来的处理流程:首先根据用户输入从外部知识库中检索相关文档片段,然后将这些片段与原始问题组合成增强的提示词,最后交给大模型生成基于检索信息的答案。常见的实现如LangChain中的`RetrievalQA`链,它自动管理"检索→注入上下文→调用LLM"的完整链路,并能添加对话记忆、结果重排、文档压缩等中间处理环节。通过这种链式编排,RAG能有效减少模型幻觉,让回答依托真实的外部数据,同时保持对话的连贯性和可控性。

chain
LangChain 链(尤其是| 管道链)的核心工作原理,这也是链式调用的核心价值:实现数据的自动化流转与组件的协同工作,如下。
chain = prompt_template | model
核心前提:即Runnable子类对象才能入链(以及Cal1able、Mapping接口子类对象也可加入(后续了解用的不多))。我们目前所学习到的组件,均是Runnable接口的子类,如下类的继承关系:

invoke和stream
在RAG链的具体调用中,`invoke` 和 `stream` 是两种核心执行方式:`invoke` 是同步阻塞调用,接收完整输入后等待整个链运行结束并一次性返回最终结果,适用于批处理或用户不关心中间过程的场景;而 `stream` 则允许链在生成过程中逐步产出输出块(如逐词返回模型生成的文本),便于在流式应用中实现实时展示、低延迟反馈或提前终止生成。两者通常共享相同的输入参数,开发者可根据交互需求选择:需要完整答案时使用 `invoke`,需要边生成边显示时使用 `stream`。
