LangChain 从入门到实践:用最小案例理解 RAG 的 5 个核心抽象
1. 引言RAGRetrieval-Augmented Generation检索增强生成是当前大语言模型应用中最热门的架构之一。它通过将外部知识库的检索结果注入到生成过程中有效缓解了大模型幻觉、知识过时等问题。LangChain 作为最流行的 LLM 应用开发框架为 RAG 提供了简洁而强大的抽象层。本文将从零开始通过一个最小可运行的案例带你理解 LangChain 中 RAG 的 5 个核心抽象Document Loaders、Text Splitters、Vector Stores、Retrievers 和 Chains。无论你是刚接触 RAG 的新手还是想系统梳理 LangChain 概念的开发者这篇文章都能帮你快速建立完整的认知框架。2. 环境准备在开始之前请确保你的 Python 环境满足以下要求Python 3.9 或更高版本安装 LangChain 及相关依赖pip install langchain langchain-community langchain-openai chromadb本文使用 OpenAI 的嵌入模型和 Chat 模型你需要准备一个有效的 API Keyimport os os.environ[OPENAI_API_KEY] your-api-key-here3. 核心抽象一Document Loaders文档加载器Document Loader 是 RAG 管线的第一环负责从各种来源加载文档并将其转换为 LangChain 统一的Document对象。每个Document包含page_content文本内容和metadata元数据如来源、作者等。LangChain 支持数十种文档加载器覆盖本地文件、网页、数据库、云存储等场景。下面以最简单的TextLoader为例from langchain_community.document_loaders import TextLoader loader TextLoader(example.txt) documents loader.load() print(documents[0].page_content[:100]) # 打印前100个字符 print(documents[0].metadata) # 打印元数据对于更常见的 PDF 或网页场景可以使用PyPDFLoader或WebBaseLoaderfrom langchain_community.document_loaders import WebBaseLoader loader WebBaseLoader(https://example.com/article) documents loader.load()4. 核心抽象二Text Splitters文本分割器加载后的文档通常很长无法直接送入大模型受限于上下文窗口。Text Splitter 负责将长文档切分成语义完整的短片段chunks每个 chunk 后续会被向量化并存入向量数据库。LangChain 提供了多种分割策略最常用的是RecursiveCharacterTextSplitter它按优先级依次尝试不同的分隔符\n\n、\n、空格、字符尽量保持段落和句子的完整性。from langchain.text_splitter import RecursiveCharacterTextSplitter text_splitter RecursiveCharacterTextSplitter( chunk_size500, # 每个 chunk 的最大字符数 chunk_overlap50, # chunk 之间的重叠字符数用于保持上下文连贯 separators[\n\n, \n, , ] ) chunks text_splitter.split_documents(documents) print(f原始文档被切分为 {len(chunks)} 个 chunk)chunk_size 和 chunk_overlap 的选择chunk_size 过小会导致语义碎片化过大则可能超出模型上下文窗口。chunk_overlap 可以缓解边界信息丢失的问题一般设为 chunk_size 的 10%~20%。5. 核心抽象三Vector Stores向量存储切分后的文本片段需要转换为向量嵌入并存储以便后续进行语义检索。Vector Store 就是负责这一环节的抽象。LangChain 支持 Chroma、FAISS、Pinecone、Weaviate 等多种向量数据库。下面使用 Chroma本地运行无需额外服务来构建向量存储from langchain_openai import OpenAIEmbeddings from langchain_community.vectorstores import Chroma embeddings OpenAIEmbeddings(modeltext-embedding-3-small) vectorstore Chroma.from_documents( documentschunks, embeddingembeddings, persist_directory./chroma_db # 持久化存储路径 ) print(向量存储构建完成共包含, vectorstore._collection.count(), 个向量)嵌入模型将文本映射到高维语义空间语义相近的文本在向量空间中距离更近。这是后续检索的基础。6. 核心抽象四Retrievers检索器Retriever 是 RAG 管线的查询接口。当用户提出一个问题时Retriever 从 Vector Store 中检索出最相关的文档片段作为上下文提供给大模型。最简单的用法是将 Vector Store 直接转换为 Retrieverretriever vectorstore.as_retriever( search_typesimilarity, # 相似度检索 search_kwargs{k: 3} # 返回最相关的 3 个 chunk ) 测试检索 query 什么是 RAG results retriever.invoke(query) for i, doc in enumerate(results): print(f结果 {i1}: {doc.page_content[:100]}...)除了基本的相似度检索LangChain 还支持mmr最大边际相关性检索它在保证相关性的同时增加结果的多样性避免返回过于相似的片段。7. 核心抽象五Chains链Chain 是 LangChain 中最核心的组合抽象它将上述所有组件串联成一个完整的 RAG 管线。最常用的是RetrievalQA链它自动完成「检索 → 组装 Prompt → 调用 LLM → 返回答案」的完整流程。from langchain.chains import RetrievalQA from langchain_openai import ChatOpenAI llm ChatOpenAI(modelgpt-4o-mini, temperature0) qa_chain RetrievalQA.from_chain_type( llmllm, chain_typestuff, # 将所有检索结果拼接后一次性送入 LLM retrieverretriever, return_source_documentsTrue # 返回检索到的原始文档便于调试 ) 提问 question LangChain 中 RAG 的核心抽象有哪些 response qa_chain.invoke({query: question}) print(答案:, response[result]) print(\n参考来源:) for doc in response[source_documents]: print(f- {doc.page_content[:80]}...)chain_type参数控制检索结果如何送入 LLMstuff将所有文档拼接后一次性送入适合文档量少的情况。map_reduce先对每个文档单独生成答案再汇总适合大量文档。refine逐个文档迭代优化答案适合需要逐步推理的场景。map_rerank对每个文档生成答案并打分返回最高分结果。8. 完整最小案例下面将上述 5 个抽象整合为一个完整的、可直接运行的脚本import os from langchain_community.document_loaders import TextLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_openai import OpenAIEmbeddings, ChatOpenAI from langchain_community.vectorstores import Chroma from langchain.chains import RetrievalQA 1. 加载文档 loader TextLoader(knowledge.txt) documents loader.load() 2. 分割文档 text_splitter RecursiveCharacterTextSplitter(chunk_size500, chunk_overlap50) chunks text_splitter.split_documents(documents) 3. 构建向量存储 embeddings OpenAIEmbeddings() vectorstore Chroma.from_documents(chunks, embeddings) 4. 创建检索器 retriever vectorstore.as_retriever(search_kwargs{k: 3}) 5. 构建问答链 llm ChatOpenAI(modelgpt-4o-mini, temperature0) qa_chain RetrievalQA.from_chain_type(llmllm, retrieverretriever) 6. 提问 answer qa_chain.invoke({query: LangChain 是什么}) print(answer[result])只需替换knowledge.txt为你的知识文档并配置好 API Key即可运行一个完整的 RAG 应用。9. 总结与进阶方向通过本文的最小案例我们完整走通了 RAG 的 5 个核心抽象Document Loaders从各种来源加载文档。Text Splitters将长文档切分为语义完整的片段。Vector Stores将文本片段向量化并存储。Retrievers根据用户查询检索相关文档。Chains将上述组件串联为完整的问答管线。在此基础上你可以进一步探索以下进阶方向多轮对话记忆结合ConversationRetrievalChain实现带上下文的对话。多源检索使用EnsembleRetriever融合多个检索器的结果。重排序在检索后使用CrossEncoderReranker对结果重新排序提升精度。Agent 集成将 RAG 作为工具集成到 LangChain Agent 中实现更复杂的推理流程。RAG 是一个快速发展的领域LangChain 也在持续迭代。建议你动手运行本文的案例然后逐步替换组件、调整参数在实践中加深理解。

相关新闻

利用Chrome内置AI优化浏览器性能:从Gemini Nano到实战扩展开发

利用Chrome内置AI优化浏览器性能:从Gemini Nano到实战扩展开发

浏览器卡顿、反应慢、标签页一多就崩溃,这几乎是每个开发者或重度网络用户的日常痛点。尤其是在处理大量文档、进行在线研究或同时运行多个Web应用时,性能瓶颈尤为明显。传统的加速方法无非是清理缓存、禁用扩展或升级硬件,但这些治标不治本。 今天,我们将探讨一个更具革命…

2026/7/28 7:48:03阅读更多 →
2026年实测:宁波5大周末数学小升初机构综合评测

2026年实测:宁波5大周末数学小升初机构综合评测

在宁波,教育的脉动从来不是一道轻巧的选择题。镇海中学、效实中学、鄞州中学等标杆名校,构筑起家长眼中一道道真实而焦灼的升学阶梯。尤其当孩子站在小升初、初升高乃至新高考的路口,不少宁波家庭发现:外来连锁品牌的大型班课&…

2026/7/28 7:48:03阅读更多 →
行空板智能写字板开发实战:从硬件交互到图形界面

行空板智能写字板开发实战:从硬件交互到图形界面

1. 项目概述:从“Hello World”到“智能写字板”在嵌入式开发领域,我们常常把点亮一个LED灯、打印一句“Hello World”作为入门的第一步。但对于很多初学者,尤其是教育场景下的学生和创客爱好者来说,这些项目虽然经典,…

2026/7/28 7:48:03阅读更多 →
本地部署Codex接入DeepSeek:低成本AI编程助手实战指南

本地部署Codex接入DeepSeek:低成本AI编程助手实战指南

如果你正在寻找一个能本地运行、无需绑定海外信用卡、又能用上 DeepSeek 这类高性价比国产模型的 AI 智能体,那么 Codex 配合 CC Switch 的方案,可能就是你现在最需要的那套工具。这个组合的核心价值在于,它让你绕过了 OpenAI 的账号和付费门槛,直接在国内网络环境下,以极…

2026/7/28 9:06:14阅读更多 →
摸鱼低代码平台终极指南:如何让开发像摸鱼一样轻松

摸鱼低代码平台终极指南:如何让开发像摸鱼一样轻松

摸鱼低代码平台终极指南:如何让开发像摸鱼一样轻松 【免费下载链接】mfish-nocode 摸鱼低代码平台,是一款致力于让开发像摸鱼一样轻松的低代码/无代码平台。首创微服务单体服务一体化架构。基于SpringBoot4、Spring Ai、Vue3等最新前后端技术栈。已用于多…

2026/7/28 9:06:14阅读更多 →
5G大规模MIMO混合波束成形技术及Matlab实现

5G大规模MIMO混合波束成形技术及Matlab实现

1. 大规模MIMO与混合波束成形技术解析大规模MIMO(Massive Multiple-Input Multiple-Output)作为5G通信的核心技术之一,通过在基站端部署数十甚至数百根天线,实现了频谱效率和系统容量的数量级提升。而混合波束成形(Hyb…

2026/7/28 9:06:14阅读更多 →
Spring Boot在农业B2B电商平台中的实践与优化

Spring Boot在农业B2B电商平台中的实践与优化

1. 项目背景与核心价值农业生产设备销售服务平台是一个典型的B2B垂直领域电商系统,其核心价值在于解决传统农机设备交易中的三大痛点:信息不对称、交易流程繁琐、售后服务缺失。我去年参与的一个省级农业机械化推广项目中,农户普遍反映购买大…

2026/7/28 9:06:14阅读更多 →
Completion API与ChatCompletion API核心技术对比与应用指南

Completion API与ChatCompletion API核心技术对比与应用指南

1. 两种API的核心定位差异 在自然语言处理领域,Completion API和ChatCompletion API代表着两种截然不同的交互范式。Completion API源自传统的文本补全模型,其设计初衷是处理开放式文本生成任务。当我们需要模型根据前文续写内容时(比如代码补…

2026/7/28 9:06:14阅读更多 →
ZK Bug Tracker与智能合约安全:跨领域漏洞对比分析

ZK Bug Tracker与智能合约安全:跨领域漏洞对比分析

ZK Bug Tracker与智能合约安全:跨领域漏洞对比分析 【免费下载链接】zk-bug-tracker A community-maintained collection of bugs, vulnerabilities, and exploits in apps using ZK crypto. 项目地址: https://gitcode.com/gh_mirrors/zk/zk-bug-tracker ZK…

2026/7/28 9:04:14阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/28 4:06:39阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/28 2:08:06阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/28 1:38:28阅读更多 →
告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:29阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:29阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:29阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/27 16:57:54阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/28 3:17:03阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/28 2:35:58阅读更多 →