RAG引擎

更新时间:
复制为 MD 格式

本文介绍知识平台的RAG引擎功能,包括管理员环境配置、知识库管理、文档导入与解析、检索测试、对话问答和Skill检索的操作说明。每个操作均提供界面操作和API调用两种方式。

功能概览

RAG(Retrieval-Augmented Generation)是知识平台的核心功能,通过将文档内容向量化并存储到知识库,实现基于语义相似度的精准检索,再由大语言模型(LLM)结合检索结果生成回答。

RAG的典型使用流程如下:

  1. 管理员配置:配置对象存储(OSS)、文档引擎和AI模型,完成平台初始化。

  2. 创建知识库:创建知识库,定义文档集合的组织方式和切片参数。

  3. 导入与解析:上传文档并触发解析,系统将文档切分为文本块(Chunk)并生成向量嵌入。

  4. 检索与问答:通过检索测试验证召回效果,然后创建对话助手进行知识问答。

  5. Skill检索:通过AI助手内置Skill直接检索知识库,无需手动调用API。

不同角色的操作权限如下:

操作

所需角色

查询知识库、检索、问答

VIEWER及以上

创建知识库、上传或删除文档、触发解析

DEVELOPER及以上

配置模型、OSS、文档引擎、资源授权

ADMIN

管理员配置

以下配置仅需管理员(ADMIN)在平台初次部署后执行一次,已完成的环境可跳过。

配置对象存储(OSS)

RAG引擎使用OSS保存原始文件、解析中间产物和切片图片。

界面操作

  1. 在左侧菜单中,选择RAG 引擎 > 服务配置

  2. 对象存储(OSS)配置面板中,配置以下参数:

    参数

    说明

    示例

    Storage Type

    存储类型。

    OSSS3MINIO

    Access Key ID

    访问密钥ID。

    AKxxxxxxxx

    Secret Key

    访问密钥。服务端采用AES-GCM加密存储,已保存时留空则保留原值。

    ********

    Endpoint URL

    服务地址。

    https://oss-cn-hangzhou.aliyuncs.com

    Region

    区域。

    cn-hangzhou

    Bucket

    默认桶名。

    my-rag-bucket

    Prefix Path

    存储前缀路径(可选)。

    rag/

    Signature Version

    签名版本。

    s3v4

    Addressing Style

    寻址方式。

    virtualpath

  3. 单击测试连接,验证配置是否正确。

  4. 单击保存配置。保存后系统将自动重启RAG引擎服务(约10~30秒)。

API调用

  1. 保存OSS配置:

    POST /api/oss/config
    Content-Type: application/json
    
    {
      "storage_type":       "OSS",
      "endpoint_url":       "https://oss-cn-hangzhou.aliyuncs.com",
      "region":             "cn-hangzhou",
      "bucket":             "my-rag-bucket",
      "access_key":         "AKxxx",
      "secret_key":         "xxxxxxx",
      "prefix_path":        "rag/",
      "signature_version":  "s3",
      "addressing_style":   "virtual"
    }
  2. 保存后系统自动重启RAG引擎服务(约10~30秒)。完成后调用测试接口验证连通性:

    POST /api/oss/test
    Content-Type: application/json
    
    {
      "storage_type":       "OSS",
      "endpoint_url":       "https://oss-cn-hangzhou.aliyuncs.com",
      "region":             "cn-hangzhou",
      "bucket":             "my-rag-bucket",
      "access_key":         "AKxxx",
      "secret_key":         "xxxxxxx",
      "prefix_path":        "rag/",
      "signature_version":  "s3",
      "addressing_style":   "virtual"
    }

    期望返回:{"code": 0, "connected": true}

配置文档引擎

文档引擎用于保存切片、向量和全文索引。支持以下两种引擎类型:

场景

推荐引擎

不想额外部署

PostgreSQL

已购买PolarSearch

OpenSearch

界面操作

  1. 服务配置页面中,滚动至文档引擎配置板块。

  2. 在顶部引擎类型中,选择PostgreSQLOpenSearch

  3. 切换到对应的Tab页,填写连接参数。

    • PostgreSQL Tab

      参数

      默认值

      说明

      Host / Port

      localhost / 5432

      PostgreSQL实例地址。

      Username / Password

      postgres / 已保存留空

      数据库用户名和密码,密码加密存储。

      Database

      _rag_doc_db

      专用文档库名称。

      Pool Size / Max Overflow / Pool Timeout

      20 / 10 / 30

      连接池参数。

      FTS Engine

      gin

      全文索引类型。

      FTS Language

      chinese

      分词语言。

      Hybrid Mode

      weighted_fusion

      混合检索策略。

      FTS TopN / Vector TopN

      100 / 100

      每路召回上限。

    • OpenSearch Tab

      参数

      默认值

      说明

      Host / Port

      opensearch / 9201

      OpenSearch实例地址。

      Username / Password

      admin / 已保存留空

      管理员凭据。

  4. 单击测试连接验证连通性,然后单击保存配置

  5. 引擎类型处单击切换并重启,系统将自动重启RAG引擎服务以切换到新引擎。

重要

切换引擎会使原引擎内的切片数据在已有知识库中不可见。如需全量迁移,需对现有文档重新触发解析。

API调用

  1. 保存PostgreSQL配置:

    POST /api/doc-engine/pg/config
    Content-Type: application/json
    
    {
      "host": "localhost",
      "port": 5432,
      "database": "_rag_doc_db",
      "username": "postgres",
      "password": "your_password"
    }
  2. 测试PostgreSQL连通性(可传空body使用已保存配置):

    POST /api/doc-engine/pg/test
    Content-Type: application/json
    
    {}
  3. 切换引擎类型(触发重启):

    POST /api/doc-engine/engine-type
    Content-Type: application/json
    
    { "engine_type": "postgresql" }

绑定LLMEmbedding模型

RAG引擎至少需要Embedding模型(向量化切片)和Chat LLM(对话问答)。

界面操作

  1. 在左侧菜单中,选择RAG 引擎 > 模型配置

  2. 新增模型厂商:在从预设模型提供商添加区域找到目标厂商(如Tongyi-Qianwen、OpenAI、DeepSeek等),单击添加,填写API KeyBase URL(可选)。

  3. 导入自定义模型(可选):单击添加自定义模型,填写模型提供商(Factory)、模型名称、API Key、Base URL和模型类型(chatembeddingrerankimage2text),单击验证确认可用后再添加

  4. 设置默认模型:在页面顶部租户默认模型区域,分别指定:

    • LLM:例如qwen-plus

    • Embedding:例如text-embedding-v3

    • VLM(可选):用于PDF图片理解,例如qwen-vl-plus

  5. 单击保存。设置立即生效,无需重启。

API调用

  1. 绑定模型厂商API Key。

    POST /api/ragflow/llm/set_api_key
    Content-Type: application/json
    
    {
      "llm_factory": "Tongyi-Qianwen",
      "api_key":     "sk-xxxxxxxxxxxxxxxxxxxxxx",
      "base_url":    "https://dashscope.aliyuncs.com/compatible-mode/v1"
    }

    查看可选厂商:GET /api/ragflow/llm/factories

  2. 设置租户默认模型。

    POST /api/ragflow/set_tenant_info
    Content-Type: application/json
    
    {
      "tenant_id":  "<从 GET /api/ragflow/tenant_info 获取>",
      "llm_id":     "qwen-plus@Tongyi-Qianwen",
      "embd_id":    "text-embedding-v3@Tongyi-Qianwen",
      "asr_id":     "",
      "img2txt_id": ""
    }
  3. (可选)用户级覆盖。

    PUT /api/ragflow/defaults
    Content-Type: application/json
    
    { "llm_id": "gpt-4o@OpenAI" }

管理员自检

完成以上配置后,通过以下API验证各组件状态:

GET /api/ragflow/status        # RAG引擎服务是否在线
GET /api/ragflow/tenant_info   # 默认模型是否已设置
POST /api/oss/test             # OSS是否可达(需传入完整OSS配置参数)
POST /api/doc-engine/pg/test   # 文档引擎是否可达(可传空body{})

四项全部返回connected: truecode: 0,即可开始使用RAG功能。

创建知识库

界面操作

  1. 在左侧菜单中,选择RAG 引擎 > 知识库管理

  2. 单击页面右上角的+ 新建知识库,在弹窗中配置以下参数:

    参数

    建议值

    说明

    名称

    quickstart-kb

    仅支持英文字母、数字和短横线,便于脚本引用。

    描述

    一句话业务说明

    方便多人协作时辨识。

    切片方法

    General (Naive)

    通用文档首选。其他可选值:manual(长文)、paper(论文)、qa(问答对)、table(表格)。

    嵌入模型

    留空

    自动跟随租户默认模型,避免维度不匹配。

    权限

    me / team

    me仅自己可见;team本租户共享。

  3. 单击创建。列表中每一行的ID列即为后续APISkill使用的dataset_id(形如ds-abc123)。

API调用

POST /api/ragflow/datasets
Content-Type: application/json

{
  "name":            "quickstart-kb",
  "description":     "第一个知识库",
  "chunk_method":    "naive",
  "permission":      "me",
  "embedding_model": "text-embedding-v3@Tongyi-Qianwen"
}

成功后记下返回体里的data.id(如ds-abc123),后续所有接口都需要使用该ID。

导入文档与解析

上传文件

界面操作

  1. 在知识库列表中,单击目标知识库的文件夹图标,进入文档管理页。

  2. 单击页面右上角的上传,将文件拖拽到上传框或单击选择文件。支持PDF、Word、Excel、PPT、TXT、Markdown等格式。

  3. 上传完成后,关闭上传弹窗。文档列表中新文档的解析状态为待解析

API调用

curl -X POST "http://<host>/api/ragflow/datasets/<dataset_id>/documents" \
     -H "Authorization: Bearer <token>" \
     -F "file=@./产品手册.pdf" \
     -F "file=@./FAQ.md"

上传后文档状态为unprocessed

触发解析

界面操作

  1. 在文档管理页中,勾选需要解析的文档(支持全选)。

  2. 单击顶部的开始解析

    说明

    未配置嵌入模型时,系统会弹出警告提示。单击去配置跳转到知识库配置页补充。

  3. 解析过程中,文档列表会自动刷新显示进度。解析状态依次为:待解析 → 解析中 → 已完成(或失败)。

API调用

POST /api/ragflow/datasets/<dataset_id>/documents/parse
Content-Type: application/json

{ "ids": ["doc-xxx", "doc-yyy"] }

查看与修正切片

界面操作

  1. 在文档管理页中,单击目标文档的文档图标(仅解析完成的文档可操作)。

  2. 在右侧Chunk抽屉中,可对每条切片执行以下操作:

    • 单击编辑手工纠错(如OCR错字、段落合并)。

    • 切换启用或禁用开关,临时屏蔽低质切片。

    • 单击新增 chunk手工补录遗漏内容。

API调用

GET  /api/ragflow/datasets/<dataset_id>/documents/<doc_id>/chunks?page=1&size=20
POST /api/ragflow/datasets/<dataset_id>/documents/<doc_id>/chunks/switch

检索测试

在创建对话助手前,建议先通过检索测试确认文档能被正确召回。

界面操作

  1. 在左侧菜单中,选择RAG 引擎 > 内容检索

  2. 在页面顶部的选择知识库下拉框中,选择一个或多个知识库。

  3. 在文本框中输入问题,单击检索

  4. 在右侧参数面板中,可按需调整以下检索参数:

    参数

    默认值

    说明

    Top K

    10

    返回的召回切片数量。

    相似度阈值

    0.2

    低于该分数的切片将被过滤。

    向量权重

    0.3

    混合检索中向量占比,剩余部分为关键词匹配。

    关键词

    关闭

    启用后同时进行BM25关键词匹配。

    元数据过滤

    按文档类型或标签收窄检索范围。

  5. 查看结果。每条切片展示综合得分、向量得分和关键词得分。

    判读标准:

    观察

    结论

    Top-3命中切片都能回答问题

    质量合格,可创建对话助手。

    Top-3偏离但Top-10有正确结果

    调高Top K或启用Rerank。

    全部不相关

    检查切片质量或调整切片参数。

API调用

POST /api/ragflow/retrieval
Content-Type: application/json

{
  "question": "产品退货的条件是什么?",
  "dataset_ids": ["<dataset_id>"],
  "top_k":    10,
  "similarity_threshold":     0.2,
  "vector_similarity_weight": 0.3,
  "highlight": true
}

返回每条切片包含:

  • similarity:综合得分。

  • vector_similarity / term_similarity:向量与关键词分。

  • content_with_weight:正文(含高亮标记)。

  • docnm_kwd / doc_id:来源文档。

对话助手与问答

创建助手

界面操作

  1. 在左侧菜单中,选择RAG 引擎 > 对话助手

  2. 单击+ 新建助手,配置以下参数:

    基础信息

    参数

    说明

    名称

    助手显示名称。

    头像

    上传自定义头像或保留默认。

    关联知识库

    多选:勾选目标知识库。

    模型参数

    参数

    建议值

    说明

    模型

    租户默认

    跟随租户默认,或覆盖为指定模型。

    Temperature

    0.1

    越低越严格复现知识库内容。

    Top-P

    0.3

    Temperature二选一调节。

    相似度阈值

    0.2

    同检索测试。

    向量权重

    0.3

    同检索测试。

    Top N

    6

    输入LLM的最多切片数。

    显示引用

    开启

    在回答中标注来源切片。

    空结果回复

    自定义文本

    检索无结果时的兜底回复,用于防止模型幻觉。

    系统提示词:配置系统级Prompt,使用{{knowledge}}变量引用检索结果。

  3. 单击创建

API调用

POST /api/ragflow/chats
Content-Type: application/json

{
  "name":        "产品客服助手",
  "dataset_ids": ["<dataset_id>"],
  "llm":  { "temperature": 0.1, "top_p": 0.3 },
  "prompt": {
    "similarity_threshold":     0.2,
    "vector_similarity_weight": 0.3,
    "top_n":            6,
    "show_quote":       true,
    "empty_response":   "抱歉,我没有在知识库中找到相关信息。",
    "prompt":           "你是产品客服。请只依据 {{knowledge}} 用简洁中文回答用户问题。"
  }
}

发起对话

界面操作

  1. 在助手列表中,单击目标助手卡片,进入对话视图。

  2. 在左侧会话列表中,单击+ 新建会话,或选择一个历史会话继续。

  3. 在输入框中键入问题,按Enter键发送(Shift+Enter换行)。回答以流式方式实时展示。

  4. 每段回答末尾的引用标记可展开查看命中切片与原文链接。

API调用

  1. 创建会话。

    POST /api/ragflow/chats/<chat_id>/sessions
    Content-Type: application/json
    
    { "name": "首次对话" }
  2. 流式问答。

    POST /api/ragflow/chats/<chat_id>/completions
    Content-Type: application/json
    
    {
      "session_id": "<session_id>",
      "question":   "退货需要多久?",
      "stream":     true
    }

    流式响应每帧格式:

    data: {"code":0,"data":{"answer":"一般7个工作日内...","reference":{...},"finish":false}}

通过Skill检索

平台内置了两个预置Skill,可让AI助手直接访问知识库,无需手动调用API。

Skill名称

能力

适用角色

知识库智能代理(polardb-kb-agent)

读写:管理知识库、上传或删除文档、修改切片、检索

管理员、运维

导入Skill

管理员在SKILLS管理 > 导入预设中启用对应Skill。

使用方式

启用Skill后,AI助手自动获得调用知识库检索的能力。您只需使用自然语言提问,AI助手会自动触发检索并整合结果生成回答。

命令速查

  • # 基础检索(使用配置的默认知识库)
    python3 scripts/search.py "如何配置数据库连接池?"
    
    # 指定知识库 + 返回更多结果
    python3 scripts/search.py "部署流程" --dataset-ids ds-abc123,ds-xyz --top-k 10
    
    # 含图片(图表/架构图类问题)
    python3 scripts/search.py "系统架构图" --with-images --json
  • 查看知识库:

    python3 scripts/datasets.py list --json           # 列出所有可见知识库
    python3 scripts/datasets.py info ds-abc123        # 查看详情
  • 查看文档与解析状态:

    python3 scripts/list_documents.py ds-abc123 --run DONE --suffix pdf
    python3 scripts/parse_status.py  ds-abc123        # 聚合解析进度
  • 管理型操作(仅polardb-kb-agent):

    python3 scripts/datasets.py create --name "new-kb" --chunk-method naive
    python3 scripts/upload_documents.py ds-abc123 ./docs/*.pdf
    python3 scripts/parse_documents.py ds-abc123 --all
    python3 scripts/update_dataset.py ds-abc123 --chunk-method paper
    说明

    所有Skill脚本默认读取环境变量ONTOLOGY_BASE_URLONTOLOGY_API_KEY。在AI助手中导入Skill时会自动注入,无需手动设置。

典型场景

  • 研发答疑:将内部设计文档导入知识库,在AI助手中直接查询架构和接口细节。

  • 客服SOP:将FAQ导入知识库,客服人员通过AI助手获取标准话术。

  • 工单定位:将历史故障报告入库,出现故障时通过AI助手检索相似案例。

  • 批量语义分析:使用--json配合脚本,对一批问题执行检索并导出结果做评估。