大模型系列17-RAGFlow搭建本地知识库
- 安装ollama
- 安装open-wehui
- 安装并运行ragflow
- RAG(检索、增强、生成)
- RAG是什么
- RAG三过程
- RAG问答系统构建步骤
- 向量库构建
- 检索模块
- 生成模块
- RAG解决LLM的痛点
- 使用ragflow
- 访问ragflow
- 配置ollama模型
- 添加Embedding模型
- 添加chat模型
- 系统模式设置
- 创建知识库
- 数据集配置
- 上传论文
- 论文解析
- 创建论文助理
安装ollama
参考写的ollama的文档
安装open-wehui
参考写的安装open-webui的文章
安装并运行ragflow
下载ragflow
git clone https://github.com/infiniflow/ragflow.git
下载依赖镜像并运行
docker compose -f docker-compose.yml up -d
docker logs -f ragflow-server
运行成功后,使用 docker logs -f ragflow-server
查看运行状态
ragflow使用的各种环境变量在ragflow/docker/.env
文件中,可以修改 端口号、ragflow的镜像版本等
RAG(检索、增强、生成)
RAG是什么
RAG(Retrieval Augmented Generation 检索增强生成)模型由Facebook AI Research(FAIR)团队于2020年首次提出,并迅速成为大模型应用中的热门方案。它结合了信息检索技术(例如传统向量数据库)和大语言模型(如LLMs)的技术,从外部知识库中检索相关信息,并将其作为prompt输入到大模型中获取输出。
RAG三过程
RAG 包含三个主要过程:检索、增强和生成。
- 检索:根据用户的查询内容,从外部知识库获取相关信息。具体而言,将用户的查询通过嵌入模型转换为向量,以便与向量数据库中存储的相关知识进行比对。通过相似性搜索,找出与查询最匹配的前 K 个数据。这个目的是为了给后续生成提供上下文信息知识。
- 增强:将用户的查询内容和检索到的相关知识一起嵌入到一个预设的提示词模板中。对LLMs的提示词(prompt)
- 生成:将经过检索增强的提示词内容输入到大型语言模型中,以生成所需的输出。
RAG问答系统构建步骤
向量库构建
收集数据:首先,需要收集与问答系统相关的各种数据,这些数据可以来自文档、网页、数据库等多种来源。
数据清洗:对收集到的数据进行清洗,去除噪声、重复项和无关信息,确保数据的质量和准确性。
知识库构建:将清洗后的数据构建成知识库。这通常包括将文本分割成较小的片段(chunks),使用文本嵌入模型(如GLM)将这些片段转换成向量,并将这些向量存储在向量数据库(如FAISS、Milvus等)中。
检索模块
问题向量化:当用户输入查询问题时,使用相同的文本嵌入模型将问题转换成向量。
相似度检索:在向量数据库中检索与问题向量最相似的知识库片段(chunks)。这通常通过计算向量之间的相似度(如余弦相似度)来实现。
结果排序:根据相似度得分对检索到的结果进行排序,选择最相关的片段作为后续生成的输入。
生成模块
上下文融合:将检索到的相关片段与原始问题合并,形成更丰富的上下文信息,将其作为大模型的prompt输入。
大语言模型生成:使用大语言模型(如GLM)基于上述上下文信息生成回答。大语言模型会学习如何根据检索到的信息来生成准确、有用的回答。
RAG解决LLM的痛点
RAG(检索增强生成)旨在缓解甚至解决以下大模型落地应用的痛点:
- 有幻觉,可以提供更准确和可靠的领域特定知识,减少生成幻觉
- 时效性,不需要重新训练模型,更新知识库即可保持同步更新
- 使用外部知识库,保护隐私
- 支持更长的上下文
参考:
- 一文彻底搞懂大模型 - RAG(检索、增强、生成)
- RAG系统综述
- 一文速通RAG
- 精通 RAG:打造顶尖企业级 RAG 系统的秘籍
- Retrieval Augmented Generation(RAGs)解释[译]
- langchain
使用ragflow
访问ragflow
网址:http://localhost/login,然后随便注册账户:
配置ollama模型
ollama list
列出所有的模型,有两个Embedding模型以及一个qwen2:7b的模型
添加Embedding模型
添加chat模型
添加过后
系统模式设置
将刚才添加的模型设置到系统默认配置中
创建知识库
数据集配置
设置嵌入Embedding模型以及解析方法
这里我们做的机器学习论文库,因此可以将“解析方法”从“General”调整为“Paper”模式,对论文进行解析。
上传论文
论文解析
论文上传完毕后,执行论文内容的解析
论文解析过程,花了10几分钟
创建论文助理
新建一个论文助理,用于后续的聊天对话
聊天询问DeepSeek,可以看到确实识别了知识库