<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      [譯] RAGFlow 使用說明—+ dify

      [譯] RAGFlow 使用說明_ragflow使用手冊-CSDN博客

      本文于2024年8月,翻譯整理自:https://ragflow.io/docs/dev/ 最新版本請查閱官方文檔。

      本文檔更多是 RAGFlow 系統操作內容,雖然不難/深刻,但有些細節沒有注意,在搭建和使用的時候就容易出各類問題。所以讀完這個文檔是有必要的。

      快速啟動

      RAGFlow是一個基于深度文檔理解的開源RAG(檢索-增強生成)引擎。當與LLM集成時,它能夠提供真實的問答功能,并得到來自各種復雜格式數據的有根據的引用的支持。

      本快速入門指南描述了以下一般過程:

      • 啟動本地RAGFlow服務器,
      • 創建知識庫,
      • 干預文件解析,以
      • 根據您的數據集建立AI聊天。

      一、先決條件

      • CPU ≥ 4核;
      • RAM ≥ 16 GB;
      • 磁盤 ≥ 50 GB;
      • Docker ≥ 24.0.0 & Docker Compose ≥ v2.26.1。

      如果尚未在本地計算機Windows、Mac或Linux)上安裝Docker,請參閱安裝Docker引擎


      二、啟動服務器

      本節提供了在Linux上設置RAGFlow服務器的說明。如果您使用的是不同的操作系統,不用擔心。大多數步驟都是相似的。

      1、確保 vm.max_map_count ≥ 262144:

      vm.max_map_count.此值設置進程可能擁有的內存映射區域的最大數量。它的默認值是65530。雖然大多數應用程序需要少于一千個映射,但減少此值可能會導致異常行為,當進程達到限制時,系統會拋出內存不足錯誤。

      RAGFlow v0.10.0使用Elasticsearch進行多次調用。正確設置vm.max_map_count的值對于Elasticsearch組件的正常運行至關重要。


      Linux

      1.1.檢查vm.max_map_count的值:

      $ sysctl vm.max_map_count
      bash
       

      1.2.重置vm.max_map_count到一個值至少262144如果不是。

      $ sudo sysctl -w vm.max_map_count=262144
      bash
       

      警告

      此更改將在系統重新啟動后重置。如果下次啟動服務器時忘記更新該值,您可能會收到Can't connect to ES cluster異常。

      1.3.為確保您的更改保持永久,請相應地添加或更新 /etc/sysctl.conf 中的vm.max_map_count值:

      vm.max_map_count=262144
      bash
       

      macOS

      如果您在帶有Docker Desktop的macOS上,請運行以下命令來更新vm.max_map_count

      docker run --rm --privileged --pid=host alpine sysctl -w vm.max_map_count=262144
      bash
       

      警告

      此更改將在系統重新啟動后重置。如果下次啟動服務器時忘記更新該值,您可能會收到Can't connect to ES cluster異常。

      要使您的更改持久化,請使用正確的設置創建一個文件:

      1.1 創建文件:

      sudo nano /Library/LaunchDaemons/com.user.vmmaxmap.plist
      shell
       

      1.2 打開文件:

      sudo launchctl load /Library/LaunchDaemons/com.user.vmmaxmap.plist
      shell
       

      1.3 添加設置:

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
      <plist version="1.0">
      <dict>
          <key>Label</key>
          <string>com.user.vmmaxmap</string>
          <key>ProgramArguments</key>
          <array>
              <string>/usr/sbin/sysctl</string>
              <string>-w</string>
              <string>vm.max_map_count=262144</string>
          </array>
          <key>RunAtLoad</key>
          <true/>
      </dict>
      </plist>
      xml
       

      1.4.保存文件后,加載新的守護進程:

      sudo launchctl load /Library/LaunchDaemons/com.user.vmmaxmap.plist
      shell
       

      注意:如果上述步驟不起作用,請考慮使用此解決方法,它使用容器并且不需要手動編輯macOS設置。


      2、克隆存儲庫:
      $ git clone https://github.com/infiniflow/ragflow.git
      bash
       

      3、構建預構建的Docker映像并啟動服務器:

      運行以下命令會自動下載開發版本RAGFlow Docker映像。要下載并運行指定的Docker版本,請在運行以下命令之前將 docker/.env 中的RAGFLOW_VERSION更新到預期版本,例如RAGFLOW_VERSION=v0.10.0

      $ cd ragflow/docker
      $ chmod +x ./entrypoint.sh
      $ docker compose up -d
      bash
       

      核心映像的大小約為9 GB,可能需要一段時間才能加載。


      4、服務器啟動并運行后檢查服務器狀態:

      $ docker logs -f ragflow-server
      bash
       

      以下輸出確認系統成功啟動:

          ____                 ______ __
         / __ \ ____ _ ____ _ / ____// /____  _      __
        / /_/ // __ `// __ `// /_   / // __ \| | /| / /
       / _, _// /_/ // /_/ // __/  / // /_/ /| |/ |/ /
      /_/ |_| \__,_/ \__, //_/    /_/ \____/ |__/|__/
                    /____/
      
       * Running on all addresses (0.0.0.0)
       * Running on http://127.0.0.1:9380
       * Running on http://x.x.x.x:9380
       INFO:werkzeug:Press CTRL+C to quit
      bash
       

      如果您跳過此確認步驟并直接登錄RAGFlow,您的瀏覽器可能會提示network anomaly錯誤,因為此時您的RAGFlow可能尚未完全初始化。


      5、在您的Web瀏覽器中,輸入服務器的IP地址并登錄RAGFlow。

      警告:使用默認設置,您只需要輸入http://IP_OF_YOUR_MACHINE端口號),因為使用默認配置時可以省略默認HTTP服務端口80


      三、配置LLM

      RAGFlow是一個RAG引擎,它需要與LLM一起工作以提供接地氣、無幻覺的問答功能。目前,RAGFlow支持以下LLM,并且列表正在擴展:


      注意:RAGFlow還支持使用Ollama、XINETH或LocalAI在本地部署LLM,但本快速入門指南未涵蓋這部分。

      要添加和配置LLM:

      1、單擊頁面右上角的徽標>模型提供商:

      在這里插入圖片描述


      每個RAGFlow賬號都可以免費使用同易前文的嵌入模型text-嵌入ding-v2。這就是為什么您可以在添加模型列表中看到同易前文。您可能需要稍后更新您的同易前文API密鑰。


      2、單擊所需的LLM并相應地更新API密鑰(在本例中為DeepSeek-V2):

      在這里插入圖片描述


      您添加的模型如下所示:

      在這里插入圖片描述


      3、單擊系統模型設置以選擇默認模型:

      • 聊天模型,
      • 嵌入模型,
      • 圖像到文本模型。

      在這里插入圖片描述


      某些模型,例如圖像到文本模型qwen-vl-max,是特定LLM的附屬模型。您可能需要更新API密鑰才能訪問這些模型。


      四、創建您的第一個知識庫

      您可以將文件上傳到RAGFlow中的知識庫并將其解析為數據集。知識庫實際上是數據集的集合。RAGFlow中的問答可以基于特定的知識庫或多個知識庫。RAGFlow支持的文件格式包括文檔(PDF、DOC、DOCX、TXT、MD)、表格(CSV、XLSX、XLS)、圖片(JPEG、JPG、PNG、TIF、GIF)和幻燈片(PPT、PPTX)。

      要創建您的第一個知識庫:

      1、單擊頁面頂部中間的知識庫選項卡>創建知識庫。

      2、輸入您的知識庫名稱,然后單擊確定以確認您的更改。

      您將被帶到知識庫的配置頁面。

      在這里插入圖片描述


      3、RAGFlow提供了多種塊模板,可滿足不同的文檔布局和文件格式。為您的知識庫選擇嵌入模型和塊方法(模板)。

      重要:一旦您選擇了一個嵌入模型并使用它來解析文件,您就不再被允許更改它。顯而易見的原因是,我們必須確保特定知識庫中的所有文件都使用相同的嵌入模型進行解析(確保它們在相同的嵌入空間中進行比較)。

      您將被帶到知識庫的數據集頁面。

      4、單擊+添加文件>本地文件以開始將特定文件上傳到知識庫。

      5、在上傳的文件條目中,單擊播放按鈕開始文件解析:

      在這里插入圖片描述


      文件解析完成后,其解析狀態更改為SUCCESS。


      五、文件解析

      RAGFlow具有可見性和可解釋性,允許您查看分塊結果并在必要時進行干預。為此:

      1、單擊完成文件解析的文件以查看分塊結果:

      您將被帶到Chunk頁面:

      在這里插入圖片描述


      2、將鼠標懸停在每個快照上以快速查看每個塊。

      3、雙擊分塊文本以添加關鍵字或在必要時進行手動更改:

      在這里插入圖片描述


      注:您可以將關鍵字添加到文件塊以增加其相關性。此操作會增加其關鍵字權重,并可以提高其在搜索列表中的位置。

      4、在檢索測試中,在測試文本中提出一個快速問題,以仔細檢查您的配置是否有效:

      從下面可以看出,RAGFlow以真實的引用作為回應。

      在這里插入圖片描述


      六、設置一個AI聊天

      RAGFlow中的對話基于特定的知識庫或多個知識庫。創建知識庫并完成文件解析后,您可以繼續并開始AI對話。

      1、單擊法師中間頂部的聊天選項卡>創建助手以顯示下一個對話的聊天配置對話。

      RAGFlow提供了為每個對話選擇不同聊天模型的靈活性,同時允許您在系統模型設置中設置默認模型。


      2、更新助手設置:

      • 為您的助手命名并指定您的知識庫。
      • 空響應 :
        • 如果您希望將RAGFlow的答案限制在您的知識庫中,請在此處留下響應。然后當它沒有檢索到答案時,它會統一地響應您在此處設置的內容。
      • 如果您希望RAGFlow在無法從您的知識庫中檢索答案時即興發揮,請將其留空,這可能會導致幻覺。

      3、更新提示引擎或保持原樣開始。

      4、更新模型設置。

      5、RAGFlow還提供對話API。將鼠標懸停在您的對話>Chat Bot API上以將RAGFlow的聊天功能集成到您的應用程序中:

      在這里插入圖片描述


      6、現在,讓我們開始表演:

      在這里插入圖片描述


      在這里插入圖片描述


      配置知識庫

      知識庫、無幻覺聊天和文件管理是RAGFlow的三大支柱。RAGFlow的AI聊天基于知識庫。RAGFlow的每個知識庫都作為知識源,將從本地機器上傳的文件和文件管理中生成的文件引用解析為未來AI聊天的真正“知識”。本指南演示了知識庫功能的一些基本用法,涵蓋以下主題:

      • 創建知識庫
      • 配置知識庫
      • 搜索知識庫
      • 刪除知識庫

      一、創建知識庫

      借助多個知識庫,您可以構建更靈活、多樣化的問答。創建您的第一個知識庫:

      在這里插入圖片描述


      每次創建知識庫時,都會在 root/.knowledgebase 目錄中生成一個同名文件夾。


      二、配置知識庫

      以下屏幕截圖顯示了知識庫的配置頁面。正確配置您的知識庫對于未來的AI聊天至關重要。例如,選擇錯誤的嵌入模型或塊方法會導致聊天中意外的語義丟失或答案不匹配。

      在這里插入圖片描述


      本節涵蓋以下主題:

      • 選擇塊方法
      • 選擇嵌入模型
      • 上傳文件
      • 解析文件
      • 干預文件解析結果
      • 運行檢索測試

      1、選擇塊方法

      RAGFlow提供多個分塊模板,方便分塊不同布局的文件,并確保語義完整性。在分塊方法中,您可以選擇適合文件布局和格式的默認模板。下表顯示了每個支持的塊模板的描述和兼容的文件格式:

      模板 描述 文件格式
      General 文件根據預設的塊令牌編號連續分塊。 DOCX、EXCEL、PPT、PDF、TXT、JPEG、JPG、PNG、TIF、GIF
      Q&A   EXCEL、CSV/TXT
      Manual   PDF
      Table   EXCEL、CSV/TXT
      Paper   PDF
      Book   DOCX、PDF、TXT
      Laws   DOCX、PDF、TXT
      Presentation   PDF、PPTX
      Picture   JPEG、JPG、PNG、TIF、GIF
      One 整個文檔被分塊為一個。 DOCX、EXCEL、PDF、TXT

      您還可以在數據集頁面上更改特定文件的塊模板。

      在這里插入圖片描述


      2、選擇嵌入模型

      嵌入模型在文件塊上構建向量索引。一旦您選擇了一個嵌入模型并用它來解析一個文件,您就不再被允許更改它。要切換到不同的嵌入模型,您必須刪除知識庫中所有完成的文件塊。顯而易見的原因是,我們必須確保使用相同的嵌入模型解析特定知識庫中的所有文件(確保它們在相同的嵌入空間中進行比較)。

      以下嵌入模型可以在本地部署:

      • BAAI/bge-large-zh-v1.5
      • BAAI/bge-base-en-v1.5
      • BAAI/bge-large-en-v1.5
      • BAAI/bge-small-en-v1.5
      • BAAI/bge-small-zh-v1.5
      • jinaai/jina-embeddings-v2-base-en
      • jinaai/jina-embeddings-v2-small-en
      • nomic-ai/nomic-embed-text-v1.5
      • sentence-transformers/all-MiniLM-L6-v2
      • maidalun1020/bce-embedding-base_v1

      3、上傳文件

      • RAGFlow的文件管理允許您將文件鏈接到多個知識庫,在這種情況下,每個目標知識庫都包含對文件的引用。
      • 在知識庫中,您還可以選擇將單個文件或文件文件夾(批量上傳)從本地計算機上傳到知識庫,在這種情況下,知識庫保存文件副本。

      雖然將文件直接上傳到知識庫似乎更方便,但我們強烈建議將文件上傳到文件管理,然后將它們鏈接到目標知識庫。這樣,您可以避免永久刪除上傳到知識庫的文件。


      4、解析文件

      文件解析是知識庫配置中的一個關鍵主題。RAGFlow中文件解析的含義有兩個:基于文件布局對文件進行分塊,并在這些塊上構建嵌入和全文(關鍵字)索引。選擇塊方法和嵌入模型后,您可以開始解析文件:

      在這里插入圖片描述


      • 單擊UNSTART旁邊的播放按鈕開始文件解析。
      • 如果您的文件解析長時間停頓,請單擊紅十字圖標,然后刷新。
      • 如上所示,RAGFlow允許您對特定文件使用不同的塊方法,提供超出默認方法的靈活性。
      • 如上所示,RAGFlow允許您啟用或禁用單個文件,從而更好地控制基于知識庫的AI聊天。

      5、干預文件解析結果

      RAGFlow具有可見性和可解釋性,允許您查看分塊結果并在必要時進行干預。為此:

      5.1 單擊完成文件解析的文件以查看分塊結果:

      您將被帶到Chunk頁面:

      在這里插入圖片描述


      5.2 將鼠標懸停在每個快照上以快速查看每個塊。

      5.3 雙擊分塊文本以添加關鍵字或在必要時進行手動更改:

      在這里插入圖片描述


      注:您可以將關鍵字添加到文件塊以增加其相關性。此操作會增加其關鍵字權重,并可以提高其在搜索列表中的位置。

      5.4 在檢索測試中,在測試文本中提出一個快速問題,以仔細檢查您的配置是否有效:

      從下面可以看出,RAGFlow以真實的引用作為回應。

      在這里插入圖片描述


      6、運行檢索測試

      RAGFlow在其聊天中使用全文搜索和矢量搜索的多次調用。在設置AI聊天之前,請考慮調整以下參數以確保預期信息始終出現在答案中:

      • 相似閾值:相似度低于閾值的塊將被過濾。默認設置為0.2。
      • 向量相似度權重:向量相似度對總分的貢獻百分比。默認設置為0.3。

      在這里插入圖片描述


      三、搜索知識庫

      從RAGFlow v0.10.0開始,搜索功能仍然處于初級形式,僅支持按名稱進行知識庫搜索。

      在這里插入圖片描述


      四、刪除知識庫

      您可以刪除知識庫。將鼠標懸停在目標知識庫卡片的三個點上,出現刪除選項。刪除知識庫后,root/.knowledge 目錄下的關聯文件夾將自動刪除。結果是:

      • 直接上傳到知識庫的文件不見了;
      • 您從文件管理中創建的文件引用已消失,但相關文件仍存在于文件管理中。

      在這里插入圖片描述


      開始AI聊天

      知識庫、無幻覺聊天和文件管理是RAGFlow的三大支柱。RAGFlow中的聊天基于特定的知識庫或多個知識庫。一旦您創建了知識庫并完成了文件解析,您就可以繼續并開始AI對話。


      一、開始一個AI聊天

      您通過創建助手來開始AI對話。

      1、單擊頁面中間頂部的聊天選項卡>創建助手以顯示下一個對話的聊天配置對話。

      RAGFlow為您提供了為每個對話選擇不同聊天模型的靈活性,同時允許您在系統模型設置中設置默認模型。


      2、更新助手設置:

      • 助手名稱是您的聊天助手的名稱。每個助手對應一個對話,該對話具有知識庫、提示、混合搜索配置和大型模型設置的獨特組合。
      • 空洞的回應 :
        • 如果您希望將RAGFlow的答案限制在您的知識庫中,請在此處留下響應。然后當它沒有檢索到答案時,它會統一地響應您在此處設置的內容。
        • 如果您希望RAGFlow在無法從您的知識庫中檢索答案時即興發揮,請將其留空,這可能會導致幻覺。
      • 顯示報價:這是RAGFlow的一個關鍵特性,默認啟用。RAGFlow不像黑匣子一樣工作。相反,它清楚地顯示其響應所基于的信息源。
      • 選擇相應的知識庫。您可以選擇一個或多個知識庫,但要確保它們使用相同的嵌入模型,否則會發生錯誤。

      3、更新提示引擎:

      • 在System中,您填寫LLM的提示,您也可以將默認提示保留為開頭。
      • 相似度閾值為每個文本塊設置相似度“欄”。默認值為0.2。相似度分數較低的文本塊將從最終響應中過濾掉。
      • 向量相似度權重默認設置為0.3,RAGFlow使用混合評分系統,結合關鍵詞相似度和向量相似度,用于評估不同文本塊的相關性,該值設置分配給混合評分中向量相似度組件的權重。
      • 前N決定了饋送到LLM的最大塊數。換句話說,即使檢索到更多的塊,也只提供前N個塊作為輸入。
      • 變量:

      4、更新模型設置:

      • 在模型中:您選擇聊天模型。雖然您在系統模型設置中選擇了默認聊天模型,但RAGFlow允許您為對話選擇替代聊天模型。
      • 自由是指 LLM 即興創作的水平。從即興、精確到平衡,每個自由級別對應于溫度、頂部P、存在懲罰和頻率懲罰的獨特組合。
      • 溫度:LLM預測隨機性的水平。值越高,LLM越有創造力。
      • 頂部P也稱為“細胞核采樣”。有關更多信息,請參閱此處
      • Max Tokens:LLM響應的最大長度。請注意,如果此值設置得太低,響應可能會被縮減。

      5、現在,讓我們開始表演:

      在這里插入圖片描述


      在這里插入圖片描述


      二、更新現有對話的設置

      將鼠標懸停在預期對話框上>編輯以顯示聊天配置對話框:

      在這里插入圖片描述


      三、將聊天功能集成到您的應用程序中

      RAGFlow還提供對話API。將鼠標懸停在您的對話>Chat Bot API上以將RAGFlow的聊天功能集成到您的應用程序中:

      在這里插入圖片描述


      管理文件

      知識庫、無幻覺聊天和文件管理是RAGFlow的三大支柱。RAGFlow的文件管理允許您單獨或批量上傳文件。然后,您可以將上傳的文件鏈接到多個目標知識庫。本指南展示了文件管理功能的一些基本用法。


      一、創建文件夾

      RAGFlow的文件管理允許您使用嵌套文件夾結構建立文件系統。要在RAGFlow的根目錄中創建文件夾:

      在這里插入圖片描述


      RAGFlow中的每個知識庫在 root/.knowledgebase 目錄下都有一個對應的文件夾。您不允許在其中創建子文件夾。


      二、上傳文件

      RAGFlow的文件管理支持從本地計算機上傳文件,允許單獨和批量上傳:

      在這里插入圖片描述


      在這里插入圖片描述


      三、預覽文件

      RAGFlow的文件管理支持預覽以下格式的文件:

      • 文件(PDF、DOCS)
      • 表(XLSX)
      • 圖片(JPEG、JPG、PNG、TIF、GIF)

      在這里插入圖片描述


      四、將文件鏈接到知識庫

      RAGFlow的文件管理允許您將上傳的文件鏈接到多個知識庫,在每個目標知識庫中創建文件引用。因此,在文件管理中刪除文件將自動刪除知識庫中所有相關的文件引用。

      在這里插入圖片描述


      您可以一次將文件鏈接到一個知識庫或多個知識庫:

      在這里插入圖片描述


      五、將文件移動到特定文件夾

      在這里插入圖片描述


      六、搜索文件或文件夾

      從RAGFlow v0.10.0開始,搜索功能仍然處于初級形式,僅支持按名稱在當前目錄中搜索文件和文件夾(不會檢索子目錄中的文件或文件夾)。

      在這里插入圖片描述


      七、重命名文件或文件夾

      RAGFlow的文件管理允許您重命名文件或文件夾:

      在這里插入圖片描述


      八、刪除文件或文件夾

      RAGFlow的文件管理允許您單獨或批量刪除文件或文件夾。

      要刪除文件或文件夾:

      在這里插入圖片描述


      要批量刪除文件或文件夾:

      在這里插入圖片描述


      您不允許刪除root/.knowledgebase 文件夾。

      刪除已鏈接到知識庫的文件將自動刪除知識庫中所有相關的文件引用。


      九、下載上傳文件

      RAGFlow的文件管理允許您下載上傳的文件:

      在這里插入圖片描述


      從RAGFlow v0.10.0開始,不支持批量下載,也不能下載整個文件夾。

      編輯此頁


      配置您的API密鑰

      RAGFlow與在線AI模型交互需要API密鑰。本指南提供有關在RAGFlow中設置API密鑰的信息。


      一、獲取您的API密鑰

      目前,RAGFlow支持以下在線LLM。單擊相應的鏈接申請您的API密鑰。大多數LLM提供商授予新創建的帳戶試用積分(將在幾個月內到期)或促銷金額的免費配額。


      注意:如果您發現您的在線LLM不在列表中,請不要感到沮喪。列表正在擴展,您可以向我們提交功能請求!或者,如果您有自定義或本地部署的模型,您可以使用Ollama、新參考或LocalAI將它們綁定到RAGFlow


      二、配置您的API密鑰

      您有兩個選項來配置API密鑰:

      • 在啟動RAGFlow之前,在service_conf. yaml中配置它。
      • 登錄RAGFlow后在模型提供程序頁面上對其進行配置。

      1、在啟動RAGFlow之前配置API密鑰

      1.1 導航到 ./docker/ragflow

      1.2 查找入口 user_default_llm:

      • 使用您選擇的LLM更新factory
      • 用你的更新api_key
      • 如果使用代理連接到遠程服務,請更新base_url

      1.3 重新啟動系統以使更改生效。

      1.4 登錄到RAGFlow。

      登錄RAGFlow后,您會發現您選擇的模型出現在模型提供程序頁面上的添加模型下。


      2、登錄RAGFlow后配置API密鑰

      警告:登錄RAGFlow后,通過 service_conf.yaml 文件配置API密鑰將不再生效。

      登錄RAGFlow后,您只能在Model Providers頁面配置API Key:

      1. 單擊頁面右上角的徽標>模型提供商。
      2. 點擊添加模型

      在這里插入圖片描述


      1. 粘貼您的API密鑰。
      2. 如果您使用代理連接到遠程服務,請填寫您的基本URL。
      3. 單擊確定以確認您的更改。

      注意:
      在這里插入圖片描述


      部署本地LLM

      RAGFlow支持使用Ollama或新會議在本地部署模型。如果您有本地部署的模型來利用或希望啟用GPU或CUDA來加速推理,您可以將Ollama或新會議綁定到RAGFlow,并將它們中的任何一個用作與本地模型交互的本地“服務器”。

      RAGFlow與Ollama和新意無縫集成,無需進一步的環境配置。您可以使用它們在RAGFlow中部署兩種類型的本地模型:聊天模型和嵌入模型。

      注:本用戶指南不打算涵蓋Ollama或新會議的大部分安裝或配置細節;它的重點是RAGFlow內部的配置。要獲得最新信息,您可能需要查看Ollama或新會議的官方網站。

      一、使用jina部署本地模型

      Jina 允許您構建通過gRPC、HTTP和WebSockets進行通信的AI服務和管道,然后將它們擴展并部署到生產環境。

      要使用Jina部署本地模型,例如gpt2:


      1、檢查防火墻設置

      確保主機的防火墻允許端口12345上的入站連接。

      sudo ufw allow 12345/tcp
      bash
       

      2、安裝包

      pip install jina
      bash
       

      3、部署本地模型

      第1步:導航到rag/svr目錄。

      cd rag/svr
      bash
       

      第二步:使用Python運行jina_server.py腳本,傳入模型名稱或模型的本地路徑(腳本只支持加載從Huggingface下載的模型)

      python jina_server.py  --model_name gpt2
      shell
       

      二、使用Ollama部署本地模型

      Ollama使您能夠運行本地部署的開源大型語言模型。它將模型權重、配置和數據捆綁到由Modelfile定義的單個包中,并優化設置和配置,包括GPU使用。

      注意

      • 有關下載Ollama的信息,請參閱此處
      • 有關配置Ollama服務器的信息,請參見此處
      • 有關支持的模型和變體的完整列表,請參閱Ollama模型庫

      要使用Ollama部署本地模型,例如Llama3:


      1、檢查防火墻設置

      確保主機的防火墻允許端口11434上的入站連接。例如:

      sudo ufw allow 11434/tcp
      bash
       

      2、確保Ollama是可訪問的

      重新啟動系統并使用curl或Web瀏覽器檢查您在http://localhost:11434的Ollama服務的服務URL是否可訪問。

      Ollama is running
      bash
       

      3、運行您的本地模型

      ollama run llama3
      shell
       

      如果你的Ollama是通過Docker安裝的,請運行以下命令:

      docker exec -it ollama ollama run llama3
      shell
       

      4、添加Ollama

      在RAGFlow中,單擊頁面右上角的徽標>模型提供程序并將Ollama添加到RAGFlow:

      在這里插入圖片描述


      5、完成基本的Ollama設置

      在彈出窗口中,完成Ollama的基本設置:

      1. 因為llama3是聊天模型,所以選擇chat作為模型類型。
      2. 確保您在此處輸入的模型名稱與您使用Ollama運行的本地模型的名稱完全匹配。
      3. 確保您輸入的基本URL可供RAGFlow訪問。
      4. 可選:如果您的模型包含圖像到文本模型,則在是否支持視覺下打開切換。

      • 如果您的Ollama和RAGFlow在同一臺機器上運行,請使用http://localhost:11434作為基本URL。
      • 如果您的Ollama和RAGFlow在同一臺機器上運行,并且Ollama在Docker中,請使用http://host.docker.internal:11434作為基本URL。
      • 如果您的Ollama在與RAGFlow不同的機器上運行,請使用http://<IP_OF_OLLAMA_MACHINE>:11434作為基本URL。

      警告:如果您的Ollama在另一臺機器上運行,您可能還需要在ollama.service中將 OLLAMA_HOST 環境變量設置為 0.0.0.0 (請注意,這不是基本URL):

      Environment="OLLAMA_HOST=0.0.0.0"
      bash
       

      更多信息可見:https://github.com/ollama/ollama/blob/main/docs/faq.md#how-do-i-configure-ollama-server


      警告:不正確的基本URL設置將觸發以下錯誤:

      Max retries exceeded with url: /api/chat (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0xffff98b81ff0>: Failed to establish a new connection: [Errno 111] Connection refused'))
      bash
       

      6、更新系統模型設置

      單擊您的徽標>模型提供商>系統模型設置以更新您的模型:

      您現在應該能夠從聊天模型下的下拉列表中找到llama3。

      如果您的本地模型是嵌入模型,您應該在嵌入模型下找到您的本地模型。


      7、更新聊天配置

      在聊天配置中相應地更新您的聊天模型:

      如果您的本地模型是嵌入模型,請在知識庫的配置頁面上更新它。


      三、部署一個本地模型

      Xorbits推理(Xinference)使您能夠釋放尖端AI模型的全部潛力。

      注意

      • 有關安裝 Xinference Ollama的信息,請參閱此處
      • 有關支持的模型的完整列表,請參閱內置模型

      要部署本地模型,例如Mistral,請使用新約:


      1、檢查防火墻設置

      確保主機的防火墻允許端口9997上的入站連接。


      2、啟動一個 Xinference 實例

      $ xinference-local --host 0.0.0.0 --port 9997
      bash
       

      3、啟動您的本地模型

      啟動本地模型(Mistral),確保將 ${quantization} 替換為您選擇的量化方法:

      $ xinference launch -u mistral --model-name mistral-v0.1 --size-in-billions 7 --model-format pytorch --quantization ${quantization}
      bash
       

      4、添加新元素

      在RAGFlow中,單擊頁面右上角的徽標 > 模型提供者并將新會議添加到RAGFlow:

      在這里插入圖片描述


      5、完成基本的新會議設置

      輸入可訪問的基本URL,例如http://<your-xinference-endpoint-domain>:9997/v1

      對于重新排名模型,請使用 http://<your-xinference-endpoint-domain>:9997/v1/rerank作為基本URL。


      6、更新系統模型設置

      單擊您的徽標>模型提供商>系統模型設置以更新您的模型。

      您現在應該能夠從聊天模型下的下拉列表中找到mistral。

      如果您的本地模型是嵌入模型,您應該在嵌入模型下找到您的本地模型。


      7、更新聊天配置

      在 Chat Configuration 相應地更新您的聊天模式:

      如果您的本地模型是嵌入模型,請在知識庫的配置頁面上更新它。


      四、Deploy a local model using IPEX-LLM


      IPEX-LLM是一個PyTorch庫,用于在本地Intel CPU或GPU(包括iGPU或Arc、Flex和Max等離散GPU)上以低延遲運行LLM。它支持Linux和Windows系統上的Ollama。

      要使用 IPEX-LLM-acceleratedOllama 部署本地模型,例如Qwen2:


      1、檢查防火墻設置

      確保主機的防火墻允許端口11434上的入站連接。例如:

      sudo ufw allow 11434/tcp
      bash
       

      2、使用IPEX-LLM啟動Ollama服務


      2.1 為Ollama安裝IPEX-LLM

      注:IPEX-LLM在Linux和Windows系統上支持Ollama。

      有關為Ollama安裝IPEX-LLM的詳細信息,請參閱在Intel GPU Guide上使用IPEX-LLM運行 llama.cpp


      安裝后,您應該已經創建了一個Conda環境,例如llm-cpp,用于使用IPEX-LLM運行Ollama命令。


      2.2 初始化Ollama

      2.2.1 激活llm-cppConda環境并初始化Ollama:

      conda activate llm-cpp
      init-ollama
      bash
       

      2.2.2 如果安裝的ipex-llm[cpp]需要升級到Ollama二進制文件,請刪除舊的二進制文件并使用init-ollama(Linux)或init-ollama.bat(Windows)重新初始化Ollama。

      指向Ollama的符號鏈接出現在您的當前目錄中,您可以按照標準Ollama命令使用此可執行文件。


      2.3 推出Ollama服務

      2.3.1 將環境變量OLLAMA_NUM_GPU設置為999,以確保模型的所有層都在Intel GPU上運行;否則,某些層可能默認為CPU。

      2.3.2 為了在采用Linux操作系統(內核6.2)的英特爾Arc?A系列顯卡上獲得最佳性能,請在啟動Ollama服務之前設置以下環境變量:

      export SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS=1
      bash
       

      2.3.3 啟動Ollama服務:

      • Linux
      export OLLAMA_NUM_GPU=999
      export no_proxy=localhost,127.0.0.1
      export ZES_ENABLE_SYSMAN=1
      source /opt/intel/oneapi/setvars.sh
      export SYCL_CACHE_PERSISTENT=1
      
      ./ollama serve
      bash
       

      注:要使Ollama服務能夠接受來自所有IP地址的連接,請使用OLLAMA_HOST=0.0.0.0 ./ollama serve而不是簡單地./ollama serve

      控制臺顯示類似于以下內容的消息:

      img


      3、拉和運行Ollama模型


      3.1 拉動Ollama模型

      隨著Ollama服務的運行,打開一個新的終端并運行./ollama pull <model_name>(Linux)或ollama.exe pull <model_name>(Windows)以拉取所需的模型。例如,qwen2:latest

      img


      3.2 運行Ollama模型
      • Linux
      ./ollama run qwen2:latest
      bash
       

      4、配置RAGflow

      要在RAGFlow中啟用IPEX-LLM加速Ollama,您還必須完成RAGFlow中的配置。這些步驟與使用Ollama部署本地模型部分中概述的步驟相同:

      1. 添加Ollama
      2. 完成基本的Ollama設置
      3. 更新系統模型設置
      4. 更新聊天配置

      貢獻準則

      感謝您想為RAGFlow做出貢獻。本文檔提供了提交貢獻的指南和主要注意事項。

      • 要報告bug,請向我們提交GitHub問題
      • 如需更多問題,您可以探索現有討論或在討論中發起新的討論。

      一、你能貢獻什么


      下面的列表提到了你可以做出的一些貢獻,但它不是一個完整的列表。

      • 提出或實施新功能
      • 修復bug
      • 添加測試用例或演示
      • 發布博客或教程
      • 更新現有文檔、代碼或注釋。
      • 建議更用戶友好的錯誤代碼

      二、提交拉取請求(PR)


      1、一般工作流程

      1. 分叉我們的GitHub存儲庫。
      2. 將您的fork克隆到本地機器: git clone git@github.com:<yourname>/ragflow.git
      3. 創建本地分支: git checkout -b my-branch
      4. 在提交消息中提供足夠的信息 git commit -m 'Provide sufficient info in your commit message'
      5. 將更改提交到您的本地分支,并推送到GitHub:(包括必要的提交消息) git push origin my-branch.
      6. 提交拉取請求以供審核。

      2、在提交 PR 申請之前

      • 考慮將大型PR拆分為多個較小的獨立PR,以保持可追溯的開發歷史。
      • 確保您的PR只解決一個問題,或者保持任何不相關的更改很小。
      • 在貢獻新功能時添加測試用例。它們證明您的代碼功能正確,并防止未來更改帶來的潛在問題。

      3、描述你的 PR

      • 確保您的PR標題簡潔明了,提供所有必需的信息。
      • 如果適用,請參閱PR描述中相應的GitHub問題。
      • 在您的描述中包含足夠的設計細節以破壞更改或API更改。

      4、審查和合并PR

      • 確保您的PR在合并之前通過了所有持續集成(CI)測試。

      API參考

      RAGFlow提供RESTful API供您將其功能集成到第三方應用程序中。


      一、基本網址

      https://demo.ragflow.io/v1/
      shell
       

      二、授權


      RAGFlow的所有RESTful API都使用API密鑰進行授權,因此請確保其安全,不要將其暴露給前端。將您的API密鑰放在請求標頭中。

      Authorization: Bearer {API_KEY}
      buildoutcfg
       

      注意:在當前設計中,您從RAGFlow獲得的RESTful API密鑰不會過期。

      要獲取您的聊天API密鑰或代理API密鑰:

      對于聊天API密鑰:

      1. 在RAGFlow中,單擊頁面中間頂部的聊天選項卡。
      2. 將鼠標懸停在相應的對話框>Chat Bot API上以顯示聊天機器人API配置頁面。
      3. 單擊API密鑰>創建新密鑰以創建您的API密鑰。
      4. 復制并確保您的API密鑰安全。

      對于代理API密鑰:

      1. 在RAGFlow中,單擊頁面中間頂部的代理選項卡。
      2. 單擊您的代理>Chat Bot API以顯示聊天機器人API配置頁面。
      3. 單擊API密鑰>創建新密鑰以創建您的API密鑰。
      4. 復制并確保您的API密鑰安全。

      三、創建對話

      此方法為特定用戶創建(新聞)對話。


      請求


      請求URI
      方法 請求URI
      GET /api/new_conversation

      注意:您需要保存響應數據中返回的data.id值,即所有即將進行的對話的會話ID。


      請求參數
      名稱 類型 必需 描述
      user_id 字符串 分配給每個用戶的唯一標識符。user_id必須小于32個字符,并且不能為空。支持以下字符集: -26個小寫英文字母(a-z) -26個大寫英文字母(A-Z) -10位數字(0-9) -“_”, “-”, “.”

      響應


      {
          "data": {
              "create_date": "Fri, 12 Apr 2024 17:26:21 GMT",
              "create_time": 1712913981857,
              "dialog_id": "4f0a2e4cb9af11ee9ba20aef05f5e94f",
              "duration": 0.0,
              "id": "b9b2e098f8ae11ee9f45fa163e197198",
              "message": [
                  {
                      "content": "Hi, I'm your assistant, what can I do for you?",
                      "role": "assistant"
                  }
              ],
              "reference": [],
              "tokens": 0,
              "update_date": "Fri, 12 Apr 2024 17:26:21 GMT",
              "update_time": 1712913981857,
              "user_id": "<USER_ID_SET_BY_THE_CALLER>"
          },
          "retcode": 0,
          "retmsg": "success"
      }
      json
       

      四、獲取對話歷史記錄


      此方法檢索指定對話會話的歷史記錄。


      請求


      請求URI
      方法 請求URI
      GET /api/conversation/<id>

      請求參數
      名稱 類型 必需 描述
      id 字符串 分配給對話會話的唯一標識符。id必須小于32個字符,并且不能為空。支持以下字符集: -26個小寫英文字母(a-z) -26個大寫英文字母(A-Z) -10位數字(0-9) -“_”, “-”, “.”

      響應


      響應參數
      • message:指定對話會話中的所有對話。
        • role"user""assistant"
        • content:用戶或助手的文本內容。引用的格式類似于##0$$。中間的數字,在本例中為0,表示它指的是data.引用. chunks中的哪一部分。
      • user_id:這是由調用者設置的。
      • reference :每個參考對應于助理在 data.message
        • chunks

          • content_with_weight:塊的內容。
          • doc_name命中文檔的名稱。
          • img_id:塊的圖像ID。它是僅用于PDF、PPTX和圖像的可選字段。調用’GET’ /document/get/來檢索圖像。
          • positions:[page_number,[upleft角(x,y)],[右下角(x,y)]],塊位置,僅適用于PDF。
          • similarity:混合相似性。
          • term_similarity:關鍵字相似。
          • vector_similarity:嵌入相似性。
        • doc_aggs :

          • doc_id命中文檔的ID。調用’GET’ /document/get/來檢索文檔。
          • doc_name命中文檔的名稱。
          • count:文檔中命中塊的數量。

      {
          "data": {
              "create_date": "Mon, 01 Apr 2024 09:28:42 GMT",
              "create_time": 1711934922220,
              "dialog_id": "df4a4916d7bd11eeaa650242ac180006",
              "id": "2cae30fcefc711ee94140242ac180006",
              "message": [
                  {
                      "content": "Hi! I'm your assistant, what can I do for you?",
                      "role": "assistant"
                  },
                  {
                      "content": "What's the vit score for GPT-4?",
                      "role": "user"
                  },
                  {
                      "content": "The ViT Score for GPT-4 in the zero-shot scenario is 0.5058, and in the few-shot scenario, it is 0.6480. ##0$$",
                      "role": "assistant"
                  }
              ],
              "user_id": "<USER_ID_SET_BY_THE_CALLER>",
              "reference": [
                  {
                      "chunks": [
                          {
                              "chunk_id": "d0bc7892c3ec4aeac071544fd56730a8",
                              "content_ltks": "tabl 1:openagi task-solv perform under differ set for three closed-sourc llm . boldfac denot the highest score under each learn schema . metric gpt-3.5-turbo claude-2 gpt-4 zero few zero few zero few clip score 0.0 0.0 0.0 0.2543 0.0 0.3055 bert score 0.1914 0.3820 0.2111 0.5038 0.2076 0.6307 vit score 0.2437 0.7497 0.4082 0.5416 0.5058 0.6480 overal 0.1450 0.3772 0.2064 0.4332 0.2378 0.5281",
                              "content_with_weight": "<table><caption>Table 1: OpenAGI task-solving performances under different settings for three closed-source LLMs. Boldface denotes the highest score under each learning schema.</caption>\n<tr><th  rowspan=2 >Metrics</th><th  >GPT-3.5-turbo</th><th></th><th  >Claude-2</th><th  >GPT-4</th></tr>\n<tr><th  >Zero</th><th  >Few</th><th  >Zero Few</th><th  >Zero Few</th></tr>\n<tr><td  >CLIP Score</td><td  >0.0</td><td  >0.0</td><td  >0.0 0.2543</td><td  >0.0 0.3055</td></tr>\n<tr><td  >BERT Score</td><td  >0.1914</td><td  >0.3820</td><td  >0.2111 0.5038</td><td  >0.2076 0.6307</td></tr>\n<tr><td  >ViT Score</td><td  >0.2437</td><td  >0.7497</td><td  >0.4082 0.5416</td><td  >0.5058 0.6480</td></tr>\n<tr><td  >Overall</td><td  >0.1450</td><td  >0.3772</td><td  >0.2064 0.4332</td><td  >0.2378 0.5281</td></tr>\n</table>",
                              "doc_id": "c790da40ea8911ee928e0242ac180005",
                              "doc_name": "OpenAGI When LLM Meets Domain Experts.pdf",
                              "img_id": "afab9fdad6e511eebdb20242ac180006-d0bc7892c3ec4aeac071544fd56730a8",
                              "important_kwd": [],
                              "kb_id": "afab9fdad6e511eebdb20242ac180006",
                              "positions": [
                                  [
                                      9.0,
                                      159.9383341471354,
                                      472.1773274739583,
                                      223.58013916015625,
                                      307.86692301432294
                                  ]
                              ],
                              "similarity": 0.7310340654129031,
                              "term_similarity": 0.7671974387781668,
                              "vector_similarity": 0.40556370512552886
                          },
                          {
                              "chunk_id": "7e2345d440383b756670e1b0f43a7007",
                              "content_ltks": "5.5 experiment analysi the main experiment result are tabul in tab . 1 and 2 , showcas the result for closed-sourc and open-sourc llm , respect . the overal perform is calcul a the averag of cllp 8 bert and vit score . ",
                              "content_with_weight": "5.5 Experimental Analysis\nThe main experimental results are tabulated in Tab. 1 and 2, showcasing the results for closed-source and open-source LLMs, respectively. The overall performance is calculated as the average of CLlP\n8\nBERT and ViT scores.",
                              "doc_id": "c790da40ea8911ee928e0242ac180005",
                              "doc_name": "OpenAGI When LLM Meets Domain Experts.pdf",
                              "img_id": "afab9fdad6e511eebdb20242ac180006-7e2345d440383b756670e1b0f43a7007",
                              "important_kwd": [],
                              "kb_id": "afab9fdad6e511eebdb20242ac180006",
                              "positions": [
                                  [
                                      8.0,
                                      107.3,
                                      508.90000000000003,
                                      686.3,
                                      697.0
                                  ],
                              ],
                              "similarity": 0.6691508616357027,
                              "term_similarity": 0.6999011754270821,
                              "vector_similarity": 0.39239803751328806
                          },
                      ],
                      "doc_aggs": [
                          {
                              "count": 8,
                              "doc_id": "c790da40ea8911ee928e0242ac180005",
                              "doc_name": "OpenAGI When LLM Meets Domain Experts.pdf"
                          }
                      ],
                      "total": 8
                  },
              ],
              "update_date": "Tue, 02 Apr 2024 09:07:49 GMT",
              "update_time": 1712020069421
          },
          "retcode": 0,
          "retmsg": "success"
      }
      json
       

      五、得到答案

      此方法從RAGFlow Chat或RAGFlow Agent檢索用戶最新問題的答案。


      請求


      請求URI
      方法 請求URI
      POST /api/completion

      請求參數
      名稱 類型 必填 描述
      conversation_id 字符串 對話會話的ID。調用’GET’ /new_conversation檢索ID。
      messages json JSON表單中的最新問題,如[{"role": "user", "content": "How are you doing!"}]
      quote bool 默認值:false
      stream bool 默認值:true
      doc_ids 字符串 用逗號分隔的文檔ID,如c790da40ea8911ee928e0242ac180005,23dsf34ree928e0242ac180005。檢索到的內容將僅限于這些文檔。

      響應

      • answer:用戶最新問題的答案。
      • reference
        • chunks :檢索到的有助于答案的塊。

          • content_with_weight:塊的內容。

          • doc_name命中文檔的名稱。

          • img_id:塊的圖像ID。它是僅用于PDF、PPTX和圖像的可選字段。調用’GET’ /document/get/來檢索圖像。

          • positions:[page_number,[upleft角(x,y)],[右下角(x,y)]],塊位置,僅適用于PDF。

          • similarity:混合相似性。

          • term_similarity:關鍵字相似。

          • vector_similarity:嵌入相似性。

        • doc_aggs :

          • doc_id: ID of the hit document. Call ‘GET’ /document/get/ to retrieve the document.
          • doc_name: Name of the hit document.
          • count: The number of hit chunks in this document.

      {
          "data": {
            "answer": "The ViT Score for GPT-4 in the zero-shot scenario is 0.5058, and in the few-shot scenario, it is 0.6480. ##0$$",
            "reference": {
              "chunks": [
                {
                  "chunk_id": "d0bc7892c3ec4aeac071544fd56730a8",
                  "content_ltks": "tabl 1:openagi task-solv perform under differ set for three closed-sourc llm . boldfac denot the highest score under each learn schema . metric gpt-3.5-turbo claude-2 gpt-4 zero few zero few zero few clip score 0.0 0.0 0.0 0.2543 0.0 0.3055 bert score 0.1914 0.3820 0.2111 0.5038 0.2076 0.6307 vit score 0.2437 0.7497 0.4082 0.5416 0.5058 0.6480 overal 0.1450 0.3772 0.2064 0.4332 0.2378 0.5281",
                  "content_with_weight": "<table><caption>Table 1: OpenAGI task-solving performances under different settings for three closed-source LLMs. Boldface denotes the highest score under each learning schema.</caption>\n<tr><th  rowspan=2 >Metrics</th><th  >GPT-3.5-turbo</th><th></th><th  >Claude-2</th><th  >GPT-4</th></tr>\n<tr><th  >Zero</th><th  >Few</th><th  >Zero Few</th><th  >Zero Few</th></tr>\n<tr><td  >CLIP Score</td><td  >0.0</td><td  >0.0</td><td  >0.0 0.2543</td><td  >0.0 0.3055</td></tr>\n<tr><td  >BERT Score</td><td  >0.1914</td><td  >0.3820</td><td  >0.2111 0.5038</td><td  >0.2076 0.6307</td></tr>\n<tr><td  >ViT Score</td><td  >0.2437</td><td  >0.7497</td><td  >0.4082 0.5416</td><td  >0.5058 0.6480</td></tr>\n<tr><td  >Overall</td><td  >0.1450</td><td  >0.3772</td><td  >0.2064 0.4332</td><td  >0.2378 0.5281</td></tr>\n</table>",
                  "doc_id": "c790da40ea8911ee928e0242ac180005",
                  "doc_name": "OpenAGI When LLM Meets Domain Experts.pdf",
                  "img_id": "afab9fdad6e511eebdb20242ac180006-d0bc7892c3ec4aeac071544fd56730a8",
                  "important_kwd": [],
                  "kb_id": "afab9fdad6e511eebdb20242ac180006",
                  "positions": [
                    [
                      9.0,
                      159.9383341471354,
                      472.1773274739583,
                      223.58013916015625,
                      307.86692301432294
                    ]
                  ],
                  "similarity": 0.7310340654129031,
                  "term_similarity": 0.7671974387781668,
                  "vector_similarity": 0.40556370512552886
                },
                {
                  "chunk_id": "7e2345d440383b756670e1b0f43a7007",
                  "content_ltks": "5.5 experiment analysi the main experiment result are tabul in tab . 1 and 2 , showcas the result for closed-sourc and open-sourc llm , respect . the overal perform is calcul a the averag of cllp 8 bert and vit score . here , onli the task descript of the benchmark task are fed into llm(addit inform , such a the input prompt and llm\u2019output , is provid in fig . a.4 and a.5 in supplementari). broadli speak , closed-sourc llm demonstr superior perform on openagi task , with gpt-4 lead the pack under both zero-and few-shot scenario . in the open-sourc categori , llama-2-13b take the lead , consist post top result across variou learn schema--the perform possibl influenc by it larger model size . notabl , open-sourc llm significantli benefit from the tune method , particularli fine-tun and\u2019rltf . these method mark notic enhanc for flan-t5-larg , vicuna-7b , and llama-2-13b when compar with zero-shot and few-shot learn schema . in fact , each of these open-sourc model hit it pinnacl under the rltf approach . conclus , with rltf tune , the perform of llama-2-13b approach that of gpt-3.5 , illustr it potenti .",
                  "content_with_weight": "5.5 Experimental Analysis\nThe main experimental results are tabulated in Tab. 1 and 2, showcasing the results for closed-source and open-source LLMs, respectively. The overall performance is calculated as the average of CLlP\n8\nBERT and ViT scores. Here, only the task descriptions of the benchmark tasks are fed into LLMs (additional information, such as the input prompt and LLMs\u2019 outputs, is provided in Fig. A.4 and A.5 in supplementary). Broadly speaking, closed-source LLMs demonstrate superior performance on OpenAGI tasks, with GPT-4 leading the pack under both zero- and few-shot scenarios. In the open-source category, LLaMA-2-13B takes the lead, consistently posting top results across various learning schema--the performance possibly influenced by its larger model size. Notably, open-source LLMs significantly benefit from the tuning methods, particularly Fine-tuning and\u2019 RLTF. These methods mark noticeable enhancements for Flan-T5-Large, Vicuna-7B, and LLaMA-2-13B when compared with zero-shot and few-shot learning schema. In fact, each of these open-source models hits its pinnacle under the RLTF approach. Conclusively, with RLTF tuning, the performance of LLaMA-2-13B approaches that of GPT-3.5, illustrating its potential.",
                  "doc_id": "c790da40ea8911ee928e0242ac180005",
                  "doc_name": "OpenAGI When LLM Meets Domain Experts.pdf",
                  "img_id": "afab9fdad6e511eebdb20242ac180006-7e2345d440383b756670e1b0f43a7007",
                  "important_kwd": [],
                  "kb_id": "afab9fdad6e511eebdb20242ac180006",
                  "positions": [
                    [
                      8.0,
                      107.3,
                      508.90000000000003,
                      686.3,
                      697.0
                    ]
                  ],
                  "similarity": 0.6691508616357027,
                  "term_similarity": 0.6999011754270821,
                  "vector_similarity": 0.39239803751328806
                }
              ],
              "doc_aggs": {
                "OpenAGI When LLM Meets Domain Experts.pdf": 4
              },
              "total": 8
            }
          },
          "retcode": 0,
          "retmsg": "success"
      }
      json
       

      六、獲取文檔內容

      此方法檢索文檔的內容。


      請求


      請求URI
      方法 請求URI
      GET /document/get/<id>

      響應


      二進制文件。


      七、上傳文件

      此方法將特定文件上傳到指定的知識庫。


      請求


      請求URI
      方法 請求URI
      POST /api/document/upload

      響應參數
      名稱 類型 必填 描述
      file 文件 要上傳的文件。
      kb_name 字符串 要上傳文件的知識庫名稱。
      parser_id 字符串 要使用的解析方法(塊模板)。 -“樸素”:一般; -“qa”:問答; -“手冊”:手冊; -“表格”:表格; -“紙張”:紙張; -“法律”:法律; -“演示文稿”:演示文稿; -“圖片”:圖片; -“一”:一。
      run 字符串 1:自動啟動文件解析。如果未設置parser_id,RAGFlow默認使用通用模板。

      響應


      {
          "data": {
              "chunk_num": 0,
              "create_date": "Thu, 25 Apr 2024 14:30:06 GMT",
              "create_time": 1714026606921,
              "created_by": "553ec818fd5711ee8ea63043d7ed348e",
              "id": "41e9324602cd11ef9f5f3043d7ed348e",
              "kb_id": "06802686c0a311ee85d6246e9694c130",
              "location": "readme.txt",
              "name": "readme.txt",
              "parser_config": {
                  "field_map": {
                  },
                  "pages": [
                      [
                          0,
                          1000000
                      ]
                  ]
              },
              "parser_id": "general",
              "process_begin_at": null,
              "process_duation": 0.0,
              "progress": 0.0,
              "progress_msg": "",
              "run": "0",
              "size": 929,
              "source_type": "local",
              "status": "1",
              "thumbnail": null,
              "token_num": 0,
              "type": "doc",
              "update_date": "Thu, 25 Apr 2024 14:30:06 GMT",
              "update_time": 1714026606921
          },
          "retcode": 0,
          "retmsg": "success"
      }
      json
       

      八、獲取文檔切片


      此方法通過 doc_name 或 doc_id 檢索特定文檔的塊。


      Request


      請求URI
      方法 請求URI
      GET /api/list_chunks

      請求參數
      名稱 類型 必填 描述
      doc_name 字符串 知識庫中文檔的名稱。未設置doc_id不得為空。
      doc_id 字符串 知識庫中文檔的ID。未設置doc_name不得為空。

      響應


      {
          "data": [
              {
                  "content": "Figure 14: Per-request neural-net processingof RL-Cache.\n103\n(sn)\nCPU\n 102\nGPU\n8101\n100\n8\n16 64 256 1K\n4K",
                  "doc_name": "RL-Cache.pdf",
                  "img_id": "0335167613f011ef91240242ac120006-b46c3524952f82dbe061ce9b123f2211"
              },
              {
                  "content": "4.3 ProcessingOverheadof RL-CacheACKNOWLEDGMENTSThis section evaluates how effectively our RL-Cache implemen-tation leverages modern multi-core CPUs and GPUs to keep the per-request neural-net processing overhead low. Figure 14 depictsThis researchwas supported inpart by the Regional Government of Madrid (grant P2018/TCS-4499, EdgeData-CM)andU.S. National Science Foundation (grants CNS-1763617 andCNS-1717179).REFERENCES",
                  "doc_name": "RL-Cache.pdf",
                  "img_id": "0335167613f011ef91240242ac120006-d4c12c43938eb55d2d8278eea0d7e6d7"
              }
          ],
          "retcode": 0,
          "retmsg": "success"
      }
      json
       

      九、獲取文檔列表

      此方法從指定的知識庫中檢索文檔列表。


      請求


      請求URI
      方法 請求URI
      POST /api/list_kb_docs

      請求參數
      名稱 類型 必需 描述
      kb_name 字符串 知識庫的名稱,從中獲取文檔列表。
      page int 頁數,默認值:1。
      page_size int 每個頁面的文檔數,默認值:15。
      orderby 字符串 chunk_numcreate_timesize,默認值:create_time
      desc bool 默認值:True。
      keywords 字符串 文檔名稱的關鍵字。

      響應


      {
          "data": {
              "docs": [
                  {
                      "doc_id": "bad89a84168c11ef9ce40242ac120006",
                      "doc_name": "test.xlsx"
                  },
                  {
                      "doc_id": "641a9b4013f111efb53f0242ac120006",
                      "doc_name": "1111.pdf"
                  }
              ],
              "total": 2
          },
          "retcode": 0,
          "retmsg": "success"
      }
      json
       

      十、刪除文件

      此方法按文檔ID或名稱刪除文檔。


      請求

      請求URI
      方法 請求URI
      DELETE /api/document

      請求參數
      名稱 類型 必需 說明
      doc_names 列表 文檔名稱列表。如果未設置doc_ids,則不得為空。
      doc_ids 列表 文檔ID列表。如果未設置doc_names,則不得為空。

      響應


      {
          "data": true,
          "retcode": 0,
          "retmsg": "success"
      }
      json
       

      常見問題


      一、常見問題


      1、RAGFlow與其他RAG產品的區別是什么?

      盡管LLM顯著提高了自然語言處理(NLP),但“垃圾輸入垃圾輸出”的現狀保持不變。作為回應,與其他檢索增強生成(RAG)產品相比,RAGFlow引入了兩個獨特的功能。

      • 細粒度的文檔解析:文檔解析涉及圖像和表格,您可以根據需要靈活地進行干預。
      • 減少幻覺的可追溯答案:您可以信任RAGFlow的回復,因為您可以查看支持它們的引用和參考文獻。

      2、RAGFlow支持哪些語言?

      英文,簡體中文,繁體中文。


      3.哪些嵌入模型可以部署在本地?

      • BAAI/bge-large-zh-v1.5
      • BAAI/bge-base-en-v1.5
      • BAAI/bge-large-en-v1.5
      • BAAI/bge-small-en-v1.5
      • BAAI/bge-small-zh-v1.5
      • jinaai/jina-embeddings-v2-base-en
      • jinaai/jina-embeddings-v2-small-en
      • nomic-ai/nomic-embed-text-v1.5
      • sentence-transformers/all-MiniLM-L6-v2
      • maidalun1020/bce-embedding-base_v1

      二、表現


      1、為什么RAGFlow解析文檔的時間比LangChain長?

      我們使用我們的視覺模型在文檔預處理任務中投入了大量精力,例如布局分析、表格結構識別和OCR(光學字符識別)。這有助于增加所需的時間。


      2、為什么RAGFlow比其他項目需要更多的資源?

      RAGFlow有許多用于文檔結構解析的內置模型,這些模型考慮了額外的計算資源。


      三、特征


      1、RAGFlow支持哪些架構或設備?

      目前,我們只支持x86 CPU和Nvidia GPU。


      2、您是否提供與第三方應用程序集成的API?

      相應的API現在可用。有關詳細信息,請參閱 RAGFlow API參考


      3、你支持流輸出嗎?

      不,此功能仍在開發中。歡迎投稿。


      4、是否可以通過網址分享對話?

      是的,此功能現已可用。


      5、您是否支持多輪對話,即引用以前的對話作為當前對話的上下文?

      此功能和相關API仍在開發中。歡迎投稿。


      四、故障排除


      1、docker映像的問題


      1.1 How to build the RAGFlow image from scratch?

      $ git clone https://github.com/infiniflow/ragflow.git
      $ cd ragflow
      $ docker build -t infiniflow/ragflow:latest .
      $ cd ragflow/docker
      $ chmod +x ./entrypoint.sh
      $ docker compose up -d
      shell
       

      1.2 process "/bin/sh -c cd ./web && npm i && npm run build" failed

      1.2.1 在 Docker 內檢查網絡,比如:

      curl https://hf-mirror.com
      bash
       

      1.2.2 如果您的網絡運行良好,則問題出在Docker網絡配置上。替換Docker構建命令:

      docker build -t infiniflow/ragflow:vX.Y.Z.
      bash
       

      有了這個:

      docker build -t infiniflow/ragflow:vX.Y.Z. --network host
      bash
       

      2、huggingface 模型的問題


      2.1無法訪問 https://huggingface.co

      默認情況下,本地部署的RAGflow會從 Huggingface網站 下載OCR和嵌入模塊。
      如果您的機器無法訪問此站點,則會發生以下錯誤,PDF解析失敗:

      FileNotFoundError: [Errno 2] No such file or directory: '/root/.cache/huggingface/hub/models--InfiniFlow--deepdoc/snapshots/be0c1e50eef6047b412d1800aa89aba4d275f997/ocr.res'
      shell
       

      要解決此問題,請改用 https://hf-mirror.com

      1. 停止所有容器并刪除所有相關資源:
      cd ragflow/docker/
      docker compose down
      bash
       

      1. https://huggingface.co替換為 ragflow/docker/docker-comp.yml 中的 https://hf-mirror.com
      2. 啟動服務器:
      docker compose up -d 
      bash
       

      2.2MaxRetryError: HTTPSConnectionPool(host='hf-mirror.com', port=443)

      此錯誤表明您無法訪問Internet或無法連接到hf-mirror.com。請嘗試以下操作:

      1. 手動將資源文件從 huggingface.co/InfiniFlow/deepdoc下載到本地文件夾 ~/deepdoc
      2. 向 docker-comp.yml 添加一個卷,例如:
      - ~/deepdoc:/ragflow/rag/res/deepdoc
      shell
       

      2.3 FileNotFoundError
      FileNotFoundError: [Errno 2] No such file or directory: '/root/.cache/huggingface/hub/models--InfiniFlow--deepdoc/snapshots/FileNotFoundError: [Errno 2] No such file or directory: '/ragflow/rag/res/deepdoc/ocr.res'be0c1e50eef6047b412d1800aa89aba4d275f997/ocr.res'
      shell
       

      2.3.1 從Docker中檢查您的網絡,例如:

      curl https://hf-mirror.com
      bash
       

      2.3.2 運行ifconfig檢查mtu值,如果服務器的mtu1450而容器中的NIC的mtu1500,這種不匹配可能會導致網絡不穩定,調整mtu策略如下:

      vim docker-compose-base.yml
      # Original configuration:
      networks:
        ragflow:
          driver: bridge
      # Modified configuration:
      networks:
        ragflow:
          driver: bridge
          driver_opts:
            com.docker.network.driver.mtu: 1450
      shell
       

      3、RAGFlow服務器的問題


      3.1WARNING: can't find /raglof/rag/res/borker.tm

      忽略此警告并繼續。可以忽略所有系統警告。


      3.2network anomaly There is an abnormality in your network and you cannot connect to the server.

      在這里插入圖片描述


      除非服務器完全初始化,否則您不會登錄到RAGFlow。運行docker logs -f ragflow-server

      如果您的系統顯示以下內容,則服務器已成功初始化:

          ____                 ______ __
         / __ \ ____ _ ____ _ / ____// /____  _      __
        / /_/ // __ `// __ `// /_   / // __ \| | /| / /
       / _, _// /_/ // /_/ // __/  / // /_/ /| |/ |/ /
      /_/ |_| \__,_/ \__, //_/    /_/ \____/ |__/|__/
                    /____/
      
       * Running on all addresses (0.0.0.0)
       * Running on http://127.0.0.1:9380
       * Running on http://x.x.x.x:9380
       INFO:werkzeug:Press CTRL+C to quit
      shell
       

      4、RAGFlow后端服務的問題


      4.1dependency failed to start: container ragflow-mysql is unhealthy

      dependency failed to start: container ragflow-mysql is unhealthy 意味著你的MySQL容器無法啟動。嘗試 在 docker-compose-base.yml 替換 mysql:5.7.18 與mariadb:10.5.8


      4.2Realtime synonym is disabled, since no redis connection

      忽略此警告并繼續。可以忽略所有系統警告。

      在這里插入圖片描述


      4.3 為什么我的文檔解析在1%以下停滯不前?

      在這里插入圖片描述


      單擊“解析狀態”欄旁邊的紅叉,然后 重新啟動解析過程 以查看問題是否仍然存在。如果問題仍然存在并且您的RAGFlow部署在本地,請嘗試以下操作:

      1. 檢查您的RAGFlow服務器的日志以查看它是否正常運行:
      docker logs -f ragflow-server
      bash
       

      1. 檢查 task_executor.py 進程是否存在。
      2. 檢查您的RAGFlow服務器是否可以訪問 hf-mirror.com 或 huggingface.com。

      4.4 為什么我的pdf解析在接近完成時停止,而日志沒有顯示任何錯誤?

      單擊“解析狀態”欄旁邊的紅叉,然后重新啟動解析過程以查看問題是否仍然存在。如果問題仍然存在并且您的RAGFlow部署在本地,解析過程可能會因RAM不足而終止。嘗試通過增加docker/. env中的MEM_LIMIT值來增加內存分配。

      注意:確保重新啟動RAGFlow服務器以使更改生效!

      docker compose stop
      bash
       

      docker compose up -d
      bash
       

      在這里插入圖片描述


      4.5 Index failure

      索引失敗通常表示 Elasticsearch 服務不可用。


      4.6 如何查看RAGFlow的日志?
      tail -f path_to_ragflow/docker/ragflow-logs/rag/*.log
      bash
       

      4.7如何檢查RAGFlow中每個組件的狀態?
      $ docker ps
      bash
       

      如果您的所有RAGFlow組件都正常運行,系統會顯示以下內容:

      5bc45806b680   infiniflow/ragflow:latest     "./entrypoint.sh"        11 hours ago   Up 11 hours               0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:9380->9380/tcp, :::9380->9380/tcp   ragflow-server
      91220e3285dd   docker.elastic.co/elasticsearch/elasticsearch:8.11.3   "/bin/tini -- /usr/l…"   11 hours ago   Up 11 hours (healthy)     9300/tcp, 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp           ragflow-es-01
      d8c86f06c56b   mysql:5.7.18        "docker-entrypoint.s…"   7 days ago     Up 16 seconds (healthy)   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp     ragflow-mysql
      cd29bcb254bc   quay.io/minio/minio:RELEASE.2023-12-20T01-00-02Z       "/usr/bin/docker-ent…"   2 weeks ago    Up 11 hours      0.0.0.0:9001->9001/tcp, :::9001->9001/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp     ragflow-minio
      shell
       

      4.8 Exception: Can't connect to ES cluster

      4.8.1 檢查您的Elasticsearch組件的狀態:

      docker ps
      bash
       

      RAGFlow中“健康 ”Elasticsearch組件的狀態應如下所示:

      91220e3285dd   docker.elastic.co/elasticsearch/elasticsearch:8.11.3   "/bin/tini -- /usr/l…"   11 hours ago   Up 11 hours (healthy)     9300/tcp, 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp           ragflow-es-01
      shell
       

      4.8.2 如果您的容器一直重啟,請確保vm.max_map_count>=262144符合 此自述文件。如果您希望永久保留更改,則需要更新 /etc/sysctl.conf 中的vm.max_map_count值。此配置僅適用于Linux。

      4.8.3 如果您的問題仍然存在,請確保ES主機設置正確:

      • 如果您使用Docker運行RAGFlow,它位于docker/service_conf. yml中。設置如下:
      es:
        hosts: 'http://es01:9200'
      shell
       

      • 如果您在Docker之外運行RAGFlow,請使用以下命令驗證conf/service_conf. yml中的ES主機設置:
      curl http://<IP_OF_ES>:<PORT_OF_ES>
      bash
       

      4.9 無法啟動ES容器并獲取Elasticsearch did not exit normally

      這是因為您忘記更新**/etc/sysctl.conf** 中的vm.max_map_count值,并且您對該值的更改在系統重新啟動后被重置。


      4.10 {"data":null,"retcode":100,"retmsg":"<NotFound '404: Not Found'>"}

      您的IP地址或端口號可能不正確。如果您使用默認配置,請在瀏覽器中輸入http://<IP_OF_YOUR_MACHINE>不是9380,也不需要端口號!)。這應該行得通。


      4.11 Ollama - Mistral instance running at 127.0.0.1:11434 but cannot add Ollama as model in RagFlow

      正確的Ollama IP地址和端口對于將模型添加到Ollama至關重要:

      • 如果您在demo.ragflow.io,請確保托管Ollama的服務器具有可公開訪問的IP地址。請注意,127.0.0.1不是可公開訪問的IP地址。
      • 如果您在本地部署RAGFlow,請確保Ollama和RAGFlow在同一個LAN中并且可以相互通信。

      4.12 你是否提供使用深度文檔解析PDF或其他文件的示例?

      是的,我們有。請參閱rag/app文件夾下的Python文件。


      4.13 為什么我無法將10MB+文件上傳到本地部署的RAGFlow?

      您可能忘記更新MAX_CONTENT_LENGTH環境變量:

      4.13.1 將環境變量MAX_CONTENT_LENGTH添加到ragflow/docker/. env

      MAX_CONTENT_LENGTH=100000000
      shell
       

      4.13.2 更新docker-comail. yml:

      environment:
        - MAX_CONTENT_LENGTH=${MAX_CONTENT_LENGTH}
      shell
       

      4.13.3 重新啟動RAGFlow服務器:

      docker compose up ragflow -d
      shell
       

      現在您應該能夠上傳大小小于100MB的文件。


      4.14 Table 'rag_flow.document' doesn't exist

      啟動RAGFlow服務器時會發生此異常。嘗試以下操作:

      4.14.1 延長睡眠時間:轉到 docker/entrypoint.sh,找到第26行,并將sleep 60替換為sleep 280

      4.14.2 如果使用Windows,請確保entrypoint.sh具有LF端行。

      4.14.3 轉到 docker/docker-comp.yml,添加以下內容:

      ./entrypoint.sh:/ragflow/entrypoint.sh
      shell
       

      4.14.4 更改目錄:

      cd docker
      bash
       

      4.14.5 停止RAGFlow服務器:

      docker compose stop
      bash
       

      4.14.6 重新啟動RAGFlow服務器:

      docker compose up
      bash
       

      4.15 hint : 102 Fail to access model Connection error

      在這里插入圖片描述


      4.15.1 確保RAGFlow服務器可以訪問基本URL。

      4.15.2 不要忘記將 /v1/ 附加到 http://IP:port:http://IP:port/v1/


      4.16FileNotFoundError: [Errno 2] No such file or directory

      4.16.1 檢查您的minio容器的狀態是否健康:

      docker ps
      bash
       

      4.16.2 確保 docker/.env 中MySQL和MinIO的用戶名和密碼設置與 docker/service_conf.yml 中的一致。


      五、用法

      1、如何增加RAGFlow響應的長度?

      1. 右鍵單擊所需對話框以顯示聊天配置窗口。
      2. 切換到模型設置選項卡并調整最大令牌滑塊以獲得所需的長度。
      3. 單擊確定以確認您的更改。

      2、空響應 是什么意思?如何設置?

      如果從您的知識庫中沒有檢索到任何內容,您將限制 系統對您在空響應中 指定的內容 的響應。
      如果您沒有在空響應中指 定任何內容,您讓您的LLM即興發揮,給它一個幻覺的機會。


      3、我可以在某個地方設置OpenAI的基本URL嗎?

      在這里插入圖片描述


      4、如何使用本地部署的LLM運行RAGFlow?

      您可以使用Ollama部署本地LLM。有關詳細信息,請參閱此處


      5、如何鏈接ragflow和ollama服務器?

      • 如果RAGFlow是本地部署的,請確保您的RAGFlow和Ollama位于同一個LAN中。
      • 如果您使用我們的在線演示,請確保您的Ollama服務器的IP地址是公開且可訪問的。

      6、如何配置RAGFlow以100%匹配的結果響應,而不是利用LLM?

      1. 單擊頁面中間頂部的知識庫。
      2. 右鍵單擊所需的知識庫以顯示配置對話框。
      3. 選擇問答作為塊方法,然后單擊保存以確認您的更改。

      7、我需要連接到Redis嗎?

      不,不需要連接到Redis。


      8、Error: Range of input length should be [1, 30000]

      發生此錯誤是因為匹配您的搜索條件的塊太多。嘗試減少TopN并增加相似度閾值來解決此問題:

      1. 單擊頁面中間頂部的聊天。
      2. 右鍵單擊所需的對話>編輯>提示引擎
      3. 降低TopN和/或提高Silimality閾值。
      4. 單擊確定以確認您的更改。

      在這里插入圖片描述


      9、如何升級RAGFlow?

      您可以將RAGFlow升級到開發版本或最新版本:

      • 開發版本面向開發人員和貢獻者。它們每晚發布,可能會崩潰,因為它們沒有經過全面測試。我們不能保證它們的有效性,您需要自行承擔嘗試最新、未經測試的功能的風險。
      • 最新版本是指最近正式發布的版本。它很穩定,最適合普通用戶。

      要將RAGFlow升級到開發版本:

      1)拉取最新的源代碼

      cd ragflow
      git pull
      bash
       

      2)如果你用了

      docker compose up -d
      shell
       

      要啟動RAGFlow服務器:

      docker pull infiniflow/ragflow:dev
      bash
       

      docker compose up ragflow -d
      bash
       

      3)如果你用了

      docker compose -f docker-compose-CN.yml up -d
      shell
       

      要啟動RAGFlow服務器:

      docker pull swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow:dev
      shell
       

      docker compose -f docker-compose-CN.yml up -d
      bash
       

      要將RAGFlow升級到最新版本:

      1)更新ragflow/docker/. env如下:

      RAGFLOW_VERSION=latest
      bash
       

      2)拉取最新源代碼:

      cd ragflow
      git pull
      bash
       

      3)如果您使用docker compose up -d來啟動RAGFlow服務器:

      docker pull infiniflow/ragflow:latest
      bash
       

      docker compose up ragflow -d
      bash
       

      4)如果使用docker compose -f docker-compose-CN.yml up -d啟動RAGFlow服務器:

      docker pull swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow:latest
      bash
       

      docker compose -f docker-compose-CN.yml up -d
      bash
       

      2024-08-28(三)

       
      LLM、AIGC、RAG 開發交流

      Dify的安裝部署我已經寫過了,簡單的模型配置我也在前面進行了講解,今天我們主要來講講如何使用Dify。

      一、創建應用

      我們可以通過三種方式在Dify的工作室內創建應用

       

      01

      基于應用模板創建(新手推薦)

       

      02

      創建一個空白應用

       

      03

      通過DSL文件(本地/在線)創建應用

      1、從模板創建應用

      初次使用 Dify 時,你可能對于應用創建比較陌生。為了幫助新手用戶快速了解在 Dify 上能夠構建哪些類型的應用,Dify 團隊內的提示詞工程師已經創建好了多場景、高質量的應用模板。

       

       

      彈出的頁面中,默認是推薦,可以在左上角的菜單中進行篩選:

       

       

      任意選擇一個你喜歡或者需要的模板,鼠標放在模板上會浮現出【使用改模板】的按鈕,點擊按鈕,然后選擇應用圖標,填寫應用名稱和描述(當然也可以不用直接點創建),將改模板添加至工作區。

       

       

       

       

       

       

      進入這個模板后,可以基于模板的不同節點,調整模板使用的大模型,改成自己配置的模型即可

       

       

      在畫布上,鼠標右鍵可以選擇“添加節點”、“添加注釋”、“運行”和導入導出DSL等功能,詳細的功能可以自己研究

       

       

      調整完畢后,可以點擊右上角的運行按鈕測試你的應用

       

       

      點擊運行后可以看到詳情和追蹤tab的內容

       

       

       

       

      可以實時追蹤運行過程,點擊每個節點都可以看到過程數據,等完全執行完畢,可以去結果tab中,查看最終的結果

       

       

      2、創建一個空白應用

      當你已經熟悉了怎么使用,想自己創建一個應用,自己編輯,那就可以選擇創建空白應用:

       

       

      點擊后會跳轉到創建空白應用的頁面,Dify提供了五種應用類型,包括適合新手的【聊天助手】【Agent】【文本生成應用】,以及適合進階用戶的【Chatflow】【工作流】類型,可以填寫自己的應用名稱和頭像即可開始設計自己的應用了:

       

       

      我利用Dify自帶的工具,做了一個單頁面抓取的工作流應用,很簡單的結構,就是操作一下看下效果:

       

       

      其中單頁面抓取這個節點是使用的Firecrawl的,需要額外授權才可以使用,授權的方式也很簡單,就是首先你要有對應工具的賬號,然后直接去官網拿到對應的API秘鑰,之后再工具菜單頁面找到你需要使用的對應工具的卡片,點擊授權即可,我的頁面是已經授權了,未授權的會是藍色的“去授權”按鈕。

       

       

       

       

      點擊“去授權”按鈕后,填寫API秘鑰和API URL 即可,保存后就會顯示“已授權”:

       

       

       

       

      3、通過DSL文件創建應用

      Dify DSL 是由 Dify.AI 所定義的 AI 應用工程文件標準,文件格式為 YML。該標準涵蓋應用在 Dify 內的基本描述、模型參數、編排配置等信息。

       

       

      點擊導入DSL文件后,會給出彈框,讓你去上傳對應的DSL文件,也可以選擇URL,則是輸入DSL文件的URL,兩種方式二選一就行:

       

       

      導入后,也會在工作室區域顯示導入的應用。導入 DSL 文件時將校對文件版本號。如果 DSL 版本號差異較大,有可能會出現兼容性問題。

      二、應用類型

      之前就說了,Dify為應用提供了五種應用類型,分別是【聊天助手】【Agent】【文本生成應用】【Chatflow】【工作流】,我們上面一直是以工作流的方式創建的應用,下面我們就簡單的描述下各種類型的應用的界面。

      1、聊天助手

      通過簡單的配置快速搭建一個基于 LLM 的對話機器人。支持切換為 Chatflow 編排。

       

       

      創建聊天助手后,會自動跳轉到聊天助手概覽頁面,點擊左側菜單“編排”來開始設置:

       

       

      右上角會選擇默認的模型,我們可以通過右上角調整使用的模型:

       

       

      也可以點擊“多個模型進行調試”,來對比哪個模型的效果更好,此處我們就不做過多介紹,有興趣的小伙伴們可以自己研究:

       

       

       

       

      我們下面做一個面試官的例子來介紹一下相關內容。

      填寫提示詞

      提示詞用于約束 AI 給出專業的回復,讓回應更加精確。你可以借助內置的提示生成器,編寫合適的提示詞。提示詞內支持插入表單變量,例如{{input}}。提示詞中的變量的值會替換成用戶填寫的值。

      我們點擊提示詞框右上角的“生成”,彈出提示詞生成器:

       

       

      我想讓你擔任{{jobName}}面試官。我將成為候選人,您將向我詢問{{jobName})Java開發工程師職位的面試問題。

       

       

      點擊應用即可,返回到編排頁面后,可以通過右下角管理不同的功能,可以根據自己不同的需求進行調整:

       

       

       

       

      比如【對話開場白】功能,就可以添加多種開場白。

       

       

      添加上下文

      如果想要讓 AI 的對話范圍局限在知識庫內,例如企業內的客服話術規范,可以在“上下文”內引用知識庫,因為我們知識庫還沒創建,暫時就不添加相關信息了,有興趣的小伙伴可以自行添加研究:

       

       

      調試

       

       

      在右側填寫好用戶輸入項,輸入內容進行調試,若LLM給出的回答不理想,我么可以調整提示詞或切換不同底層模型進行效果對比。

      發布應用

      調試完成后,我們就可以點擊右上角的“發布”按鈕生成獨立的AI應用,除了可以通過公開URL體驗該應用,我們也可以基于APIs的二次開發、嵌入至網站內等操作。還可以通過右邊菜單,關注訪問API、日志與標注、監測等模塊功能,有興趣的小伙伴可以自行研究。

       

       

       

       

       

       

       

      2、Agent

      同樣和聊天助手的創建一樣,也是在編排菜單下進行應用的編排,此處和聊天小助手大致一樣,就不再做詳細的描述,可以在模板中找到相關的應用模板,然后研究。

       

       

       

      3、文本生成應用

      文本生成應用也很簡單,我也就不從0開始,直接找了個模板給大家演示一下:

       

       

      4、Chatflow和工作流

      【Chatfow】其實就是支持記憶的復雜多輪對話工作流,而【工作流】是面向單輪自動化任務的編排工作流,這部分在創建應用的時候實際上已經做了舉例,這里也就不再多做描述,小伙伴們可以自行操作感受。

       
      posted @ 2025-06-27 10:57  CharyGao  閱讀(2288)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 四虎国产精品成人免费久久| 久久久亚洲欧洲日产国码606| 国产精品无码久久久久| 亚洲国产欧美在线人成AAAA | 久久久久无码精品国产h动漫| 国产精品中文字幕在线看| 亚洲av二区伊人久久| 亚州中文字幕一区二区| 岛国av无码免费无禁网站| 国产精品不卡一区二区久久| 国产精品无码mv在线观看| 亚洲精品美女一区二区| 国产精品自在拍在线播放| 国产中文一区卡二区不卡| 国产精品久久久久9999| 无码日韩av一区二区三区| 免费无码又爽又刺激网站直播| 丁香婷婷色综合激情五月| 中国亚洲女人69内射少妇| 国产熟妇另类久久久久久| 国产成人高清亚洲一区91| 一区二区三区午夜无码视频| 不卡国产一区二区三区| 亚洲女同性同志熟女| 国产精品成人久久电影| 国语精品一区二区三区| 亚洲av一本二本三本| 国产一区二区三区精品久| 一本色道久久88亚洲综合| 99精品久久久久久久婷婷| 亚洲香蕉免费有线视频| 中文字幕99国产精品| 四虎永久精品免费视频| 国产精品国产高清国产av| 中文字幕自拍偷拍福利视频| 亚洲综合小说另类图片五月天| 楚雄市| 污污网站18禁在线永久免费观看| 亚洲天堂av日韩精品| 久久久无码一区二区三区| 日韩亚洲精品国产第二页|