1.在web版茴香豆上上传自己的文档,并进行对话:
笔记:RAG是一种结合检索和生成的技术,已在通过利用外部知识库来增强大型语言模型的性能,它通过检索与用户输入相关的信息片段,并结合这些信息来生成更准确更丰富的回答。
RAG的流程示例如下:如果在传统的大模型中,检索到不懂的问题将会输入至without RAG,对用户输出我不知道,更糟糕的情况是大模型会生成一些无关的数据来回答这个问题。对于RAG来说,则会在调用的数据库对问题进行块检索,检索出一些相似度高的片段,然后将用户的问题和生成的文本共同输给生成模块,生成模块将这些问题和文本作为提示词然后给出一个合适的回答,在此,模型对问题的回答来源于调用的数据库,对于一些新闻或者高等知识,我们只需要不断更新这个数据库即可将大模型的生成能力和数据库很好的结合在一起,无需任何模型训练就可以得到满意的答案。
RAG常用的优化方式:
嵌入优化,索引优化,查询优化,上下文管理,迭代检索,递归检索,自适应检索,LLM微调
2.在 InternLM Studio
上部署茴香豆技术助手
根据文档指导,已经对茴香豆进行模型配置,并对问题"茴香豆怎么部署到微信群?"进行提问
笔记:1.对环境进行激活:
conda activate InternLM2_Huixiangdou
2.下载茴香豆模型的基础文件,选用 InternLM2-Chat-7B 作为基础模型。
3.安装茴香豆,即从官方仓库中用git下载茴香豆
4.用已下载模型的路径替换 /root/huixiangdou/config.ini
文件中的默认模型,需要修改 3 处模型地址,分别是:命令行输入下面的命令,修改用于向量数据库和词嵌入的模型,用于检索的重排序模型和本次选用的大模型。修改好的配置文件如下:
5.创建知识库,使用 InternLM 的 Huixiangdou 文档作为新增知识数据检索来源,下载 Huixiangdou 语料,提取知识库特征,创建向量数据库。数据库向量化的过程应用到了 LangChain 的相关模块,默认嵌入和重排序模型调用的网易 BCE 双语模型,除了语料知识的向量数据库,茴香豆建立接受和拒答两个向量数据库,用来在检索的过程中更加精确的判断提问的相关性,这两个数据库的来源分别是:
接受问题列表,希望茴香豆助手回答的示例问题
存在 huixiangdou/resource/good_questions.json
中
拒绝问题列表,希望茴香豆助手拒答的示例问题
存储在 huixiangdou/resource/bad_questions.json
中
6.增加茴香豆相关的问题到接受问题示例中,再创建一个测试用的问询列表,用来测试拒答流程是否起效,在确定好语料来源后,运行下面的命令,创建 RAG 检索过程中使用的向量数据库: