
提示工程指南
提示工程是一个较新的学科,应用于开发和优化提示词(Promp...
本仓库采用清晰、实用的方法讲解**检索增强生成(RAG)**技术,将高级技术分解为简单易懂的实现。不同于依赖LangChain
或FAISS
等框架,这里的所有内容都使用常见的Python库openai
、numpy
、matplotlib
等构建。
目标很简单:提供可读、可修改且具有教育意义的代码。通过关注基础原理,本项目帮助揭开RAG的神秘面纱,使其工作原理更易于理解。
本仓库包含一系列Jupyter Notebook,每个都专注于特定的RAG技术。每个笔记本提供:
以下是涵盖的技术概览:
笔记本 | 描述 |
---|---|
1. 简单RAG | 基础RAG实现,最佳入门选择 |
2. 语义分块 | 基于语义相似度拆分文本,生成更有意义的文本块 |
3. 分块大小选择器 | 探索不同分块大小对检索性能的影响 |
4. 上下文增强RAG | 检索相邻文本块以提供更多上下文 |
5. 上下文分块标题 | 在嵌入前为每个文本块添加描述性标题 |
6. 文档增强RAG | 从文本块生成问题以增强检索过程 |
7. 查询转换 | 通过重写、扩展或分解查询来改进检索,包含Step-back Prompting和子查询分解技术 |
8. 重排序器 | 使用LLM对初始检索结果重新排序以提高相关性 |
9. 相关片段提取 | 识别并重建连续的文本片段,保持上下文完整性 |
10. 上下文压缩 | 实现上下文压缩以过滤和压缩检索到的文本块,最大化相关信息 |
11. 反馈循环RAG | 整合用户反馈使RAG系统持续学习改进 |
12. 自适应RAG | 根据查询类型动态选择最佳检索策略 |
13. 自监督RAG | 实现Self-RAG,动态决定检索时机和方式,评估相关性和支持度 |
14. 命题分块 | 将文档分解为原子性事实陈述以实现精确检索 |
15. 多模态RAG | 结合文本和图像进行检索,使用LLaVA为图像生成说明文字 |
16. 融合RAG | 结合向量搜索与基于关键词(BM25)的检索以获得更好结果 |
17. 图RAG | 将知识组织为图结构,实现相关概念遍历 |
18. 层次化RAG | 构建层次化索引(摘要+详细分块)实现高效检索 |
19. HyDE RAG | 使用假设文档嵌入改进语义匹配 |
20. 校正RAG | 动态评估检索质量并使用网络搜索作为后备方案 |
21. 强化学习RAG | 使用强化学习最大化RAG模型的奖励 |
最佳RAG查找器 | 使用简单RAG+重排序器+查询改写为给定查询寻找最佳RAG技术 |
22. 知识图谱处理大数据 | 使用知识图谱处理大型数据集 |