Retrieval Augmented Generation
结合检索(retrieval)和生成(generation),以用户输入为索引(index),通过检索(retrieval)外部知识库,利用大语言模型的生成(generation)能力得到回答。没有训练过程,成本很低
解决的问题
LLM面对只是密集型任务时的挑战。包括,生成幻觉、新知识却是、很难给出透明可追溯的推理论证过程。能够让LLM实现外部记忆
RAG工作原理
索引:处理外部知识,将知识源(文档)分割为chunk,编码成向量,存储在向量数据库中;
检索:接受用户问题并编码成向量,找出向量数据库中与之最相似的内容
生成:将检索到的文档块与原始问题一起作为提示词输入LLM,生成最终的回答
向量数据库(Vector-DB)
RAG中专门储存外部数据的地方,将外部文本数据通过预训练的模型转化为固定长度的向量。
要能很好的捕获文本和知识的语义信息及内部联系,是实现快速准确回答的基础,要能够实现高效准确的检索,根据用户的查询找出最相关的向量(余弦相似度/点积)。
优化方法:文本编码技术、预训练模型、句子嵌入或段落嵌入的方法
RAG发展历程
- Naive RAG:索引、检索、生成的最基础范式,应用于简单的问答系统和信息检索
- Advanced RAG:对检索前后进行增强,检索前对问题重写,检索后的信息重排序、总结、融合,摘要生成、内容推荐
- Modular RAG:将基础部分和后续各功能模块化,根据实际需求定制,多模态技术、对话系统
RAG的常见优化方法:
- 嵌入式优化(Embedding Optimization):增强嵌入性能
- 索引优化(Indexing Optimization):提升索引质量——提升数据库质量
- 查询优化(Query Optimization):使用户的检索问题更清晰更适合查询
- 上下文管理(Context Curation):减少冗余信息,提高模型处理效率
- LLM微调(fine-tuning)
检索的优化方法
- 迭代检索(Iterative Retrieval):根据检索结果多次迭代检索
- 递归检索(Recursive Retrieval):迭代细化查询
- 自适应检索(Adaptive Retrieval):让大模型自主决定检索内容、时机
RAG vs 微调
RAG | 微调 | |
---|---|---|
使用场景 | 小数据样本的知识库、开放领域的问答、时效性问答 | 数据可用且需要模型高度专业化的任务 |
优势 | 动态的知识库更新 | 能够针对特定任务优化 |
局限 | 高度依赖于知识库的质量和范围,性能高度依赖于大模型 | 需要大量标注数据,对新数据的适应性很差 |
RAG的评估指标:
- NLP领域经典评估指标
- RAG评测框架:鲁棒性、融合能力、真实性、相关度、总结能力、纠错能力
InternLM开源应用工具:茴香豆
基于LLM的领域知识助手,针对群聊场景进行工作流优化,可以提供及时准确的自动化问答服务。
核心特性
- 开源准确(免费商用)
- 高效准确
- 兼容各领域知识
- 部署成本低(可以调用远端大模型)
- 安全(可以本地部署,保证隐私性)
- 扩展性强(兼容多种通讯软件,支持多种大模型及其API)
茴香豆的构建
- 知识库:专业技术文档、实时更新的数据
- 前端:提问回答的平台
- 大模型:支持本地模型及云端API
茴香豆的工作流
- 预处理:筛选输入转化为合适的问询
- 拒答:分析比较相关性得分,判断输入是否需要进入回答环节
- 应答:生成回答
- 多来源检索:包括本地数据库检索、网络搜索、知识图谱
- 混合大模型,保证回答准确性
- 安全检验:通过大模型检验、传统NLP检验、时间筛选、消息撤回等方式保证回复的安全性