成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Dify 知識庫外接 RAGFlow 喂飯教程!附避坑指南 原創

發布于 2025-6-18 06:37
瀏覽
0收藏

背景

在我們之前的文章中,我們對比了dify,ragflow和n8n這三個工具的使用場景及其差異。實際上,在企業中,這些工具通常會被結合起來使用,以便充分發揮各自的優勢。例如,盡管ragflow也具備一些智能功能,但是與dify相比,它在這方面的表現力還有待提高。然而,當談到解析和檢索的能力時,ragflow卻顯著超過了dify。在今天的文章中,我們將探討如何有效地將這兩個工具結合使用。

RAGFlow

核心功能

我覺得 RAGflow 最大的一個亮點就是支持各種基于模板的解析模式和多樣的模型支持,這主要是通過??deepdoc??模塊實現。這種靈活性使得 RAGflow 能夠適應不同類型的文檔和數據結構,從而提高解析的準確性和效率。在RAGFlow剛出來的時候,我們就開始利用其deepdoc模塊幫我們做文檔解析,效果比langchain內置的pymupdf效果要好很多。

具體來說,RAGflow 提供了以下幾種解析模式和模型支持:

  • 基于規則的解析:適用于結構化程度較高的文檔
  • 基于典型數據結構的解析:例如 Paper, Table 等類型的數據
  • 基于 Graph 的解析:參考 GraphRAG 構建知識集的 Knowledge Graph 知識圖譜

安裝要求

硬件指標:

  • CPU >= 4 cores
  • RAM >= 16 GB
  • Disk >= 50 GB
  • Docker >= 24.0.0 & Docker Compose >= v2.26.1

內存映射:

sudo sysctl -w vm.max_map_count=262144

ragflow 依賴 Elasticsearch,Elasticsearch 官方建議將其調整為262144值

值得一提的是,RAGFlow 對于硬件的要求還是挺高的,我在一臺只剩不到7個G內存的服務器上運行ragflow,明顯能感覺到卡頓,一看內存就剩100多M了!

知識庫

官方說 RAGFlow的知識庫提供多個分塊模板供用戶選擇,方便分塊不同布局的文件,盡可能地確保語義完整性。在分塊方法中,我們可以選擇適合文件布局和格式的默認模板。下表顯示了每個支持的塊模板的描述和兼容的文件格式.

Dify 知識庫外接 RAGFlow 喂飯教程!附避坑指南-AI.x社區


模板

文件格式

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

我們還可以在創建并配置完知識庫之后,在知識庫的數據集頁面上更改特定文件的塊模板之后再執行文檔的解析。

Dify 知識庫外接 RAGFlow 喂飯教程!附避坑指南-AI.x社區

Dify接入RAGFlow

雖然dify自身的文檔解析能力相對較弱,但ragflow在這方面卻表現出色。那么我們是否可以利用dify去接入ragflow的知識庫呢?實際上,ragflow確實支持這種功能,并專門為dify提供了一個單獨的API,使其可以從ragflow的知識庫中進行檢索。

我們可以從源碼中找到對應的接口及代碼:

Dify 知識庫外接 RAGFlow 喂飯教程!附避坑指南-AI.x社區

從這個api 可以看到,請求體的json應該長這樣:

{
	"query": "what is meme?",
	"knowledge_id": "xxxx",
	"use_kg": false,
	"retrieval_setting": {"score_threshold": 0.0, "top_k": 1024}
}

有一點很重要,那就是在調用ragflow的API之前,你需要進行身份驗證。所以,我們首先需要申請一個密鑰(key)。

Dify 知識庫外接 RAGFlow 喂飯教程!附避坑指南-AI.x社區

從RAGFlow的認證代碼不難看出,我們只需要把key放在請求的header中即可。

def apikey_required(func):
    @wraps(func)
    def decorated_function(*args, **kwargs):
        token = flask_request.headers.get("Authorization").split()[1]
        objs = APIToken.query(token=token)
        if not objs:
            return build_error_result(message="API-KEY is invalid!", code=settings.RetCode.FORBIDDEN)
        kwargs["tenant_id"] = objs[0].tenant_id
        return func(*args, **kwargs)

    return decorated_function

在我們成功申請到API密鑰后,我們可以先使用curl命令來調試接口。首先,我們需要找到知識庫的ID,并將其用作??knowledge_id??。

curl --request POST \
     --url http://192.168.35.16:8080/api/v1/dify/retrieval \
     --header 'Content-Type: application/json' \
     --header 'Authorization: Bearer ragflow-dmN2M4ZTUyNDgyYTExZjA5MWZmMDI0Mm' \
     --data '
     {
          "query": "If you donot have the invitation code you can go to",
          "knowledge_id": "b4bc18a6482211f0920a0242ac1c0006",
    "use_kg": false,
    "retrieval_setting": {"score_threshold": 0.45, "top_k": 5}
     }'

得到的結果如下:

{"records":[{"content":"completetaskstoreceive theinvitation code.\nclick on the campaign button, which will take you to a screen where you must\nNote: If you don't have the invitation code you can go to http://quest.sending.me then,\nInvitation Code\nSendingMe\nSending You to the Free World\n Personal Signing\nCancel\nConfirm\nWhere can I get it?\nlog in instantly.","metadata":{},"score":0.487319856762247,"title":"Getting Started _ SendingMe User Manual.pdf"}]}

在api 驗證通過之后,我們就可以在dify外接知識庫連接到ragflow了。

Dify 知識庫外接 RAGFlow 喂飯教程!附避坑指南-AI.x社區


Dify 知識庫外接 RAGFlow 喂飯教程!附避坑指南-AI.x社區

我們需要將端點(endpoint)設置為本地IP地址,并加上??/api/v1/dify???作為后綴。然后,dify會在應用程序中自動添加??retrieval???,從而形成完整的路徑??/api/v1/dify/retrieval??:

// api/services/external_knowledge_service.py
def fetch_external_knowledge_retrieval(
        tenant_id: str,
        dataset_id: str,
        query: str,
        external_retrieval_parameters: dict,
        metadata_condition: Optional[MetadataCondition] = None,
    ) -> list:
    ...
    request_params = {
                "retrieval_setting": {
                    "top_k": external_retrieval_parameters.get("top_k"),
                    "score_threshold": score_threshold,
                },
                "query": query,
                "knowledge_id": external_knowledge_binding.external_knowledge_id,
                "metadata_condition": metadata_condition.model_dump() if metadata_condition else None,
            }

            response = ExternalDatasetService.process_external_api(
                ExternalKnowledgeApiSetting(
                    url=f"{settings.get('endpoint')}/retrieval",
                    request_method="post",
                    headers=headers,
                    params=request_params,
                ),
                None,
            )
	...

Dify 知識庫外接 RAGFlow 喂飯教程!附避坑指南-AI.x社區

Dify 知識庫外接 RAGFlow 喂飯教程!附避坑指南-AI.x社區

接著我們可以在dify測試一下從ragflow的數據召回情況:

Dify 知識庫外接 RAGFlow 喂飯教程!附避坑指南-AI.x社區

當檢索召回成功之后,說明整個流程已經跑通了,我們就可以在問答或者工作流中使用這個外部知識庫了。

注意事項

  1. 當dify和ragflow配置在同一臺服務器,端口會有沖突,修改ragflow/docker/docker-compose.yml 中ragflow-server的端口即可
  2. dify配置的ragflow的端口地址,除了可以使用映射的80端口之外,也可以使用SVR_HTTP_PORT(默認值是9380)
  3. 上述使用的dify版本Version 1.4.1,ragflow的版本v0.19.0,其他版本沒測試過


本文轉載自??AI 博物院?? 作者:longyunfeigu

?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
已于2025-6-18 09:49:12修改
收藏
回復
舉報
回復
相關推薦
主站蜘蛛池模板: 午夜影院在线免费观看视频 | 毛片av免费看 | 伦理一区二区 | 请别相信他免费喜剧电影在线观看 | 免费成人av网站 | 成人在线观看中文字幕 | 欧美激情视频一区二区三区免费 | 在线日韩福利 | 亚洲自拍一区在线观看 | 久久久久一区二区三区 | 狠狠操网站 | 日本韩国欧美在线观看 | 国产区视频在线观看 | 欧美日韩国产在线观看 | 日韩中文字幕一区二区 | 精品欧美乱码久久久久久 | 色在线看| 欧洲亚洲精品久久久久 | 一区二区三区电影在线观看 | 岛国精品 | 日韩精品一区二区三区中文字幕 | 中文字幕精品一区 | 成人免费视频网站 | 欧美国产精品久久久 | 91精品国产91久久久久久不卞 | 精品成人佐山爱一区二区 | 亚洲国产精品激情在线观看 | 国产一极毛片 | 欧洲精品码一区二区三区免费看 | 国产精品美女久久久久久免费 | 日韩成人免费av | 99久久精品国产一区二区三区 | 天天操伊人 | 亚洲日韩中文字幕一区 | 亚洲永久字幕 | 国产一区二 | 日韩国产一区二区三区 | 国产亚洲一区二区三区在线 | 亚洲精品电影在线观看 | 久久成人一区 | 视频一区二区在线 |