發佈日期:

Kling – 文生影片大模型

Kling簡介

Kling是由快手大模型團隊自主研發的視頻生成大模型,擁有強大的視頻生成能力,能輕鬆高效地完成藝術視頻創作。

官方網站: https://klingai.com/

現在有【文生圖片】、【文生影片】兩種服務,未來還會再推出影片編輯的服務

使用範例

原圖如下

提示詞: 金屬光澤在女孩的身體上閃耀,她緩緩地轉向鏡頭

成果

核心特點

  • 大幅度的合理運動: 採用 3D 時空聯合注意力機制,能夠生成大幅度運動的視頻內容,同時符合運動規律。
  • 長時長高幀率視頻生成: 能夠生成長達 2 分鐘、幀率達 30fps 的高品質視頻。
  • 模擬真實物理特性: 基於自研模型架構,能夠生成符合物理規律的視頻。
  • 強大的概念組合能力: 能夠將用戶豐富的想像力轉化為具體畫面,虛構真實世界中不會出現的場景。
  • 電影級畫質: 能夠生成 1080p 分辨率的電影級視頻。
  • 支持多種寬高比: 能夠根據需求輸出多種多樣的視頻寬高比。

應用場景

可靈大模型的應用場景非常廣泛,包括但不限於:

  • 視頻內容創作: 廣告、電影、動畫、遊戲等視頻內容的生成。
  • 虛擬現實/增強現實: 虛擬世界的場景生成。
  • 教育培訓: 互動式教學內容的生成。
  • 藝術設計: 概念設計、視覺效果圖等。
發佈日期:

Animate Anyone: 圖片+骨架動畫產生動態影片

模型介紹頁面

https://humanaigc.github.io/animate-anyone

Animate Anyone 是一個工具,可以將靜態圖片和骨架動畫結合起來,生成動態影片。它使用先進的 AI 技術,保留圖片細節並保持動畫的連貫性。這個工具適合用於人類角色、動漫和時尚視頻等的動畫製作。

模型概念

  1. 使用 Pose Guider 編碼姿勢序列並融合多幀噪音。
  2. 使用 Denoising UNet 去噪並生成視頻。
  3. Denoising UNet 包含空間、交叉和時間注意力模塊。
  4. 參考圖像的詳細特徵通過 ReferenceNet 提取,語義特徵通過 CLIP 圖像編碼器提取。
  5. 最後,VAE 解碼器將結果解碼為視頻片段。

GitHub位置

https://github.com/HumanAIGC/AnimateAnyone

不過我們可以看到現在這個Github上只有介紹而已,但是他們說因為他們正在把原始碼改得更易讀,所以仍需一些時間才能夠把開源代碼上傳上來,就讓我們持續等待吧~

發佈日期:

Mixamo:你的3D角色動畫工廠

3D 角色動畫服務的線上平台

可以在此試用你的3D模型mixamo: https://www.mixamo.com/

Mixamo 是一個提供自動 3D 角色動畫服務的線上平台。它讓使用者能夠選擇並自定義 3D 角色,並應用各種預設的動畫。該平台支持從現有的 3D 模型中生成動畫,並提供動畫調整功能,以滿足不同的需求。Mixamo 對於遊戲開發者、動畫製作人和其他 3D 創作者非常實用,能夠顯著加快製作流程。

可以上傳自己的fbx模型檔案套用線上多樣的動作
也可以直接拿線上提供的腳色,套入Animation裡面的腳色動作

Mixamo 的主要功能

  • 龐大的動作資料庫: Mixamo 提供了數千種預製的動畫,涵蓋了各種角色、動作和風格。
  • 自動套用: 你只需上傳你的3D模型,選擇想要的動畫,Mixamo就會自動將動畫套用到你的模型上,並進行調整,使其符合模型的比例和骨架結構。
  • 客製化: 你可以對動畫進行調整,例如改變動畫的速度、調整角色的姿勢等,以達到你想要的效果。
  • 匯出多種格式: Mixamo 支援多種3D軟體常用的檔案格式,方便你將動畫匯出到你的專案中。
  • 社群功能: Mixamo 有一个活躍的社群,你可以分享你的作品、與其他使用者交流,並獲得啟發。

Mixamo 的優勢

  • 節省時間: 相較於傳統的動畫製作方式,Mixamo 可以大幅縮短動畫製作的時間。
  • 降低成本: 你不需要雇用專業的動畫師,就能製作出高品質的動畫。
  • 易於使用: 即使你不是動畫專業人士,也能輕鬆上手。
  • 靈活性: Mixamo 提供了高度的客製化功能,讓你能夠創造出獨特的動畫。

Mixamo 的應用場景

  • 遊戲開發: 為遊戲角色製作各種動作,如走路、跑步、跳躍、戰鬥等。
  • 虛擬實境/增強現實: 為虛擬角色製作動畫,使其更生動。
  • 動畫製作: 快速製作短片、動畫廣告等。
  • 電影特效: 為電影中的角色製作動作捕捉動畫。
發佈日期:

SF3D: Stable Fast 3D Mesh 生成工具

SF3D: https://stable-fast-3d.github.io

SF3D 是一個快速生成3D網格模型的模型,它可以在不到一秒鐘的時間內從單一圖片輸出一個帶有UV展開和材質的3D模型。這個模型基於大型重建模型(LRM),專門針對網格生成進行訓練,並且包含快速UV展開技術和去光照步驟,從而提升重建模型的視覺質量,使其在新的光照條件下也能使用。

Github網站

詳情請參閱:GitHub – Stability-AI/stable-fast-3d

Stable Fast 3D模型基於 TripoSR,但進行了改進,專注於生成無瑕疵的網格和帶有UV展開的紋理。SF3D 可以快速進行推理,並且生成的3D模型可以輕鬆整合到遊戲中。安裝環境需要 Python >= 3.8 和 CUDA,並且需要安裝 PyTorch。支持手動推理和本地 Gradio 應用的運行。

要安裝 SF3D,請按照以下步驟操作:

  1. 確保環境:
    • Python 版本 >= 3.8
    • 有 CUDA
    • 安裝 PyTorch,確保 CUDA 版本匹配 PyTorch 安裝指南
    • 更新 setuptools:pip install -U setuptools==69.5.1
  2. 安裝需求:
    • 執行:pip install -r requirements.txt
    • 若要使用 Gradio demo,則執行:pip install -r requirements-demo.txt
  3. 手動推論:
    • 執行:python run.py demo_files/examples/chair1.png --output-dir output/
  4. 本地 Gradio App:
    • 執行:python gradio_app.py

線上demo

https://huggingface.co/spaces/stabilityai/stable-fast-3d

我拿這張圖做為輸入,可以很不錯的生成3D模型

發佈日期:

AI技術於3D模型領域的應用

Meshy – 線上圖片轉3D模型fbx檔案

網站: https://www.meshy.ai/

Meshy 是您的 3D 生成式 AI 工具箱,用於輕鬆從文本或圖像創建 3D 資產,從而加速您的 3D 工作流程。使用 Meshy,您可以在幾分鐘內創建高品質的紋理和 3D 模型。

Meshy的功能

Meshy是一個創新的 3D 模型生成平台,提供以下強大的功能

文字轉紋理 (Text-to-Texture):

  • 透過簡單的文字描述,快速生成符合要求的紋理。
  • 例如:輸入「磨損的木頭紋理」,Meshy 能夠在短時間內生成逼真的木頭紋理。

圖片轉紋理 (Image-to-Texture):

  • 將概念圖或參考圖片轉換成可套用的 3D 模型紋理。
  • 這對於藝術家和設計師來說,能大幅提升工作效率。

文字轉 3D 模型 (Text-to-3D):

  • 僅需一段文字描述,就能生成完整的 3D 模型。
  • 即使沒有 3D 建模經驗,也能輕鬆創造出想要的模型。

圖片轉 3D 模型 (Image-to-3D):

  • 這對於將 2D 概念快速轉換成 3D 模型非常有用。
  • 從單張圖片中提取 3D 資訊,生成具體的 3D 模型。

探索社區資源

社區資源: https://docs.meshy.ai/web-app-interface#explore-community-resources

嘗試使用圖片產生3D模型

操作網址: https://www.meshy.ai/workspace/image-to-3d

操作非常的簡單,可直接按最右邊的下載來下載fbx檔案

發佈日期:

Stable Diffusion常用操作介面

Easy Diffusion

下載位置: https://easydiffusion.github.io/

特色:

  • 簡易操作: 介面直觀,即使是新手也能快速上手。
  • 模型豐富: 支援多種模型,可根據需求選擇。
  • 擴充性強: 可透過外掛擴展功能。

優點:

  • 學習曲線平緩,適合初學者。
  • 功能齊全,能滿足大部分的繪圖需求。

缺點:

相較於其他工具,客製化選項可能較少。

ComfyUI

下載位置: https://github.com/comfyanonymous/ComfyUI

特色:

  • 高度客製化: 提供極高的自由度,可打造專屬的工作流程。
  • 功能強大: 除了繪圖,還能進行影像處理、動畫製作等。
  • 社群活躍: 有龐大的社群提供支援和資源。

優點:

  • 適合有經驗的使用者,可實現複雜的創作。
  • 功能多樣,能滿足專業人士的需求。

缺點:

  • 配置較為複雜。
  • 學習曲線較陡峭,需要花時間熟悉。

Stable Diffusion web UI

下載位置: https://github.com/AUTOMATIC1111/stable-diffusion-webui

特色:

  • 基於瀏覽器: 不需安裝軟體,直接在瀏覽器中使用。
  • 社群豐富: 有大量的模型和腳本可供選擇。
  • 擴充性強: 可透過擴充套件增加功能。

優點:

  • 使用門檻低,適合初學者。
  • 功能豐富,能滿足多種需求。

缺點:

相較於本地端軟體,速度可能較慢。

安裝指南

最終我選擇Stable Diffusion web UI,因為教學文章最多

發佈日期:

Jōtai 介紹

什麼是 Jōtai?

Jōtai 是一個輕量級、易於使用的 JavaScript 狀態管理庫,特別設計來與 React 無縫整合。它提供了一種簡單而直觀的方式來管理應用程式中的狀態,並讓這些狀態在不同的組件之間共享。

Jōtai 的核心概念

  • Atom: Jōtai 中最基本的單位,用來儲存一個單一的狀態值。你可以將 Atom 視為一個可變的變數,但它具有反應式特性,當 Atom 的值改變時,所有訂閱它的組件都會自動更新。
  • 用於訂閱的 Hook: useAtom 是一個 React Hook,用來訂閱一個 Atom。當你使用 useAtom 時,你會得到兩個值:當前的 Atom 值和一個用於更新 Atom 值的函數。

Jōtai 的優勢

  • 狀態共享: Jōtai 可以輕鬆地將狀態共享給應用程式中的任何組件。
  • 反應式更新: 當 Atom 的值改變時,訂閱它的組件會自動更新。
  • 避免 prop drilling: 你不再需要通過層層嵌套的組件來傳遞 props。
  • 可測試性: Jōtai 的狀態是可測試的,這有助於你寫出更可靠的應用程式。

安裝Jōtai

# npm
npm i jotai

# yarn
yarn add jotai

# pnpm
pnpm add jotai

基本用法

import { atom } from 'jotai'

const countAtom = atom(0)

const countryAtom = atom('Japan')

const citiesAtom = atom(['Tokyo', 'Kyoto', 'Osaka'])

const animeAtom = atom([
  {
    title: 'Ghost in the Shell',
    year: 1995,
    watched: true
  },
  {
    title: 'Serial Experiments Lain',
    year: 1998,
    watched: false
  }
])

從同一元件讀取和寫入

當原子在同一元件中同時讀取和寫入時,為簡單起見,請使用組合 useAtom 鉤子。

import { useAtom } from 'jotai'

const AnimeApp = () => {
  const [anime, setAnime] = useAtom(animeAtom)

  return (
    <>
      <ul>
        {anime.map((item) => (
          <li key={item.title}>{item.title}</li>
        ))}
      </ul>
      <button onClick={() => {
        setAnime((anime) => [
          ...anime,
          {
            title: 'Cowboy Bebop',
            year: 1998,
            watched: false
          }
        ])
      }}>
        Add Cowboy Bebop
      </button>
    <>
  )
}

從單獨的元件讀取和寫入

當僅讀取或寫入原子值時,可使用 useAtomValue 和 useSetAtom hooks 。

import { useAtomValue, useSetAtom } from 'jotai'

const AnimeList = () => {
  const anime = useAtomValue(animeAtom)

  return (
    <ul>
      {anime.map((item) => (
        <li key={item.title}>{item.title}</li>
      ))}
    </ul>
  )
}

const AddAnime = () => {
  const setAnime = useSetAtom(animeAtom)

  return (
    <button onClick={() => {
      setAnime((anime) => [
        ...anime,
        {
          title: 'Cowboy Bebop',
          year: 1998,
          watched: false
        }
      ])
    }}>
      Add Cowboy Bebop
    </button>
  )
}

const ProgressTracker = () => {
  const progress = useAtomValue(progressAtom)

  return (
    <div>{Math.trunc(progress * 100)}% watched</div>
  )
}

const AnimeApp = () => {
  return (
    <>
      <AnimeList />
      <AddAnime />
      <ProgressTracker />
    </>
  )
}
發佈日期:

Dify:開源大語言模型應用開發平台

在人工智能快速發展的今天,大語言模型(LLM)已成為推動創新的核心力量。然而,如何有效地將這些強大的模型轉化為實用的AI應用,仍然是許多開發者和企業面臨的挑戰。這就是Dify發揮作用的地方,它作為一個開源的LLM應用開發平台,為我們提供了一個便捷的解決方案。

Dify:打造AI應用的全能工具箱

Dify不僅僅是一個開發平台,它更像是一個為LLM應用量身打造的全能工具箱。通過Dify,開發者可以輕鬆設計對話式AI、優化提示詞工程、管理知識庫,並實現無縫的API集成。這些功能的組合使得從概念到部署的整個AI應用開發過程變得更加流暢和高效。

對話式AI設計:打造個性化交互體驗

Dify的核心優勢之一是其強大的對話式AI設計功能。通過直觀的界面,開發者可以輕鬆定制AI助手的個性、知識範圍和回應方式。這使得創建符合特定需求的AI應用變得前所未有的簡單,無論是客戶服務機器人還是專業領域的智能顧問。

提示詞工程:釋放LLM的潛力

在LLM應用開發中,提示詞工程扮演著關鍵角色。Dify提供了先進的提示詞管理和優化工具,幫助開發者精確控制AI的輸出。通過細緻調整提示詞,我們可以顯著提升AI應用的性能和準確性,確保它能夠準確理解用戶意圖並提供恰當的回應。

知識庫管理:為AI注入專業知識

Dify的知識庫管理功能允許開發者輕鬆導入和組織大量專業資料。這意味著我們可以為AI應用注入特定領域的知識,使其能夠處理更複雜、更專業的查詢。無論是法律諮詢、醫療診斷還是技術支持,Dify都能幫助我們構建具有深度專業知識的AI系統。

API集成:無縫連接各種服務

為了確保開發的AI應用能夠與現有系統和服務無縫協作,Dify提供了強大的API集成能力。這使得將AI功能嵌入到各種應用程序和平台中變得異常簡單,大大擴展了LLM應用的可能性和實用性。

Dify介面介紹

Dify 的關鍵特性

Dify 內建了建立 LLM 應用所需的關鍵技術棧,包括:

  • 支援數百個模型:提供多樣的模型選擇,滿足不同應用需求。
  • 直覺的 Prompt 編排介面:簡單易用,讓你輕鬆設計和調整提示語。
  • 高品質的 RAG 引擎:確保數據處理的準確性和效率。
  • 穩健的 Agent 框架:靈活配置和管理代理機器人。
  • 靈活的流程編排:支援複雜流程的設計和自動化。

這些特性使得開發者可以節省大量重複造輪子的時間,專注於創新和業務需求。

支持模型類型

在Dify 中,我們依照模型的使用情境將模型分為以下4 類:

  1. 系統推理模型。 在創建的應用中,用的是該類型的模型。智聊、對話名稱產生、下一步問題建議用的也是推理模型。已支援的系統推理模型供應商:OpenAIAzure OpenAI ServiceAnthropic、Hugging Face Hub、Replicate、Xinference、OpenLLM、訊飛星火文心一言通義千問Minimax、ZHIPU(ChatGLM)
  2. Embedding 模型。在資料集中,將分段過的文件做Embedding 用的是該類型的模型。在使用了資料集的應用程式中,將使用者的提問做Embedding 處理也是用的該類型的模型。已支援的Embedding 模型供應商:OpenAI、ZHIPU(ChatGLM)、JinaAI
  3. Rerank 模型 Rerank 模型用於增強檢索能力,改善LLM 的搜尋結果。已支援的Rerank 模型供應商:Cohere、JinaAI
  4. 語音轉文字模型。將對話型應用中,將語音轉文字用的是該類型的模型。已支援的語音轉文字模型供應商:OpenAI

為什麼選擇 Dify?

你可以將 Dify 與 LangChain 這類的開發庫做比較。LangChain 是一個提供鐵鎚和釘子的工具箱,而 Dify 則是一套經過精良工程設計和軟體測試的完整腳手架方案。

以下是選擇 Dify 的幾個主要理由:

  • 開源:由專業全職團隊和社群共同打造,提供靈活和安全的解決方案,同時保持對資料的完全控制。
  • 快速迭代:產品簡單、克制且迭代迅速,滿足用戶需求。
  • 生產級方案:提供接近生產需求的完整方案,節省開發時間和資源。

使用 Dify 的優勢

Dify 讓你基於任何模型自部署類似 Assistants API 和 GPTs 的能力,確保在靈活和安全的基礎上,對資料保持完全控制。這對於那些希望快速開發和部署生成式 AI 應用的團隊和個人來說,是一個理想選擇。

創業者的理想工具

Dify 可以幫助創業者快速將 AI 應用創意變成現實,無論是成功還是失敗,都需要加速推進。在真實世界中,已有數十個團隊透過 Dify 建立 MVP(最小可用產品)獲得投資,或透過 POC(概念驗證)贏得了客戶的訂單。

整合 LLM 至現有業務

Dify 使得將 LLM 增強現有應用變得簡單。透過 Dify 的 RESTful API,可以實現 Prompt 與業務程式碼的解耦。此外,Dify 的管理介面可以追蹤資料、成本和用量,持續改進應用效果,從而提升業務能力。

企業級 LLM 基礎設施

一些銀行和大型網路公司正在將 Dify 部署為企業內的 LLM 網關,加速 GenAI 技術在企業內的推廣,並實現中心化的監管。這使得 Dify 成為企業級應用的理想選擇,提供穩定、安全的 LLM 基礎設施。

探索 LLM 的能力邊界

即使你是技術愛好者,Dify 也能幫助你輕鬆實踐 Prompt 工程和 Agent 技術。在 GPTs 推出以前,已有超過 60,000 名開發者在 Dify 上創建了自己的第一個應用,展示了其在技術探索中的強大潛力。

Dify 開源許可證

Dify 專案在Apache License 2.0 授權下開源,同時包含以下附加條件:

Dify 允許被用於商業化,例如作為其他應用的「後端即服務」使用,或作為應用程式開發平台提供給企業。然而,當滿足以下條件時,必須聯繫生產者以獲得商業許可:

  • 多租戶SaaS 服務:除非獲得Dify 的明確書面授權,否則不得使用Dify.AI 的源碼來運作與Dify.AI 服務版類似的多租戶SaaS 服務。
  • LOGO 及版權資訊:在使用Dify 的過程中,不得移除或修改Dify 控制台內的LOGO 或版權資訊。

更多教學資源

官方的教學文件非常完整

https://docs.dify.ai/v/zh-hans/guides/model-configuration

對於擴充以及API支持非常的完整

https://docs.dify.ai/v/zh-hans/guides/application-publishing/developing-with-apis

發佈日期:

RagFlow深度文檔理解的新境界

RAGFlow的核心優勢在於其強大的深度文檔理解能力。通過結合先進的自然語言處理技術和大型語言模型,RAGFlow能夠深入解析各種複雜格式的文檔,包括PDF、Word和PowerPoint等。這種深度理解使得AI系統能夠更準確地回答用戶查詢,大大提升了問答系統的性能。

特性介紹

基於深度文檔理解,我們的系統能夠從各類複雜格式的非結構化資料中提取真知灼見,在無限上下文的場景下快速完成大海撈針測試。通過模板的文字切片技術,不僅智能而且可控可解釋,提供多種範本選擇並可視化調整。系統支援多種文件類型,包括Word、PPT、Excel、TXT、圖片、PDF、影印件等,全面優化的RAG工作流程能夠滿足從個人應用到超大型企業的需求,並提供易用的API,方便整合各類企業系統,最大程度降低幻覺風險,確保答案有理有據。

系統架構

畫面介紹

以下為登入畫面

模型設定介紹

在這邊設定要使用的模型的Token或者連線至本地端的Ollama,在這邊要注意的是,如果你的Ragflow是用docker起的,那麼就一定也要把ollama起在docker裡面,彼此才連線的到,不然就是要透過公開網址

知識庫設定介紹

接著可以來新增知識庫

在設定知識庫的解析方式時,設定正確的選項非常重要,如果你上傳的文件屬於純文字PDF,則要記得把layout recognize關掉

以下為純文字檔案卻打開layout recognize的解析狀況

沒有打開則可以正常解析全部的純文字內容

如果要解析的是圖檔、POWERPOINT這種需要先解析layout的,則應打開layout recognize,以下為需要打開layout recognize的一個範例,這個PDF的檔案皆為圖像,是使用OCR去判斷上面的文字的

聊天功能介紹

這邊有點類似GPT Plus的功能,可以設定很多不同的聊天助理,並且可以附註搜尋到的檔案的文本,也可以針對每一個聊天助理設定要搜尋的知識庫

圖功能介紹

我們可以在這邊客製化聊天的流程,做更進一步的機器人的進階設定,預設有下面這些不同的流程

可設定的元件包括知識檢索、生成回答、人機交互、問題分類、靜態訊息、是否相關、問題最佳化,並且可以直接運行來測試

每一個元件都可以設定使用的模型和相關提示

這是預設的客服的流程,有點可怕,如果知識庫裡面沒有相關的文件,就會無限迴圈耶:D

文件管理介紹

從這邊可以看到我們上傳的所有文件的檔案夾

發佈日期:

RAGFlow: 檢索增強生成的開源引擎

在人工智能和自然語言處理領域,檢索增強生成(RAG)技術正在迅速崛起。RAGFlow作為一個開源的RAG引擎,為開發者和企業提供了一個強大的工具,以提升AI應用的問答能力和資訊檢索精準度。本文將深入探討RAGFlow的核心功能和應用場景,幫助您了解如何利用這一創新技術打造先進的NLP解決方案。

RAGFlow: 深度文檔理解的新境界

RAGFlow的核心優勢在於其強大的深度文檔理解能力。通過結合先進的自然語言處理技術和大型語言模型,RAGFlow能夠深入解析各種複雜文檔,提取關鍵信息,並建立語義連接。這使得AI系統能夠更準確地理解和回答用戶查詢,大大提升了問答系統的性能。

知識庫管理: 智能化的資訊組織

RAGFlow提供了全面的知識庫管理功能,使得組織和更新大量資訊變得簡單高效。通過智能分類和索引技術,RAGFlow能夠自動組織和關聯不同來源的資料,建立一個結構化的知識網絡。這不僅提高了資訊檢索的效率,還為AI應用提供了豐富的背景知識,使其能夠生成更加準確和相關的回答。

大型語言模型集成: 釋放AI的潛力

RAGFlow無縫集成了多種大型語言模型,如GPT系列,使得開發者可以輕鬆利用這些強大的AI模型來增強自己的應用。通過結合RAG技術和大型語言模型,RAGFlow能夠生成更加準確、相關和富有洞察力的回答,大大提升了AI系統的表現。

RAGFlow的應用場景

RAGFlow的靈活性使其適用於多種場景:

  1. 智能客服系統: 利用RAGFlow的深度文檔理解能力,企業可以構建更智能的客服機器人,能夠準確回答複雜的產品和服務相關問題。
  2. 研究輔助工具: 研究人員可以使用RAGFlow快速分析大量學術文獻,提取關鍵信息,並生成研究摘要。
  3. 法律文檔分析: 法律專業人士可以利用RAGFlow深入解析複雜的法律文件,快速找到相關案例和條款。
  4. 個人知識管理: 個人用戶可以使用RAGFlow建立自己的知識庫,實現高效的個人信息管理和學習。

線上測試RAGFlow

RAGFlow是一款基於深度文件理解所建構的開源RAG(Retrieval-Augmented Generation)引擎。 RAGFlow 可以為各種規模的企業及個人提供一套精簡的RAG 工作流程,結合大語言模型(LLM)針對用戶各類不同的複雜格式數據提供可靠的問答以及有理有據的引用。

線上DEMO網址: https://demo.ragflow.io.

安裝方式

如需確認vm.max_map_count的大小:

sysctl vm.max_map_count

如果vm.max_map_count的值小於262144,可以進行重設:

# 設為 262144:
sudo sysctl -w vm.max_map_count=262144

你的改動會在下次系統重新啟動時被重置。如果希望做永久改動,還需要在/etc/sysctl.conf檔案裡把vm.max_map_count的值再相應更新一次:

vm.max_map_count=262144

下載程式

git clone https://github.com/infiniflow/ragflow.git
cd ragflow/docker
chmod +x ./entrypoint.sh

直接啟動會顯示不支持MACOS,且無法設定環境變數include:env_file: ./.env因此對於內容有稍作修改,改成如下

以下為docker-compose-CN.yml

services:
   ragflow:
    depends_on:
      mysql:
        condition: service_healthy
      es01:
        condition: service_healthy
    image: swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow:${RAGFLOW_VERSION}
    container_name: ragflow-server
    ports:
      - ${SVR_HTTP_PORT}:9380
      - 80:80
      - 443:443
    volumes:
      - ./service_conf.yaml:/ragflow/conf/service_conf.yaml
      - ./ragflow-logs:/ragflow/logs
      - ./nginx/ragflow.conf:/etc/nginx/conf.d/ragflow.conf
      - ./nginx/proxy.conf:/etc/nginx/proxy.conf
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
    environment:
      - MINIO_CONSOLE_PORT=9001
      - MINIO_PORT=9000
      - MINIO_USER=rag_flow
      - MINIO_PASSWORD=infini_rag_flow
      - REDIS_PORT=6379
      - REDIS_PASSWORD=infini_rag_flow
      - SVR_HTTP_PORT=9380
      - RAGFLOW_VERSION=dev
      - MEM_LIMIT=8073741824
      - KIBANA_PORT=6601
      - ELASTIC_PASSWORD=infini_rag_flow
      - STACK_VERSION=8.11.3
      - ES_PORT=1200
      - MYSQL_PASSWORD=infini_rag_flow
      - MYSQL_PORT=5455
      - TZ='Asia/Shanghai'
      - HF_ENDPOINT=https://hf-mirror.com
    networks:
      - ragflow
    network_mode: host
    restart: always

以下為docker-compose-base.yml

services:
  es01:
    container_name: ragflow-es-01
    image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION}
    volumes:
      - esdata01:/usr/share/elasticsearch/data
    ports:
      - ${ES_PORT}:9200
    environment:
      - MINIO_CONSOLE_PORT=9001
      - MINIO_PORT=9000
      - MINIO_USER=rag_flow
      - MINIO_PASSWORD=infini_rag_flow
      - REDIS_PORT=6378
      - REDIS_PASSWORD=infini_rag_flow
      - SVR_HTTP_PORT=9380
      - RAGFLOW_VERSION=dev
      - TIMEZONE=Asia/Shanghai
      - MEM_LIMIT=8073741824
      - KIBANA_PORT=6601
      - ELASTIC_PASSWORD=infini_rag_flow
      - STACK_VERSION=8.11.3
      - ES_PORT=1200
      - MYSQL_PASSWORD=infini_rag_flow
      - MYSQL_PORT=5455
      - node.name=es01
      - bootstrap.memory_lock=false
      - discovery.type=single-node
      - xpack.security.enabled=true
      - xpack.security.http.ssl.enabled=false
      - xpack.security.transport.ssl.enabled=false
      - 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
    network_mode: host
    restart: always

  mysql:
    image: mysql:5.7.18
    container_name: ragflow-mysql
    environment:
      - MINIO_CONSOLE_PORT=9001
      - MINIO_PORT=9000
      - MINIO_USER=rag_flow
      - MINIO_PASSWORD=infini_rag_flow
      - REDIS_PORT=6378
      - REDIS_PASSWORD=infini_rag_flow
      - SVR_HTTP_PORT=9380
      - RAGFLOW_VERSION=dev
      - TIMEZONE=Asia/Shanghai
      - MEM_LIMIT=8073741824
      - KIBANA_PORT=6601
      - ELASTIC_PASSWORD=infini_rag_flow
      - STACK_VERSION=8.11.3
      - ES_PORT=1200
      - MYSQL_PASSWORD=infini_rag_flow
      - MYSQL_PORT=5455
      - MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD}
      - TZ=${TIMEZONE}
    command:
      --max_connections=1000
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --default-authentication-plugin=mysql_native_password
      --tls_version="TLSv1.2,TLSv1.3"
      --init-file /data/application/init.sql
    ports:
      - ${MYSQL_PORT}:3306
    volumes:
      - mysql_data:/var/lib/mysql
      - ./init.sql:/data/application/init.sql
    networks:
      - ragflow
    network_mode: host
    healthcheck:
      test: ["CMD", "mysqladmin" ,"ping", "-uroot", "-p${MYSQL_PASSWORD}"]
      interval: 10s
      timeout: 10s
      retries: 3
    restart: always

  minio:
    image: quay.io/minio/minio:RELEASE.2023-12-20T01-00-02Z
    container_name: ragflow-minio
    command: server --console-address ":9001" /data
    ports:
      - ${MINIO_PORT}:9000
      - ${MINIO_CONSOLE_PORT}:9001
    environment:
      - MINIO_CONSOLE_PORT=9001
      - MINIO_PORT=9000
      - MINIO_USER=rag_flow
      - MINIO_PASSWORD=infini_rag_flow
      - REDIS_PORT=6378
      - REDIS_PASSWORD=infini_rag_flow
      - SVR_HTTP_PORT=9380
      - RAGFLOW_VERSION=dev
      - TIMEZONE=Asia/Shanghai
      - MEM_LIMIT=8073741824
      - KIBANA_PORT=6601
      - ELASTIC_PASSWORD=infini_rag_flow
      - STACK_VERSION=8.11.3
      - ES_PORT=1200
      - MYSQL_PASSWORD=infini_rag_flow
      - MYSQL_PORT=5455
      - MINIO_ROOT_USER=${MINIO_USER}
      - MINIO_ROOT_PASSWORD=${MINIO_PASSWORD}
      - TZ=${TIMEZONE}
    volumes:
      - minio_data:/data
    networks:
      - ragflow
    network_mode: host
    restart: always

  redis:
    image: redis:7.2.4
    container_name: ragflow-redis
    command: redis-server --requirepass ${REDIS_PASSWORD} --maxmemory 128mb --maxmemory-policy allkeys-lru
    ports:
      - 6379:6379
    volumes:
      - redis_data:/data
    networks:
      - ragflow
    network_mode: host
    restart: always

volumes:
  esdata01:
    driver: local
  mysql_data:
    driver: local
  minio_data:
    driver: local
  redis_data:
    driver: local

networks:
  ragflow:
    driver: bridge

同時啟動兩個docker-compose

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

可看到啟動成功

接著打開127.0.0.1就可以創建帳號並登入了