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 //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 //localhost:9201"]
interval: 10s
timeout: 10s
retries: 120
networks:
- ragflow
restart: on-failure修改部分conf配置
vim service_conf.yaml.template
hosts: '//${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的使用了。