第8章:LangChain检索增强生成RAG--1概述
本章主要介绍基于 LangChain4j 中的 RAG(Retrieval-Augmented Generation,检索增强生成)
概念及其实现方式。RAG 是一种通过检索相关知识来增强语言模型生成能力的技术,特别适用于需要结合特定领域知识或私有数据的场景
RAG(检索增强生成)| LangChain4j
1. RAG 是什么?
语言模型(LLM)的知识仅限于其训练数据。如果希望让 LLM 了解特定领域的知识或私有数据,可以采用以下方法:
- 使用 RAG(检索增强生成),本文将详细介绍。
- 使用你的数据对 LLM 进行微调(fine-tuning)。
- 结合使用 RAG 和微调。
RAG 的核心思想 :在将提示(prompt)发送给语言模型之前,从你的数据中找到并注入相关信息片段。这样,LLM 将获得(希望是)相关的知识,并能够利用这些知识生成回答,从而降低“幻觉”(生成无关内容)的可能性。
2. RAG 的工作原理
RAG 的工作原理可以分为两个阶段:索引(Indexing)和检索(Retrieval)。
2.1 索引阶段(Indexing)
索引阶段的目标是预处理文档,以便在检索阶段能够高效地搜索相关信息。具体步骤可能因检索方法而异。对于向量搜索(vector search),通常包括以下步骤:
- 清洗文档。
- 为文档添加额外数据和元数据。
- 将文档分割成较小的片段(称为“分块”或 chunking)。
- 将这些片段嵌入为向量。
- 最后,将向量存储在嵌入存储(embedding store,也称为向量数据库)中。
索引阶段通常是离线进行的,用户不需要等待其完成。例如,可以通过每周一次的定时任务(如 cron job)重新索引公司内部文档。索引代码也可以是一个独立的应用程序,专门处理索引任务。
然而,在某些情况下,用户可能希望上传自定义文档,以便让 LLM 访问这些文档。在这种情况下,索引需要在线进行,并成为主应用程序的一部分。
下面是一张索引阶段的简化图,便于理解

2.2 检索阶段(Retrieval)
检索阶段通常在线进行,当用户提交问题时,需要使用已索引的文档回答问题。具体步骤可能因检索方法而异。对于向量搜索,通常包括以下步骤:
- 将用户的查询(问题)嵌入为向量。
- 在嵌入存储中执行相似性搜索。
- 将检索到的相关片段(原始文档的部分内容)注入到提示中,并发送给 LLM。
下面是检索阶段的简略图,辅助理解

3. LangChain4j 中的 RAG 实现
LangChain4j 提供了三种 RAG 实现方式:
- Easy RAG :最简单的 RAG 入门方式。
- Naive RAG :使用向量搜索的基本 RAG 实现。
- Advanced RAG :一个模块化的 RAG 框架,支持额外的步骤,如查询转换、从多个来源检索和重新排序。
因为每个不同实现章节的内容比较多,这里分开来讲,请持续关注后续章节的更新
导读说明:
这是LangChain开发智能体的系列文档,欢迎连读
- 第1章:LangChain4j的聊天与语言模型
- 第2章:如何基于LangChain4j实现聊天记忆
- 第3章:在LangChain中如何设置模型参数
- 第4章:在LangChain中如何实现响应式流(Response Streaming)
- 第5章:在LangChain中如何使用AI Services
- 第6章:基于LangChain如何开发Agents,附带客户支持智能体示例
- 第7章:在LangChain中如何调用函数Tools (Function Calling)
- 第8章:LangChain检索增强生成RAG–1概述
- 第8章:LangChain检索增强生成RAG–2.1Easy RAG实现
- 第8章:LangChain检索增强生成RAG–2.2Core RAG APIs
- 第8章:LangChain检索增强生成RAG–2.3Naive RAG
- 第8章:LangChain检索增强生成RAG–2.4Advanced RAG【高级RAG】
- 第9章:LangChain让大模型结构化输出
- 第9章:LangChain结构化输出-示例1(情感分析AI服务)
- 第9章:LangChain结构化输出-示例2(数字提取服务)
- 第9章:LangChain结构化输出-示例3(日期和时间提取服务)
- 第9章:LangChain结构化输出-示例4(基于大模型从自然语言中提取POJO)
- 第9章:LangChain结构化输出-示例5(基于大模型如何精确匹配POJO的字段)
- 第9章:LangChain结构化输出-示例6(设置系统消息和用户消息模版)
- 第10章:基于LangChain的综合实战[开发企业助手,查知识、查订单、表单登记…]
