RAGFlow 是一款基于深度文档理解的开源RAG(检索增强生成)引擎。它为企业级用户提供了一套端到端的 RAG 解决方案,通过结合大语言模型(LLM) 的能力,实现对多样化复杂格式数据的精准解析与知识检索,为用户提供依据充分、真实可靠的问答服务,并确保所有回答均附带可追溯的引用来源。
RAG(Retriever-augmented Generation)是一种结合了信息检索和生成的自然语言处理(NLP)技术,特别适用于需要从大量数据中检索信息并生成自然语言文本的场景。它在处理复杂任务时能够提升生成模型的性能,尤其是在模型缺乏足够上下文或知识的情况下。
RAG的优势
RAG通过检索外部知识库或数据库中的相关信息,能够在生成过程中动态地补充实时或特定领域的知识,弥补了生成模型的“知识盲区”。这使得模型能够在没有训练时直接获得的信息基础上进行更加准确的回答或内容生成。针对企业内部包含的敏感数据(如薪资标准、客户资料等)以及大量专有信息(包括产品文档、客户案例、流程手册等),RAG提供了安全的解决方案。由于这些非公开信息无法直接预置到大模型中,RAG通过外部知识调用的方式,既满足了信息需求,又确保了数据安全性。
天翼云云搜索团队RAGFlow社区贡献
RAGFlow默认使用Elasticsearch 8.x作为向量库数据库。天翼云云搜索团队成员贡献了OpenSearch 2.19.1作为向量数据库的全流程支持,已合入社区,并在正式发版中作为NewFeatures单独致谢。在RAGFlow的v0.19.0以后的版本中均支持OpenSearch 2.19.1作为底层向量数据库。
前置需求
开通天翼云云搜索服务OpenSearch实例,获取内网地址和实例密码。
准备好云主机环境用来部署RAGFlow,需要和OpenSearch实例网络互通。
准备好Deepseek模型、Embedding向量模型、Rerank重排序模型。
安装好Docker环境。
RAG运行流程
用户通过RAGFlow对话框进行提问。
调用Embedding模型将查询向量化。
使用OpenSearch的Hybrid_search混合检索进行召回,调用Rerank模型进行重排序,返回和提问相关的文档。
将检索到的文档及对话的上下文通过Deepseek大模型总结归纳生成详细准确的回复。
步骤一:部署RAGFlow
拉取RAGFlow最新源码到云主机上,以下以v0.19.1为例。
进入ragflow源码的docker目录
cd ragflow/docker
修改向量数据库为OpenSearch
vim .env
DOC_ENGINE=${DOC_ENGINE:-opensearch}
修改如下配置项
OS_PORT=9200
OS_HOST=node1
OPENSEARCH_PASSWORD=xxxxxx
确认使用镜像
vim .env
RAGFLOW_IMAGE=infiniflow/ragflow:v0.19.1
修改docker-compose-base.yml文件
为了性能,不适用docker自带的Elasticsearch和OpenSearch,注释掉如下代码:
es01:
container_name: ragflow-es-01
profiles:
- elasticsearch
image: elasticsearch:${STACK_VERSION} volumes: - esdata01:/usr/share/elasticsearch/data ports: - ${ES_PORT}:9200
env_file: .env
environment:
- node.name=es01
- ELASTIC_PASSWORD=${ELASTIC_PASSWORD} - bootstrap.memory_lock=false - discovery.type=single-node - xpack.security.enabled=true - xpack.security.http.ssl.enabled=false - xpack.security.transport.ssl.enabled=false - cluster.routing.allocation.disk.watermark.low=5gb - cluster.routing.allocation.disk.watermark.high=3gb - cluster.routing.allocation.disk.watermark.flood_stage=2gb - TZ=${TIMEZONE}
mem_limit: ${MEM_LIMIT}
ulimits:
memlock:
soft: -1
hard: -1
healthcheck:
test: ["CMD-SHELL", "curl http://localhost:9200"]
interval: 10s
timeout: 10s
retries: 120
networks:
- ragflow
restart: on-failure
opensearch01:
container_name: ragflow-opensearch-01
profiles:
- opensearch
image: hub.icert.top/opensearchproject/opensearch:2.19.1
volumes:
- osdata01:/usr/share/opensearch/data
ports:
- ${OS_PORT}:9201 env_file: .env environment: - node.name=opensearch01 - OPENSEARCH_PASSWORD=${OPENSEARCH_PASSWORD}
- OPENSEARCH_INITIAL_ADMIN_PASSWORD=${OPENSEARCH_PASSWORD} - bootstrap.memory_lock=false - discovery.type=single-node - plugins.security.disabled=false - plugins.security.ssl.http.enabled=false - plugins.security.ssl.transport.enabled=true - cluster.routing.allocation.disk.watermark.low=5gb - cluster.routing.allocation.disk.watermark.high=3gb - cluster.routing.allocation.disk.watermark.flood_stage=2gb - TZ=${TIMEZONE}
- http.port=9201
mem_limit: ${MEM_LIMIT}
ulimits:
memlock:
soft: -1
hard: -1
healthcheck:
test: ["CMD-SHELL", "curl http://localhost:9201"]
interval: 10s
timeout: 10s
retries: 120
networks:
- ragflow
restart: on-failure
修改部分conf配置
vim service_conf.yaml.template
hosts: 'https://${OS_HOST:-opensearch01}:9200'
启动服务
docker compose -f docker-compose.yml up -d
查看启动log
docker logs -f ragflow-server
浏览器页面打开,默认服务在80端口
步骤二:用户注册并配置大模型
首先进行用户注册,这里无需邮箱再次验证,默认语言是英文,可以点击右上角“English”来切换为中文。
配置deepseek大模型
点击右上角用户头像,在左边栏选择“模型提供商”,在“待添加的模型”中选择deepseek,点击“添加模型”,在弹窗内输入API-key,添加deepseek的LLM。
配置其他大模型
如果需要Rerank,在同样的模型配置页面,点击OpenAI-API-Compatible处的“添加模型”,添加相应的Rerank模型。需要选定Rerank,并添加相应的url和api-key、最大token等参数。如果需要额外embedding模型,在同样的模型配置页面,按照配置rerank模型同样的方式,添加相应的embedding模型。
添加完模型后,点击右上角的“设置默认模型”,配置默认模型列表。将配置的模型添加到默认模型列表中。
步骤三:创建知识库
创建并配置知识库。点击最上面的选择栏,选择“知识库”,进入后,点击右上侧的“创建知识库”按钮,创建一个知识库。创建好后,点击配置,进行相应的设置。
RAGFlow提供丰富的文档解析格式,选择“General”的方法可以对MD、MDX、DOCX、XLSX、XLS (Excel 97-2003)、PPT、PDF、TXT、JPEG、JPG、PNG、TIF、GIF、CSV、JSON、EML、HTML等多种格式进行解析支持。
RAGFlow也提供了RAPTOR的召回增强策略并支持知识图谱构建。
RAGFlow支持对于chunk的大小划分、embedding模型选择、分段标识符选择、标签集等多种配置,非深度用户可以采用默认配置。
上传文档至知识库。在同一个知识库的页面,点击左边栏“数据集”进入,点击“新增文件”来添加相应的知识库文件和文件夹。
点击解析按钮,可以对文档进行解析入库。
步骤四:创建聊天助手
创建聊天助理。点击最上边栏的“聊天”进入聊天助手页面。点击“新建助理”,配置聊天。
首先进行“助理设置”。这里可以根据需求,选定相应的知识库并可以增加“显示引文”、“文本转语音等功能”,配置提示引擎。点击“提示引擎”对于聊天助手的提示引擎进行配置。
此处可以调节文本/向量混合检索的权重、可以选取topN的大小,可以配置Rerank模型等多种相关配置。
配置相应模型。
点击“模型设置”,进行模型相关的配置。
此处选择之前的deepseek-chat模型进行配置,深度用户可以选择相应的自由度配置。创建聊天对话框
点击创建好的聊天助理,选择“聊天”框的+符号创建会话,这时,可以输入相关的问题,开启RAG的使用了。