大模型系列17-RAGFlow搭建本地知识库

大模型系列17-RAGFlow搭建本地知识库

安装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(检索增强生成)旨在缓解甚至解决以下大模型落地应用的痛点:

  • 有幻觉,可以提供更准确和可靠的领域特定知识,减少生成幻觉
  • 时效性,不需要重新训练模型,更新知识库即可保持同步更新
  • 使用外部知识库,保护隐私
  • 支持更长的上下文

参考:

使用ragflow

访问ragflow

网址:http://localhost/login,然后随便注册账户:

配置ollama模型

ollama list列出所有的模型,有两个Embedding模型以及一个qwen2:7b的模型

添加Embedding模型

添加chat模型

添加过后

系统模式设置

将刚才添加的模型设置到系统默认配置中

创建知识库

数据集配置

设置嵌入Embedding模型以及解析方法

这里我们做的机器学习论文库,因此可以将"解析方法"从"General"调整为"Paper"模式,对论文进行解析。

上传论文

论文解析

论文上传完毕后,执行论文内容的解析

论文解析过程,花了10几分钟

创建论文助理

新建一个论文助理,用于后续的聊天对话

聊天询问DeepSeek,可以看到确实识别了知识库

相关推荐
pp起床5 分钟前
Part03:设计提示的通用技巧
人工智能
pp起床8 分钟前
Part02:基本概念以及基本要素
大数据·人工智能·算法
landuochong20029 分钟前
OpenClaw 架构文档
人工智能·架构·openclaw
Tony Bai1 小时前
告别古法编程黄金时代:AI 时代不会再有新编程语言诞生的土壤
人工智能
cxr8281 小时前
OpenClaw与NetLogo之间的调用与数据交互机制
人工智能·交互·netlogo·openclaw
Mountain and sea1 小时前
工业机器人+AI视觉引导:从传统示教到智能抓取的实战升级
人工智能·机器人
jarvisuni1 小时前
手搓 CodingPlan 照妖镜,TOKEN 燃烧器!
人工智能·ai编程
北京耐用通信1 小时前
工业通信优选:耐达讯自动化实现CC-Link IE转Modbus RTU稳定传输
人工智能·物联网·网络协议·自动化·信息与通信
汉堡大王95271 小时前
# AI 终于能"干活"了——Function Calling 完全指南
javascript·人工智能·机器学习
码路高手1 小时前
Trae-Agent的Patch逻辑
人工智能·架构