为你推荐
内容简介
前言
预备篇
第1章 了解大模型与RAG
1.1 初识大模型
1.1.1 大模型时代:生成式AI应用的爆发
1.1.2 大模型应用的持续进化
1.1.3 大模型是无所不能的吗
1.2 了解RAG
1.2.1 为什么需要RAG
1.2.2 一个简单的RAG场景
1.3 RAG应用的技术架构
1.3.1 RAG应用的经典架构与流程
1.3.2 RAG应用面临的挑战
1.3.3 RAG应用架构的演进
1.4 关于RAG的两个话题
1.4.1 RAG与微调的选择
1.4.2 RAG与具有理解超长上下文能力的大模型
第2章 RAG应用开发环境搭建
2.1 开发RAG应用的两种方式
2.1.1 使用低代码开发平台
2.1.2 使用大模型应用开发框架
2.2 RAG应用开发环境准备
2.2.1 硬件环境建议
2.2.2 基础大模型
2.2.3 嵌入模型
2.2.4 Python虚拟运行环境
2.2.5 Python IDE与开发插件
2.2.6 向量库
2.2.7 LlamaIndex框架
2.3 关于本书开发环境的约定
【预备篇小结】
基础篇
第3章 初识RAG应用开发
3.1 开发一个最简单的RAG应用
3.1.1 使用原生代码开发
3.1.2 使用LlamaIndex框架开发
3.1.3 使用LangChain框架开发
3.2 如何跟踪与调试RAG应用
3.2.1 借助LlamaDebugHandler
3.2.2 借助第三方的跟踪与调试平台
3.3 准备:基于LlamaIndex框架的RAG应用开发核心组件
第4章 模型与Prompt
4.1 大模型
4.1.1 大模型在RAG应用中的作用
4.1.2 大模型组件的统一接口
4.1.3 大模型组件的单独使用
4.1.4 大模型组件的集成使用
4.1.5 了解与设置大模型的参数
4.1.6 自定义大模型组件
4.1.7 使用LangChain框架中的大模型组件
4.2 Prompt
4.2.1 使用Prompt模板
4.2.2 更改默认的Prompt模板
4.2.3 更改Prompt模板的变量
4.3 嵌入模型
4.3.1 嵌入模型在RAG应用中的作用
4.3.2 嵌入模型组件的接口
4.3.3 嵌入模型组件的单独使用
4.3.4 嵌入模型组件的集成使用
4.3.5 了解与设置嵌入模型的参数
4.3.6 自定义嵌入模型组件
第5章 数据加载与分割
5.1 理解两个概念:Document与Node
5.1.1 什么是Document与Node
5.1.2 深入理解Document与Node
5.1.3 深入理解Node对象的元数据
5.1.4 生成Document对象
5.1.5 生成Node对象
5.1.6 元数据的生成与抽取
5.1.7 初步了解IndexNode类型
5.2 数据加载
5.2.1 从本地目录中加载
5.2.2 从网络中加载数据
5.3 数据分割
5.3.1 如何使用数据分割器
5.3.2 常见的数据分割器
5.4 数据摄取管道
5.4.1 什么是数据摄取管道
5.4.2 用于数据摄取管道的转换器
5.4.3 自定义转换器
5.4.4 使用数据摄取管道
5.5 完整认识数据加载阶段
第6章 数据嵌入与索引
6.1 理解嵌入与向量
6.1.1 直接用模型生成向量
6.1.2 借助转换器生成向量
6.2 向量存储
6.2.1 简单向量存储
6.2.2 第三方向量存储
6.3 向量存储索引
6.3.1 用向量存储构造向量存储索引对象
6.3.2 用Node列表构造向量存储索引对象
6.3.3 用文档直接构造向量存储索引对象
6.3.4 深入理解向量存储索引对象
6.4 更多索引类型
6.4.1 文档摘要索引
6.4.2 对象索引
6.4.3 知识图谱索引
6.4.4 树索引
6.4.5 关键词表索引
第7章 检索、响应生成与RAG引擎
7.1 检索器
7.1.1 快速构造检索器
7.1.2 理解检索模式与检索参数
7.1.3 初步认识递归检索
7.2 响应生成器
7.2.1 构造响应生成器
7.2.2 响应生成模式
7.2.3 响应生成器的参数
7.2.4 实现自定义的响应生成器
7.3 RAG引擎:查询引擎
7.3.1 构造内置类型的查询引擎的两种方法
7.3.2 深入理解查询引擎的内部结构和运行原理
7.3.3 自定义查询引擎
7.4 RAG引擎:对话引擎
7.4.1 对话引擎的两种构造方法
7.4.2 深入理解对话引擎的内部结构和运行原理
7.4.3 理解不同的对话模式
7.5 结构化输出
7.5.1 使用output_cls参数
7.5.2 使用输出解析器
【基础篇小结】
高级篇
第8章 RAG引擎高级开发
8.1 检索前查询转换
8.1.1 简单查询转换
8.1.2 HyDE查询转换
8.1.3 多步查询转换
8.1.4 子问题查询转换
8.2 检索后处理器
8.2.1 使用节点后处理器
8.2.2 实现自定义的节点后处理器
8.2.3 常见的预定义的节点后处理器
8.2.4 Rerank节点后处理器
8.3 语义路由
8.3.1 了解语义路由
8.3.2 带有路由功能的查询引擎
8.3.3 带有路由功能的检索器
8.3.4 使用独立的选择器
8.3.5 可多选的路由查询引擎
8.4 SQL查询引擎
8.4.1 使用NLSQLTableQueryEngine组件
8.4.2 基于实时表检索的查询引擎
8.4.3 使用SQL检索器
8.5 多模态文档处理
8.5.1 多模态文档处理架构
8.5.2 使用LlamaParse解析文档
8.5.3 多模态文档中的表格处理
8.5.4 多模态大模型的基础应用
8.5.5 多模态文档中的图片处理
8.6 查询管道:编排基于Graph的RAG工作流
8.6.1 理解查询管道
8.6.2 查询管道支持的两种使用方式
8.6.3 深入理解查询管道的内部原理
8.6.4 实现并插入自定义的查询组件
第9章 开发Data Agent
9.1 初步认识Data Agent
9.2 构造与使用Agent的工具
9.2.1 深入了解工具类型
9.2.2 函数工具
9.2.3 查询引擎工具
9.2.4 检索工具
9.2.5 查询计划工具
9.2.6 按需加载工具
9.3 基于函数调用功能直接开发Agent
9.4 用框架组件开发Agent
9.4.1 使用OpenAIAgent
9.4.2 使用ReActAgent
9.4.3 使用底层API开发Agent
9.4.4 开发带有工具检索功能的Agent
9.4.5 开发带有上下文检索功能的Agent
9.5 更细粒度地控制Agent的运行
9.5.1 分步可控地运行Agent
9.5.2 在Agent运行中增加人类交互
第10章 评估RAG应用
10.1 为什么RAG应用需要评估
10.2 RAG应用的评估依据与指标
10.3 RAG应用的评估流程与方法
10.4 评估检索质量
10.4.1 生成检索评估数据集
10.4.2 运行评估检索过程的程序
10.5 评估响应质量
10.5.1 生成响应评估数据集
10.5.2 单次响应评估
10.5.3 批量响应评估
10.6 基于自定义标准的评估
第11章 企业级RAG应用的常见优化策略
11.1 选择合适的知识块大小
11.1.1 为什么知识块大小很重要
11.1.2 评估知识块大小
11.2 分离检索阶段的知识块与生成阶段的知识块
11.2.1 为什么需要分离
11.2.2 常见的分离策略及实现
11.3 优化对大文档集知识库的检索
11.3.1 元数据过滤+向量检索
11.3.2 摘要检索+内容检索
11.3.3 多文档Agentic RAG
11.4 使用高级检索方法
11.4.1 融合检索
11.4.2 递归检索
第12章 构建端到端的企业级RAG应用
12.1 对生产型RAG应用的主要考量
12.2 端到端的企业级RAG应用架构
12.2.1 数据存储层
12.2.2 AI模型层
12.2.3 RAG工作流与API模块
12.2.4 前端应用模块
12.2.5 后台管理模块
12.3 端到端的全栈RAG应用案例
12.3.1 简单的全栈RAG查询应用
12.3.2 基于多文档Agent的端到端对话应用
第13章 新型RAG范式原理与实现
13.1 自纠错RAG:C-RAG
13.1.1 C-RAG诞生的动机
13.1.2 C-RAG的原理
13.1.3 C-RAG的实现
13.2 自省式RAG:Self-RAG
13.2.1 Self-RAG诞生的动机
13.2.2 Self-RAG的原理
13.2.3 Self-RAG的实现
13.2.4 Self-RAG的优化
13.3 检索树RAG:RAPTOR
13.3.1 RAPTOR诞生的动机
13.3.2 RAPTOR的原理
13.3.3 RAPTOR的实现
【高级篇小结】
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜