AI RAG 检索代理

本文介绍AI RAG 检索代理插件功能以及如何通过该插件实现AI应用与外部RAG引擎连接。

功能说明

AI RAG 检索代理插件通过检索协议转化和检索结果转换, 实现DifyAI应用连接并检索RAGFlow百炼知识库等外部RAG引擎。

image.png

运行属性

  • 插件执行阶段:默认阶段

  • 插件执行优先级:150

配置说明

基本配置

名称

数据类型

填写要求

默认值

描述

rag_proxy.provider.name

string

必填

-

被调用的外部知识库的类型,支持的枚举类型目前包括:ragflow、bailian。

rag_proxy.source.name

string

选填

dify

外部知识库调用方引擎类型,支持的枚举类型目前包括: dify。

rag_proxy.source.enable_to_proxy_api_key

boolean

选填

false

是否开启AI网关与外部知识库调用方之间API Key校验,不填写默认为false,开启后AI网关与外部知识库调用方之间API Key必须一致,否则无法正常使用。

rag_proxy.source.to_proxy_api_key

string

选填

-

外部知识库调用方引擎的创建外部知识库API时,填写的API Key, 填写后,AI网关会校验此处填入的参数是否与外部知识库创建API时填写的API Key相同,否则不进行校验。

RAGFlow配置

当选择RAGFlow作为被调用的外部知识库时(rag_proxy.provider.name="ragflow"),请参考以下说明进行配置。

名称

数据类型

填写要求

默认值

描述

rag_proxy.provider.api_key

string

必填

-

调用RAGFlow APIAPI Key, 可在RAGFlow控制台右上角头像-API-RAGFlow API处获取。

rag_proxy.provider.dataset_ids

list[string]

选填

-

检索RAGFlowDataSet ID,如这里不填,请在Dify配置外部知识库时填写,优先以Dify配置的外部知识库ID为准。

rag_proxy.provider.document_ids

list[string]

选填

-

检索RAGFlowDocument ID,可以只在指定的Document下检索。

rag_proxy.provider.similarity_threshold

float

选填

0.0

相似度阈值, 低于阈值的分块会被过滤,可以在Dify的召回界面配置该参数。

rag_proxy.provider.top_n

integer

选填

30

返回相似度最高的top_n个分块, 其他分块会被过滤,可以在Dify的召回界面配置该参数。

rag_proxy.provider.vector_similarity_weight

float

选填

0.3

向量余弦相似度权重, 如果x表示向量余弦相似度, 则(1-x)表示语义相似度权重。

rag_proxy.provider.keyword

boolean

选填

false

表示是否启用基于关键字的匹配:true:启用基于关键字的匹配。false:禁用基于关键字的匹配(默认)。

rag_proxy.provider.rerank_id

integer

选填

-

RAG引擎中配置的Rerank模型的ID,配置后使用该模型开启Rerank功能,具体选型请参照ragflow支持的rerank模型,默认不开启该功能。

关于RAGFlow的知识库使用操作指引,请参见:Configure knowledge base

关于RAGFlow的检索更详细参数说明,请参见:Retrieve chunks

基础配置示例如下所示:

rag_proxy:
  provider:
    name: 'ragflow'
    api_key: "xxxxxxxx"

百炼知识库配置

当选择百炼知识库作为被调用的外部知识库时(rag_proxy.provider.name="bailian"), 请参考以下说明进行配置。

名称

数据类型

填写要求

默认值

描述

rag_proxy.provider.api_key

string

必填

-

百炼平台API Key,获取地址百炼API-KEY

rag_proxy.provider.index_id

string

选填

-

阿里云百炼知识库ID,获取方式参考: 知识库API指南

rag_proxy.provider.enable_reranking

bool

选填

true

是否开启Rerank功能。

rag_proxy.provider.rerank_min_score

float

选填

当前知识库配置的相似度阈值

仅开启Rerank时生效, Rerank后的相似度阈值, 低于该阈值的分块会被过滤, 取值范围[0.01-1.00]

rag_proxy.provider.rerank_top_n

integer

选填

5

仅开启Rerank时生效, Rerank后的top_n返回分块, 取值范围[1-20]

rag_proxy.provider.save_retriever_history

bool

选填

false

是否保存历史检索召回数据。

rag_proxy.provider.dense_similarity_top_k

integer

选填

100

向量检索TopK, 通过生成输入文本的向量并在知识库中检索与其向量表示最相似的K个文本切片, 取值范围[0-100]。 dense_similarity_top_ksparse_similarity_top_k二者之和小于等于200。

rag_proxy.provider.sparse_similarity_top_k

integer

选填

100

关键词检索TopK,即在知识库中查找与输入文本的关键词精确匹配的切片。它可以帮助您过滤掉无关的文本切片,提供更准确的结果, 取值范围[0-100]。 dense_similarity_top_ksparse_similarity_top_k二者之和小于等于200。

关于百炼平台的知识库使用操作指引,请参见:百炼知识库操作和使用指引

关于百炼的检索更详细参数说明,请参见:Retrieve - 检索知识索引

基础配置示例如下所示:

rag_proxy:
  provider:
    name: 'bailian'
    api_key: 'sk-xxxxxx'

操作步骤

Dify外部知识库连接RAGFlow与百炼知识库为例,对插件的操作和配置步骤进行说明。

通过AI RAG 检索代理插件实现Dify连接RAGFlow

  1. AI网关中创建RAGFlow检索服务。

    1. 前往AI网关控制台实例页面,在顶部菜单栏选择目标实例所在地域,并单击目标实例ID

    2. 在左侧导航栏,选择服务,然后单击创建服务

    3. 以固定地址来源的RAGFlow为例,创建服务来源为固定地址的ragflow检索服务,如下图所示,端口设置为80。如果是同VPC内容器部署的RAGFlow实例,也可以采用容器服务作为服务来源创建服务。

      image

  2. 创建Agent API路由。

    1. 创建自定义Agent API。

      在对应网关实例控制台,选择Agent API,然后单击创建Agent API,协议选择自定义。

      image

    2. 创建Agent API路由。

      进入已经创建的Agent API,单击创建路由,注意需要确保路径后缀为/retrieval,服务选择步骤1创建的RAGFlow检索服务。

      image

  3. 获取API KEY并在AI网关中配置插件。

    1. 进入RAGFlow,点击右上角用户头像->左侧选择->API->API KEY,获取API KEY。

      image

    2. 在对应网关实例控制台,选择插件,然后单击安装插件,插件类型选择AI,然后选择AI RAG代理插件,单击安装并配置进入规则配置,相关配置如下图所示。设置启用并点击保存后,插件生效。

      image

  4. Dify中创建外部知识库API。

    前往Dify控制台,点击知识库->外部知识库API->添加外部知识库API,API Endpoint使用上述网关接入点与Agent API路由路径组合(http(s)://{endpoint}/{agent api path}),注意需要去除/retrieval后缀,API Key可自行定义。

    image

    重要

    如果在插件中配置了rag_proxy.source.enable_to_proxy_api_keyrag_proxy.source.to_proxy_api_key,需保证API Keyrag_proxy.source.to_proxy_api_key保持一致,否则Dify访问AI网关会鉴权失败,无法执行后续路由。

  5. Dify中连接外部知识库。

    1. 获取知识库命名空间ID。

      前往RAGFlow知识库页面,选择待检索的知识库,页面URL路径中对应部分为外部知识库ID,如下图所示。

      image

    2. 配置知识库信息。

      前往Dify控制台,点击知识库->连接外部知识库,知识库名称和描述可自定义,外部知识库API选择上述步骤4创建的API,如下图所示,点击连接后完成配置。

      image

  6. 验证检索连通性。

    前往Dify知识库页面,选择上述步骤创建的知识库,在召回测试输入源文本进行验证,能够根据召回设置返回文本分块,即说明实现连通。

    image

通过AI RAG 检索代理插件实现Dify连接百炼知识库

  1. AI网关中创建百炼检索服务。

    1. 前往AI网关控制台实例页面,在顶部菜单栏选择目标实例所在地域,并单击目标实例ID

    2. 在左侧导航栏,选择服务,然后单击创建服务,服务来源选择DNS域名,相关配置如下图所示。image

  2. AI网关中创建自定义Agent API路由。

    1. 创建自定义Agent API。

      在左侧导航栏,选择Agent API,然后单击创建Agent API,相关配置如下图所示,其中域名和Base Path可按需自定义,协议选择自定义。

      image

    2. 创建Agent API路由。

      进入已创建的Agent API,单击创建路由,注意需要确保路径后缀为/retrieval,服务选择步骤1创建的百炼检索服务。

      image

  3. 获取API KEY并在AI网关中配置插件。

    1. 登录阿里云百炼平台API Key并获取API Key。

    2. 在对应网关实例控制台,选择插件,然后单击安装插件,插件类型选择AI,然后选择AI RAG代理插件,单击安装并配置进入规则配置,相关配置如下图所示。设置启用并点击保存后,插件生效。

      image

  4. Dify中连接外部知识库。

    前往Dify控制台,点击知识库->外部知识库API->添加外部知识库API,API Endpoint使用上述网关接入点与Agent API路由路径组合(http(s)://{endpoint}/{agent api path}),注意需要去除/retrieval后缀,API Key可自行定义。

    image

    重要

    如果在插件中配置了rag_proxy.source.enable_to_proxy_api_keyrag_proxy.source.to_proxy_api_key,需保证API Keyrag_proxy.source.to_proxy_api_key保持一致,否则Dify访问AI网关会鉴权失败,无法执行后续路由。

  5. Dify中创建外部知识库。

    1. 获取百炼知识库ID。

      前往阿里云百炼平台知识库,选择待检索的知识库,如下图所示,获取知识库ID。

      image

    2. 配置知识库信息。

      前往Dify控制台,点击知识库->连接外部知识库,知识库名称和描述可自定义,外部知识库API选择上述步骤4创建的API,外部知识库ID的格式为:{知识库ID},如下图所示,点击连接后完成创建。

      image

  6. 验证检索连通性。

    前往Dify知识库页面,选择上述步骤创建的知识库,在召回测试输入源文本进行验证,能够根据召回设置返回文本分块,即说明实现连通。

    image