教学视频地址:https://www.bilibili.com/video/BV1QA4m1F7t4/
相应文档:教程/huixiangdou/readme.md 在 camp2 ·实习生/教程 ·GitHub上
RAG介绍:
检索增强生成(Retrieval Augmented Generation, RAG)是一种技术,它通过从数据源中检索信息来辅助大语言模型(Large Language Model, LLM)生成答案。简而言之,RAG 结合了搜索技术和大语言模型的提示词功能,即向模型提出问题,并以搜索算法找到的信息作为背景上下文,这些查询和检索到的上下文信息都会被整合进发送给大语言模型的提示中。
RAG工作原理:因为普通大模型需要进行预训练当遇到的问题不属于训练时会产生回答不出问题甚至出现无关回答出现幻觉问题。而RAG则是通过检索模块向量化通过一个embeddings,在已经存在的向量数据库中检索相似度最高的结合,通过模块输出答案。
RAG的发展历程:
RAG的概念是2020年提出的[2],第一次将预训练的检索器与预训练的seq2seq模型相结合,并进行端到端的微调。真正发扬光大是在2022年后,特别是ChatGPT的提出,NLP迈入大模型时代。
很多人不知道,RAG从诞生开始一直是研究预训练和SFT的,推理截断的RAG是在LLM时代后才开始井喷。因为高性能大模型的训练成本高,学术界和工业级试图通过推理阶段加入RAG模块,高性价比的方式整合外部知识来增强模型生成。RAG的检索范围也在逐步放开,早起的RAG重点关注开源的,非结构化知识;随着检索范围的扩大,高质量数据作为知识来源,逐步在减轻LLM大模型的错误知识和幻觉问题。最近也有很多关于知识图谱,自我检索等方向的研究,跨学科和LLM进行结合的探索。
现在的RAG分为Naive RAG、Advanced RAG、Modular RAG。
分别可实现:问答系统、信息检索、摘要生成、内容推荐、多模态任务、对话系统。
常见的RAG优化方法:有嵌入优化、索引优化、查询优化、上下文管理、迭代检索、递归检索、自适应检索和LLM微调。具体的方法见下图:
现有的RAG模型的评估模型和专业的模型评估:
准确率(Accuracy)、召回率(Recall)、F1分数(F1 score)、BLEU分数和ROUGE分数
专业的RAG评估框架:
基准测试:RGB、Recall 、CRUD
评测工具:RAGAS、ARES、TruLens
-------------------------------------------------茴香豆介绍-----------------------------------------------------------------
简单介绍茴香豆:茴香豆类似一个中介背靠大模型例如熟知的KIMI、ChatGPT、还有书生浦语大模型然后通过自己的训练对前端进行问题的回答例如微信和飞书群聊中的问题。茴香豆扮演的是具有检索问题选择有回答价值的问题和对话进行回答。
--------------------------------------------茴香豆的基础运行---------------------------------------------------------
在运行在确定好语料来源后,运行下面的命令,创建 RAG 检索过程中使用的向量数据库:
# 创建向量数据库存储目录
cd /root/huixiangdou && mkdir workdir
# 分别向量化知识语料、接受问题和拒绝问题中后保存到 workdir
python3 -m huixiangdou.service.feature_store --sample ./test_queries.json
时出现了报错是因为很多包没导入如图:
在pip导入包时出现WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
这个警告建议不要以超级用户('root' 用户)权限运行 pip
命令,因为这样可能导致权限问题,并与系统包管理器产生冲突。相反,它建议使用虚拟环境。虚拟环境是一个自包含的目录树,包含了特定版本的 Python 的 Python 安装,以及一些额外的包。它允许您为特定项目创建一个隔离的环境,并在其中安装包,而不影响系统范围的 Python 安装。
出现的问题: