Retriever And Chain With LangChain 完整解读
Retriever And Chain With LangChain 完整解读Retriever检索器和 Chain链是LangChain 中 RAGRetrieval-Augmented Generation检索增强生成最核心的两个组件。很多初学者容易把它们混淆Retriever 负责找资料RetrieveChain 负责处理流程Workflow可以把整个过程理解成用户问题 → Retriever 找相关文档 → Chain 组织 Prompt → LLM 回答一、什么是 RetrieverRetriever检索器就是根据用户的问题从知识库中找出最相关的 Document。注意Retriever不会回答问题。它只负责Question │ ▼ Retriever │ ▼ Documents例如你的知识库Document1 Python 是一种高级编程语言。 Document2 LangChain 是开发 LLM 应用的框架。 Document3 FAISS 是向量数据库。用户问LangChain 是什么Retriever 输出[ Document2 ]而不是LangChain 是开发 LLM 应用的框架回答是 LLM 做的不是 Retriever。二、Retriever 的本质Retriever 可以理解成Question ↓ Embedding ↓ Vector Search ↓ Top K Documents例如Question ↓ Embedding ↓ 向量 ↓ FAISS ↓ 最相近3篇文档所以 Retriever 的本质就是Question → Documents可以表示为Retriever Input: Question Output: List[Document]例如docs retriever.invoke( What is LangChain? )返回[ Document( page_contentLangChain is... ), Document( page_contentLangChain provides... ) ]三、Retriever 的来源Retriever 一般来自Vector Store例如FAISS ↓ as_retriever() ↓ Retriever代码retriever vector_store.as_retriever()这里FAISS ↓ Retriever实际上Retriever ↓ 内部调用 ↓ similarity_search()例如retriever.invoke(question)等价于vector_store.similarity_search(question)只是Retriever 更符合 Runnable 接口。四、Retriever 是 RunnableLangChain 新版中Retriever 实现了 Runnable。因此retriever.invoke(question)而不是retriever.get_relevant_documents()旧版docs retriever.get_relevant_documents( question )新版docs retriever.invoke( question )Retriever 可以直接放进 Chainchain retriever | ...五、Retriever 输出什么Retriever 输出List[Document]DocumentDocument( page_content..., metadata{} )例如[ Document( page_contentLangChain..., metadata{page:1} ), Document( page_contentRetriever..., metadata{page:2} ) ]因此Retriever 输出不是string而是List[Document]六、什么是 ChainChain就是多个 Runnable 按顺序组成的数据处理流水线。例如Question ↓ Retriever ↓ Prompt ↓ LLM ↓ Parser ↓ Answer整个就是一个 Chain。七、Chain 的作用Chain 不一定有 Retriever。例如最简单prompt ↓ LLM ↓ Parser代码chain prompt | llm | parser输入Question输出Answer没有 Retriever。八、带 Retriever 的 ChainRAGQuestion ↓ Retriever ↓ Documents ↓ Prompt ↓ LLM ↓ Parser这就是 Retrieval Chain。九、为什么需要 Chain因为LLM 不知道知识库。例如Question ↓ LLMLLM不知道加入 RetrieverQuestion ↓ Retriever ↓ Documents ↓ Prompt ↓ LLMPromptUse the following context... Context: Document1 Document2 Question: ...LLM 才能回答。十、Retriever 与 Chain 的关系Retriever 是 Chain 中的一个节点。例如Retriever ↓ Prompt ↓ LLMRetriever 本身不是完整流程。Chain 才是完整流程。十一、Runnable 的角度理解所有组件都是 RunnableRetriever ↓ Prompt ↓ LLM ↓ Parser因此Runnable ↓ Runnable ↓ Runnable ↓ Runnable可以用|连接。例如chain ( prompt | llm | parser )或者chain ( retriever | ... )十二、Retriever 为什么不能直接接 Prompt因为Retriever 输出List[Document]Prompt 需要{ context: ..., question: ... }两者格式不同。因此需要Retriever ↓ format_docs ↓ String ↓ Prompt例如def format_docs(docs): return \n\n.join( doc.page_content for doc in docs )十三、LangChain 如何自动完成官方提供create_stuff_documents_chain()它内部做了Documents ↓ format_docs() ↓ Prompt ↓ LLM所以不用自己拼接字符串。例如document_chain create_stuff_documents_chain( llm, prompt )输入List[Document]输出Answer十四、Retriever Document Chain官方推荐retrieval_chain create_retrieval_chain( retriever, document_chain )内部流程User Question │ ▼ create_retrieval_chain │ ┌─────────────┴─────────────┐ │ │ ▼ │ Retriever │ │ │ ▼ │ List[Document] │ │ │ └─────────────► Document Chain │ format_docs() │ ▼ Prompt │ ▼ LLM │ ▼ OutputParser │ ▼ Final Answer代码document_chain create_stuff_documents_chain( llm, prompt ) retrieval_chain create_retrieval_chain( retriever, document_chain ) response retrieval_chain.invoke( { input: What is LangChain? } )十五、Retriever 与 Chain 的职责对比组件输入输出是否调用 LLM主要职责RetrieverQuestionList[Document]❌从知识库检索相关文档Document ChainList[Document] QuestionPrompt → Answer✅将文档组织进 Prompt并调用 LLMRetrieval ChainQuestionAnswer✅协调整个 RAG 流程检索 生成Runnable Chain任意输入任意输出视组件而定将多个 Runnable 串联成完整工作流核心总结可以用一句话概括它们之间的关系Retriever负责找输入问题输出相关Document。Document Chain如create_stuff_documents_chain负责读将检索到的文档填充到 Prompt 中并调用 LLM 生成答案。Retrieval Chain如create_retrieval_chain负责协调把 Retriever 和 Document Chain 串联起来形成完整的 RAG 工作流。因此标准的 LangChain RAG 数据流通常可以表示为用户问题 │ ▼ Retriever │ ▼ List[Document] │ ▼ Document Chain (格式化文档 → Prompt → LLM) │ ▼ 最终答案理解了这三个层次Retriever → Document Chain → Retrieval Chain基本就掌握了 LangChain 新版 RAG 框架的整体设计思想。

相关新闻

Retriever  Chain in LangChain 完整深度解读

Retriever Chain in LangChain 完整深度解读

Retriever & Chain in LangChain 完整深度解读适配 LangChain 0.1 新版 API(区分 legacy RetrievalQA 与现代 LCEL 写法) 核心定位:RAG 的两大基础组件 ——Retriever(检索器)负责找文档,Chain&#xf…

2026/7/24 6:53:14 阅读更多 →
Claude三大模型代码能力评测与选型指南

Claude三大模型代码能力评测与选型指南

1. 项目背景与核心问题最近在开发者社区看到不少关于Claude不同模型版本的讨论,尤其是针对代码生成能力的对比。作为一个长期使用AI辅助编程的工具人,我决定对Claude的三个主要模型——Opus、Sonnet和Haiku进行一次系统的横向评测。这次测试主要聚焦两个…

2026/7/24 6:52:14 阅读更多 →
AI辅助学术写作工具书匠策AI功能解析与应用指南

AI辅助学术写作工具书匠策AI功能解析与应用指南

1. 学术写作工具的现状与痛点作为一名在高校从事科研工作十余年的研究者,我深刻理解学术写作过程中的种种困扰。从文献综述到实验设计,从数据分析到论文撰写,每个环节都充满挑战。特别是在论文写作阶段,研究者常常面临以下几个核心…

2026/7/24 6:52:14 阅读更多 →

最新新闻

通义千问多模态能力边界白皮书:基于2178组测试样本的鲁棒性分析(含医疗/金融/工业三大垂直领域实测)

通义千问多模态能力边界白皮书:基于2178组测试样本的鲁棒性分析(含医疗/金融/工业三大垂直领域实测)

更多请点击: https://intelliparadigm.com 第一章:通义千问多模态能力边界白皮书概述 本白皮书系统性梳理通义千问(Qwen)系列模型在多模态理解与生成任务中的实际能力表现、适用场景及明确的技术边界。内容基于公开基准测试&…

2026/7/24 6:59:17 阅读更多 →
MSPM33比较器中断与事件系统:硬件联动与低功耗设计详解

MSPM33比较器中断与事件系统:硬件联动与低功耗设计详解

1. 项目概述与核心价值在嵌入式开发,尤其是涉及模拟信号监控、电源管理或电机驱动的项目中,比较器(Comparator)是一个至关重要的外设。它就像一个永不疲倦的哨兵,时刻比较两个模拟电压的大小,并输出一个干净…

2026/7/24 6:59:17 阅读更多 →
如何提高技术支持效率,降低响应时间?

如何提高技术支持效率,降低响应时间?

本文探讨人工智能排产系统(AIPS)如何从"系统怎么点"的浅层支持,转型为围绕计划异常、数据异常、接口异常、规则异常四大核心问题的深度诊断专家。通过构建三层智能支持体系——精准识别、快速定位、闭环处置,AIPS技术支…

2026/7/24 6:59:17 阅读更多 →
TI MSPM33 UNICOMM模块:统一UART/SPI/I2C通信的硬件架构与实战配置

TI MSPM33 UNICOMM模块:统一UART/SPI/I2C通信的硬件架构与实战配置

1. UNICOMM模块:一个外设,三种协议在嵌入式开发领域,尤其是面对资源受限的微控制器(MCU)时,我们常常需要在有限的引脚和外设资源上实现尽可能多的功能。过去,一个项目如果需要UART连接调试串口、…

2026/7/24 6:59:17 阅读更多 →
AI数学推理突破:IMO满分与GPT-SOL-5.6的14分58秒速解技术解析

AI数学推理突破:IMO满分与GPT-SOL-5.6的14分58秒速解技术解析

在人工智能领域,数学推理能力一直是衡量模型智能水平的重要标尺。国际数学奥林匹克竞赛(IMO)作为全球最高水平的数学竞赛,其题目不仅考察复杂的数学知识,更考验严密的逻辑推理和创造性解决问题的能力。近年来&#xff…

2026/7/24 6:59:17 阅读更多 →
C/C++时间处理全解析:从time.h到chrono库的实战指南

C/C++时间处理全解析:从time.h到chrono库的实战指南

1. 项目概述:为什么C/C时间处理是程序员的必修课?在C和C的世界里,时间处理从来都不是一个简单的“获取当前时间”的函数调用。它更像是一套精密而古老的钟表系统,背后涉及操作系统内核、硬件时钟、时区转换、性能测量等多个层面。…

2026/7/24 6:58:16 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻