核心内容摘要
男生和女生在一起差不多
在大语言模型(LLM)应用中检索增强生成(RAG)技术已经成为突破模型局限的关键手段今天我们将从最基础的文档检索开始深入探讨如何构建一个完整的知识库系统。
RAG
核心价值解决LLM的核心痛点1 为什么需要RAG大型语言模型虽然功能强大但存在三个主要局限性上下文有限无法一次性处理整个知识库静态知识训练数据被冻结在某个时间点专业领域知识缺乏通用模型对特定领域知识掌握有限2RAG的核心基础检索功能通过在查询时获取相关的外部知识来解决这些问题这就是检索增强生成(RAG)的基础利用上下文信息增强语言学习模型(LLM)的答案。
构建知识库数据准备的核心步骤1知识库的作用知识库是用于检索过程的文档或结构化数据的存储库****如果您需要自定义知识库可以使用 LangChain 的文档加载器和矢量存储根据您自己的数据构建一个知识库。
2从检索到RAG检索功能使语言学习模型能够在运行时访问相关上下文,但大多数实际应用会更进一步它们**将检索与生成相结合**以生成基于上下文的、有理有据的答案这就是检索增强生成**RAG**的核心思想。
3构建知识库的标准步骤一个典型的知识库构建流程包含以下关键步骤被红色框圈起来的步骤就是典型的知识库构建流程包括数据源-文档加载-文本分割-向量化-向量存储每个组件都是模块化的你可以交换文档加载器、分割器、嵌入模型或向量库的不同实现而不需重写应用程序的逻辑。
数据准备和向量化使用文档加载器从你的各类数据源(PDF/Word/网页/数据库等)加载文档将长文档切分成较短的文本片段(chunks)使用嵌入模型(如DeepSeek的text-embedding模型或者OpenAI的text-embedding-3-small或者bge-small-zh)将每个文本片段(chunks)转换为向量。
存储到向量库将上一步生成的向量连同原始的文本片段(作为原数据)一起存入向量库到这一步知识库就已经创建好了接下来就可以使用知识库开发RAG应用程序。
查询/检索当用户提出一个问题(例如“DeepSeek-R1的上下文长度是多少?”)我们使用与构建知识库的同一个嵌入模型将这个问题也转换为一个向量然后将这个问题向量送入向量库执行相似性搜索找出与问题最相关的几个片段。
增强生成将检索到的相关文本片段(作为上下文)和用户的原始问题组合成一个详细的提示(prompt)发送给LLM(如DeepSeek)LLM基于你提供的上下文来生成答案从而保证答案的准确性和相关性。
构建知识库的几个关键组件1文档加载器多数据源接入文档加载器提供了一个标准接口用于将不同来源(例如Slack、Notion 或 Google Drive、PDF、Word)的数据读取为LangChain的文档格式这确保了无论数据来源如何都能以一致的方式处理数据所有文档加载器种类都实现了BaseLoader接口每种文档加载器都可能定义自己专属的参数但他们都共享一组通用的APIload()一次性加载所有的文档lazy_load()延迟加载文档流适用于大型数据集两种加载模式对比load()一次性加载所有的文档批量加载模式适合小文件lazy_load()延迟加载文档流流式加载模式适用于大型数据集适用以下场景a场景一超大文档/海量文件比如**10 万个 markdown 文件、一个 5GB 的日志文件、一个超大的 PDF / HTML dump如果你用 load()内存直接就爆呢而lazy_load() 可以边读→ 边切 → 边向量化 → 边入库**内存占用几乎恒定b场景二流式/在线索引(Streaming Indexing)我们不知道“全部数据”什么时候到齐的情况下例如用户不断上传文档、爬虫一边爬一边建索引、消息队列里持续有新数据。
在以上几种情况下不知道什么时候“全部文档”才算结束甚至可能永远不会结束那么使用load()方法是不可能的我们举爬虫这个例子分析一下爬到一个页面→ 立刻解析→ 立刻入向量库→ 继续爬下一个2文本分割器文本分割器将大型文档分割成更小的块这些块可以单独检索适合模型上下文窗口限制提高检索精度文档拆分有多种策略每种策略都有其自身的优势。
LangChain根据不同的文档结构分别提供不同的文本分割器基于文本结构的有RecursiveCharacterTextSplitter基于文本长度的有CharacterTextSplitter基于文档结构的有MarkdownHeaderTextSplitterRecursiveJsonSplitter等因篇幅有限后面章节会陆续讲解这些分割器。
基于文本结构的分割基于文档结构的分割3嵌入模型嵌入模型将原始文本例如句子、段落或推文转换为固定长度的数字向量该向量捕捉其原始文本语义含义这些向量使机器能够基于语义而非精确的词语来比较和搜索文本就是所谓的语义搜索。
把文档分割成适当大小的块之后利用嵌入模型把每个文本块都转化为固定长度的数字向量这个固定长度等于向量模型的维度数目例如BAAI/bge-small-zh嵌入模型的维度是512把块使用嵌入模型向量化之后就会被转换成512个浮点类型的数字每一个维度对应一个浮点类型的数字。
LangChain通过Embeddings接口为文本嵌入模型例如 OpenAI、Cohere、Hugging Face提供标准接口。
主要有两种方法embed_documents(texts: List[str]) → List[List[float]]嵌入文档列表把文档列表批量向量化每一个文档对应一个512维度的向量数据。
embed_query(text: str) → List[float]嵌入单个查询这个说白了就是单个文档进行向量化。
4向量数据库向量数据库存储向量数据并能执行相似性搜索提供高效的最近邻搜索 能力。
LangChain为向量库提供了一个统一的接口使您能够add_documents- 将文档添加到向量库。
delete- 按ID删除已存储的文档。
similarity_search- 查询语义相似的文档。
这种抽象让你可以在不同的实现方式之间切换而无需改变应用程序逻辑下面这个是本篇文章完整的例子四最佳实践与性能优化在构建知识库进行分块的时候chunk\_size和chunk\_overlap的大小设置没有万能最优值只能在[召回率和性能/成本]之间取平衡可以先按:chunk_size500~1000 tokenschunk_overlap: 50~150 tokens(约chunk_size的10~20%)根据不同的文档类型正确选择不同的文档分割器。
以上这些措施都是为了在不增加块的大小情况下尽可能保持文本块的完整语义性在实际实践中可能要根据实际的文档情况做尽可能多的微调以达到最佳解。
五
总结和下期预告通过本文的介绍我们了解了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%免费】