赞
踩
RAG(Retrieval Augmented Generation)技术,通过检索与用户输入相关的信息片段,并结合外部知识库来生成更准确、更丰富的回答。解决 LLMs 在处理知识密集型任务时可能遇到的挑战, 如幻觉、知识过时和缺乏透明、可追溯的推理过程等。提供更准确的回答、降低推理成本、实现外部记忆。
LLM会产生误导性的 “幻觉”,依赖的信息可能过时,处理特定知识时效率不高,缺乏专业领域的深度洞察,同时在推理能力上也有所欠缺。
RAG 通过在语言模型生成答案之前,先从广泛的文档数据库中检索相关信息,然后利用这些信息来引导生成过程,极大地提升了内容的准确性和相关性。RAG 有效地缓解了幻觉问题,提高了知识更新的速度,并增强了内容生成的可追溯性,使得大型语言模型在实际应用中变得更加实用和可信
RAG的基本结构有哪些呢?
要有一个向量化模块,用来将文档片段向量化。
要有一个文档加载和切分的模块,用来加载文档并切分成文档片段。
要有一个数据库来存放文档片段和对应的向量表示。
要有一个检索模块,用来根据 Query (问题)检索相关的文档片段。
要有一个大模型模块,用来根据检索出来的文档回答用户的问题。
向量数据库(Vector-Database)是RAG技术中专门储存外部数据的地方,主要实现了将文本以及相关的数据,通过预训练的模型转换为固定长度的向量(vector),这些向量能够很好的捕捉到我们嵌入的文本与知识。向量数据库的作用是存储大量文本片段的向量表示,并且允许模型通过余弦相似度等适当的相似度度量方法检索这些向量来获取相关信息,以辅助文本生成或理解任务。
a.方法论:
b.数据需求:
c.模型结构:
d.性能表现:
茴香豆简介:
茴香豆是一个基于LLMs的领域知识助手,由书生浦语团队开发的开源大模型应用。
茴香豆的特性:
茴香豆的构建:
茴香豆的工作流:预处理部分会将用户的输入筛选,转换为合适的问询,然后模型对于问询进行相应的分析,对问询给出评分,根据得分判断该问题是否进入问答环节,如果确定要回答,则由大模型根据问询和检索到的知识内容进行回答。以下是茴香豆的工作流程图:
LLM scroing是一个很重要的角色,通过更改它的阈值可以使茴香豆是一个话痨形象还是一个专业技术大师的形象。
下面是应用茴香豆web版创建属于自己的知识领域回答助手
https://openxlab.org.cn/apps/detail/tpoisonooo/huixiangdou-web
上传成功会有绿色编号,然后叉掉。
刷新后即可开始询问上传成功的文档知识库的问题。
茴香豆提问可以支持图文输入,但是有时候他也会无法读取一些问题,例如:
当然,你也可以设置问题正反例的内容,来让他进行判别哪些问题该回复,哪些问题不该回复。
以上就是茴香豆web创建自己领域的知识问答助手的内容。
InternLM Studio
上部署茴香豆技术助手填写开发机名称
后,点击选择镜像使用 Cuda11.7-conda
镜像,然后在资源配置中,使用 30% A100 * 1
的选项,然后立即创建开发机器。
进入开发机后,从官方环境复制运行 InternLM 的基础环境,命名为 InternLM2_Huixiangdou
,在命令行模式下运行:
studio-conda -o internlm-base -t InternLM2_Huixiangdou
在本地查看环境,结果如下:
运行conda命令,激活 InternLM2_Huixiangdou 的
python虚拟环境:
conda activate InternLM2_Huixiangdou
创建一个文件,使用软连接命令复制本地share文件准备好的bce-embedding-base_v1和bce-reranker-base_v1还有InternLM2-Chat-7B 的基础模型:
- # 创建模型文件夹
- cd /root && mkdir models
-
- # 复制BCE模型
- ln -s /root/share/new_models/maidalun1020/bce-embedding-base_v1 /root/models/bce-embedding-base_v1
- ln -s /root/share/new_models/maidalun1020/bce-reranker-base_v1 /root/models/bce-reranker-base_v1
-
- # 复制大模型参数(下面的模型,根据作业进度和任务进行**选择一个**就行)
- ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-7b /root/models/internlm2-chat-7b
首先安装茴香豆运行所需依赖。
pip install protobuf==4.25.3 accelerate==0.28.0 aiohttp==3.9.3 auto-gptq==0.7.1 bcembedding==0.1.3 beautifulsoup4==4.8.2 einops==0.7.0 faiss-gpu==1.7.2 langchain==0.1.14 loguru==0.7.2 lxml_html_clean==0.1.0 openai==1.16.1 openpyxl==3.1.2 pandas==2.2.1 pydantic==2.6.4 pymupdf==1.24.1 python-docx==1.1.0 pytoml==0.1.21 readability-lxml==0.8.1 redis==5.0.3 requests==2.31.0 scikit-learn==1.4.1.post1 sentence_transformers==2.2.2 textract==1.6.5 tiktoken==0.6.0 transformers==4.39.3 transformers_stream_generator==0.0.5 unstructured==0.11.2
然后从茴香豆官方仓库下载茴香豆。
- cd /root
-
- git clone https://github.com/internlm/huixiangdou && cd huixiangdou
- git checkout 447c6f7e68a1657fce1c4f7c740ea1700bde0440
要先把已下载模型的路径替换 /root/huixiangdou/config.ini
文件中的默认模型,需要修改 3 处模型地址,分别是:
命令行输入下面的命令,修改用于向量数据库和词嵌入的模型:
sed -i '6s#.*#embedding_model_path = "/root/models/bce-embedding-base_v1"#' /root/huixiangdou/config.ini
用于检索的重排序模型:
sed -i '7s#.*#reranker_model_path = "/root/models/bce-reranker-base_v1"#' /root/huixiangdou/config.ini
和本次选用的大模型:
sed -i '29s#.*#local_llm_path = "/root/models/internlm2-chat-7b"#' /root/huixiangdou/config.ini
然后创建知识库,先下载huixiangdou语料:
- cd /root/huixiangdou && mkdir repodir
-
- git clone https://github.com/internlm/huixiangdou --depth=1 repodir/huixiangdou
运行下面的命令,增加茴香豆相关的问题到接受问题示例中:
- cd /root/huixiangdou
- mv resource/good_questions.json resource/good_questions_bk.json
-
- echo '[
- "mmpose中怎么调用mmyolo接口",
- "mmpose实现姿态估计后怎么实现行为识别",
- "mmpose执行提取关键点命令不是分为两步吗,一步是目标检测,另一步是关键点提取,我现在目标检测这部分的代码是demo/topdown_demo_with_mmdet.py demo/mmdetection_cfg/faster_rcnn_r50_fpn_coco.py checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth 现在我想把这个mmdet的checkpoints换位yolo的,那么应该怎么操作",
- "在mmdetection中,如何同时加载两个数据集,两个dataloader",
- "如何将mmdetection2.28.2的retinanet配置文件改为单尺度的呢?",
- "1.MMPose_Tutorial.ipynb、inferencer_demo.py、image_demo.py、bottomup_demo.py、body3d_pose_lifter_demo.py这几个文件和topdown_demo_with_mmdet.py的区别是什么,\n2.我如果要使用mmdet是不是就只能使用topdown_demo_with_mmdet.py文件,",
- "mmpose 测试 map 一直是 0 怎么办?",
- "如何使用mmpose检测人体关键点?",
- "我使用的数据集是labelme标注的,我想知道mmpose的数据集都是什么样式的,全都是单目标的数据集标注,还是里边也有多目标然后进行标注",
- "如何生成openmmpose的c++推理脚本",
- "mmpose",
- "mmpose的目标检测阶段调用的模型,一定要是demo文件夹下的文件吗,有没有其他路径下的文件",
- "mmpose可以实现行为识别吗,如果要实现的话应该怎么做",
- "我在mmyolo的v0.6.0 (15/8/2023)更新日志里看到了他新增了支持基于 MMPose 的 YOLOX-Pose,我现在是不是只需要在mmpose/project/yolox-Pose内做出一些设置就可以,换掉demo/mmdetection_cfg/faster_rcnn_r50_fpn_coco.py 改用mmyolo来进行目标检测了",
- "mac m1从源码安装的mmpose是x86_64的",
- "想请教一下mmpose有没有提供可以读取外接摄像头,做3d姿态并达到实时的项目呀?",
- "huixiangdou 是什么?",
- "使用科研仪器需要注意什么?",
- "huixiangdou 是什么?",
- "茴香豆 是什么?",
- "茴香豆 能部署到微信吗?",
- "茴香豆 怎么应用到飞书",
- "茴香豆 能部署到微信群吗?",
- "茴香豆 怎么应用到飞书群",
- "huixiangdou 能部署到微信吗?",
- "huixiangdou 怎么应用到飞书",
- "huixiangdou 能部署到微信群吗?",
- "huixiangdou 怎么应用到飞书群",
- "huixiangdou",
- "茴香豆",
- "茴香豆 有哪些应用场景",
- "huixiangdou 有什么用",
- "huixiangdou 的优势有哪些?",
- "茴香豆 已经应用的场景",
- "huixiangdou 已经应用的场景",
- "huixiangdou 怎么安装",
- "茴香豆 怎么安装",
- "茴香豆 最新版本是什么",
- "茴香豆 支持哪些大模型",
- "茴香豆 支持哪些通讯软件",
- "config.ini 文件怎么配置",
- "remote_llm_model 可以填哪些模型?"
- ]' > /root/huixiangdou/resource/good_questions.json
再创建一个测试用的问询列表,用来测试拒答流程是否起效:
- cd /root/huixiangdou
-
- echo '[
- "huixiangdou 是什么?",
- "你好,介绍下自己"
- ]' > ./test_queries.json
在确定好语料来源后,运行下面的命令,创建 RAG 检索过程中使用的向量数据库:
- # 创建向量数据库存储目录
- cd /root/huixiangdou && mkdir workdir
-
- # 分别向量化知识语料、接受问题和拒绝问题中后保存到 workdir
- python3 -m huixiangdou.service.feature_store --sample ./test_queries.json
我们已经提取了知识库特征,并创建了对应的向量数据库。现在,让我们来测试一下效果:
- # 填入问题
- sed -i '74s/.*/ queries = ["huixiangdou 是什么?", "茴香豆怎么部署到微信群", "今天天气怎么样?"]/' /root/huixiangdou/huixiangdou/main.py
-
- # 运行茴香豆
- cd /root/huixiangdou/
- python3 -m huixiangdou.main --standalone
以下是基于InternLM2-Chat-7B模型的茴香豆通过RAG技术训练后的答案:
可对比基础模型 InternLM2-Chat-7B 关于 huixiangdou
问题 的原始输出:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。