“茴香豆”:零代码搭建你的RAG智能助理笔记
RAG
RAG是什么?
RAG全称是**(Retrieval Augmented Generation),是一种结合了检索(Retrieval)和生成(Generation)的技术,通过利用外部知识库**来增强大语言模型的性能。它通过检索与用户输入相关的信息片段,并结合这些信息来生成更准确、更丰富的回答。可以将其理解成一个搜索引擎。
RAG解决了什么问题?
- 解决LLMs在处理知识密集型任务时可能遇到的挑战(生成幻觉、过时知识、缺乏透明和可追溯的推理过程);提供更准确的回答、降低成本、实现外部记忆
RAG的应用
-
问答系统
-
文本生成
-
信息检索
-
图片描述(多模态)
原理
RAG主要由三个部分组成
-
索引
-
检索
-
生成
架构
向量数据库
-
数据存储
-
将文本以及其他数据通过预训练模型转换为固定长度的向量,这些向量表示文本的语义信息
-
相似性检索
-
根据用户的查询向量,使用向量数据库快速找出最相关的向量的过程。通常通过计算余弦相似度或者其他相似度度量(例如点乘);检索结果根据相似度得分进行排序,最相关的文档将被用于后续的文本生成。
-
向量表示的优化
-
更高级的文本编码技术(句子嵌入或者段落嵌入)
-
对数据库的优化以及支持规模的向量搜索
RAG的工作流程
RAG发展进程
-
Naive RAG 简单问答系统、信息检索
-
Advanced RAG 摘要生成 内容推荐
-
对检索前后进行增强,检索前对用户的问题进行扩展、重写等策略,对检索后的信息进行重排序、总结、融合等策略
-
Modular RAG
-
将基础部分和后续功能模块化,根据实际业务需求定制,完成多种任务
RAG常见的优化技术
-
嵌入优化(提高向量数据库质量)
-
结合稀疏和密集检索
-
多任务
-
索引优化(提高向量数据库质量)
-
细粒度分割(Chunk)
-
元数据
-
查询优化 advance RAG
-
查询扩展、转换
-
多查询
-
上下文管理(减少冗余信息) advance RAG
-
重排(rerank)
-
上下文选择/压缩
-
检索
-
迭代检索
-
递归检索
-
自适应检索
-
LLM微调
-
检索微调
-
生成微调
-
双重微调
RAG vs Fine-tune
-
RAG
-
非参数记忆,利用外部知识库,利用外部知识库提供实时更新的信息
-
能够处理知识密集型任务,提供准确的事实性回答
-
通过检索增强,可以生成多样化内容
适用于需要结合最新信息和实时数据的任务,例如实时新闻摘要等
优势:动态知识更新,处理长尾知识问题
局限:依赖外部知识库的质量和覆盖范围。依赖大模型的基础能力
-
-
Fine-tune
-
参数记忆,在特定数据集上训练,针对性更强
-
需要大量标注数据
-
微调后可能出现过拟合
数据可用且模型高度专业化的任务,例如特定领域的情感分析
优势:针对特定任务效果更好
局限:大量标注数据,对新任务适应性较差
-
RAG像是均衡型选手,Fine-tune更像是偏科选手
评估和测试
针对RAG的基准测试和评测框架
茴香豆
茴香豆介绍
茴香豆是一个基于LLM的群聊助手
茴香豆的特点
-
设计一个两阶段的拒绝和响应流水线,以应对群聊场景,能够在不造成消息泛滥的情况下回答用户问题。
-
低成本,仅需1.5GB内存,无需训练。
-
提供一整套工业级的Web、Android和流水线源代码,具有商业可行性
架构
-
多来源搜索
-
混合大模型
-
多重评分
-
安全检查