ragflow-opencaio

v2026.09.24

RAGFlow OpenCAIO 知识库文档上传与管理。当需要将文档上传到鲲界公司 OpenCAIO 知识库、检索知识库内容、或管理 RAGFlow 数据集时使用此 skill。

GitHub
Install command
npx skhub add aaaaqwq/ragflow-opencaio
Markdown
SKILL.md

RAGFlow OpenCAIO 知识库管理

将文档上传到 OpenCAIO 知识库,使用 RAGFlow API 完成上传、解析、检索全流程。

配置信息

配置项值
服务器地址http://8.134.103.73:12700
API Keyragflow-mlZjyQxsDT27bhT6tbONrn0f6dyA-g6hR1jcRqh1lNo
知识库 ID2ccc31fe4f8511f181580bef240bdf9e
知识库名称OpenCAIO
嵌入模型text-embedding-v2@Tongyi-Qianwen
对话模型deepseek-v4-flash@DeepSeek
分块方法naive (512 tokens/chunk)
GraphRAG开启
RAPTOR开启
语言English

API 端点速查

操作方法端点
知识库状态GET/api/v1/datasets/2ccc31fe4f8511f181580bef240bdf9e
上传文档POST/api/v1/datasets/2ccc31fe4f8511f181580bef240bdf9e/documents
文档列表GET/api/v1/datasets/2ccc31fe4f8511f181580bef240bdf9e/documents
删除文档DELETE/api/v1/datasets/2ccc31fe4f8511f181580bef240bdf9e/documents
解析文档POST/api/v1/datasets/2ccc31fe4f8511f181580bef240bdf9e/chunks
添加分块POST/api/v1/datasets/{id}/documents/{doc_id}/chunks
检索知识POST/api/v1/retrieval
OpenAI 对话POST/api/v1/openai/{chat_id}/chat/completions
创建对话POST/api/v1/chats

通用请求头

Authorization: Bearer ${RAGFLOW_API_KEY}
Content-Type: application/json  (检索/解析/对话)
Content-Type: multipart/form-data  (上传)

知识库分类体系(强制)

OpenCAIO 知识库采用路径文件夹结构,五层顶级目录:

skills/     → 技能定义(每个 Skill 一个子文件夹)
agents/     → Agent 配置
company/    → 公司资料
standards/  → 规范与规则
memories/   → 记忆归档

分类准入规则

skills/{skill-name}/ — 技能定义,每个 Skill 一个独立文件夹

  • ✅ 完整 SKILL.md,一个文件夹一个 Skill
  • ❌ 混放多个 Skill、使用记录、片段引用
  • 命名: skills/{skill-name}/SKILL.md

agents/{agent-name}/ — Agent 配置

  • ✅ IDENTITY/SOUL/AGENTS 完整内容、A2A协议、路由规则
  • 命名: agents/{agent-name}/{文档名}_v{版本}.md

company/ — 公司资料

  • ✅ 产品介绍、商业计划、组织架构
  • 命名: company/{主题}_{日期}.md

standards/ — 规范规则

  • ✅ 行为规范、代码规范、安全策略
  • 命名: standards/{规范名}_v{版本}.md

memories/ — 记忆归档

  • 命名: memories/{主题}_{日期}.md

分类检查清单

上传前必须确认:

  1. ✅ 使用路径格式: {top-folder}/{sub-folder}/文件名.md
  2. ✅ 一个 Skill 一个文件夹(不可混放)
  3. ✅ YAML front matter 中 category 字段匹配
  4. ✅ 检查是否已存在同名路径(存在则先删后传)

文档上传标准(强制)

1. 文档格式要求

标准要求说明
文件格式.md 优先,支持 .txt .pdf .docx .htmlMarkdown 结构清晰,解析效果最好
文件名{类别}_{主题}_{日期}.md例: product_opencaio-intro_2026-05-19.md
编码UTF-8避免中文乱码
大小单文件 ≤ 10MB超大文件拆分上传

2. 内容质量标准

必须满足:
✅ 有明确的标题层级(H1 → H2 → H3)
✅ 每段内容独立完整,可独立理解
✅ 关键术语首次出现时给出定义
✅ 代码块标注语言类型
✅ 无重复内容

禁止上传:
❌ 纯占位符或草稿内容
❌ 大量重复或高度相似的内容
❌ 无结构的长文本(超过 2000 字无标题分段)
❌ 包含敏感信息(密钥、密码、个人隐私)

3. 元数据标准(可选但推荐)

在 Markdown 文档顶部添加 YAML front matter:

---
title: "文档标题"
category: "product|technical|design|business|meeting"
author: "作者"
date: "YYYY-MM-DD"
tags: ["tag1", "tag2"]
version: "1.0"
---

4. 文档命名规范

类别路径格式示例
技能定义skills/{skill-name}/skills/ragflow-opencaio/SKILL.md
Agent配置agents/{agent-name}/agents/protocols/A2A-Protocol_v1.md
公司资料company/company/OpenCAIO产品介绍_2026-05-19.md
规范规则standards/standards/taxonomy-rules_v1.1.md
记忆归档memories/memories/architecture-decision_2026-05-19.md

标准工作流

Step 1: 准备文档

1. 确认文档符合上述内容质量标准
2. 按命名规范重命名文件
3. 检查文件编码为 UTF-8

Step 2: 上传文档

curl -X POST \
  http://8.134.103.73:12700/api/v1/datasets/2ccc31fe4f8511f181580bef240bdf9e/documents \
  -H "Authorization: Bearer ${RAGFLOW_API_KEY}" \
  -F "file=@/path/to/document.md"

成功响应: {"code": 0, "data": [{...}]} — 记录返回的 id 字段作为 DOCUMENT_ID

Step 3: 解析文档

curl -X POST \
  http://8.134.103.73:12700/api/v1/datasets/2ccc31fe4f8511f181580bef240bdf9e/chunks \
  -H "Authorization: Bearer ${RAGFLOW_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{"document_ids": ["DOCUMENT_ID"]}'

成功响应: {"code": 0}

Step 4: 验证解析结果

等待 3-10 秒后检查文档状态:

curl -s \
  http://8.134.103.73:12700/api/v1/datasets/2ccc31fe4f8511f181580bef240bdf9e/documents \
  -H "Authorization: Bearer ${RAGFLOW_API_KEY}" \
  | python3 -c "import sys,json; [print(f'{d[\"name\"]}: run={d[\"run\"]} chunks={d.get(\"chunk_count\",0)}') for d in json.load(sys.stdin)['data']['docs']]"

验证标准:

  • run = DONE
  • status = 1
  • chunk_count > 0

Step 5: 检索验证

curl -X POST \
  http://8.134.103.73:12700/api/v1/retrieval \
  -H "Authorization: Bearer ${RAGFLOW_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{"question": "测试查询内容", "dataset_ids": ["2ccc31fe4f8511f181580bef240bdf9e"]}'

验证标准:

  • 返回 chunks 非空
  • similarity > 0.3
  • 内容与查询相关

批量上传工作流

多文件上传时:

1. 扫描目录,过滤出符合标准的文件
2. 逐个上传(间隔 2 秒,避免触发限流)
3. 收集所有 DOCUMENT_ID
4. 一次性提交解析: {"document_ids": ["id1", "id2", ...]}
5. 等待解析完成(轮询检查,间隔 5 秒,最多等 60 秒)
6. 验证所有文档 chunk_count > 0
7. 输出报告: 成功/失败数量、失败文档及原因

批量上传脚本模板:

#!/bin/bash
SERVER="http://8.134.103.73:12700"
KEY="ragflow-mlZjyQxsDT27bhT6tbONrn0f6dyA-g6hR1jcRqh1lNo"
DS="2ccc31fe4f8511f181580bef240bdf9e"
DIR="${1:-.}"

IDS=()
for f in "$DIR"/*.md; do
  [ -f "$f" ] || continue
  echo "📤 $f"
  RESP=$(curl -s -X POST "$SERVER/api/v1/datasets/$DS/documents" \
    -H "Authorization: Bearer ${RAGFLOW_API_KEY}" -F "file=@$f")
  ID=$(echo "$RESP" | python3 -c "import sys,json; print(json.load(sys.stdin)['data'][0]['id'])" 2>/dev/null)
  if [ -n "$ID" ]; then
    IDS+=("\"$ID\"")
    echo "  ✅ $ID"
  else
    echo "  ❌ 失败: $RESP"
  fi
  sleep 2
done

if [ ${#IDS[@]} -gt 0 ]; then
  ID_LIST=$(IFS=,; echo "${IDS[*]}")
  echo "🔧 解析 ${#IDS[@]} 个文档..."
  curl -s -X POST "$SERVER/api/v1/datasets/$DS/chunks" \
    -H "Authorization: Bearer ${RAGFLOW_API_KEY}" \
    -H "Content-Type: application/json" \
    -d "{\"document_ids\": [$ID_LIST]}"
fi

检索与对话

直接检索(获取原文片段)

curl -X POST http://8.134.103.73:12700/api/v1/retrieval \
  -H "Authorization: Bearer ${RAGFLOW_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{"question": "查询内容", "dataset_ids": ["2ccc31fe4f8511f181580bef240bdf9e"]}'

OpenAI 兼容对话(LLM 总结回答)

# 1. 创建 Chat Assistant
CHAT_ID=$(curl -s -X POST http://8.134.103.73:12700/api/v1/chats \
  -H "Authorization: Bearer ${RAGFLOW_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{"name": "Assistant", "dataset_ids": ["2ccc31fe4f8511f181580bef240bdf9e"]}' \
  | python3 -c "import sys,json; print(json.load(sys.stdin)['data']['id'])")

# 2. 对话
curl -X POST "http://8.134.103.73:12700/api/v1/openai/$CHAT_ID/chat/completions" \
  -H "Authorization: Bearer ${RAGFLOW_API_KEY}" \
  -H "Content-Type: application/json" \
  -d "{\"model\": \"model\", \"messages\": [{\"role\": \"user\", \"content\": \"问题\"}], \"stream\": false}"

质量检查清单(每次上传后执行)

□ 文档格式符合标准(Markdown / 有标题层级)
□ 文件名遵循命名规范
□ 编码为 UTF-8
□ 上传成功(code=0)
□ 解析完成(run=DONE, status=1)
□ chunk_count > 0
□ 检索验证通过(返回相关结果,similarity > 0.3)
□ 无重复文档(上传前检查是否已存在同名文档)

错误处理

错误码含义处理
401API Key 无效检查 API Key 是否正确
102知识库为空/无分块上传并解析文档
102content is required手动添加分块时缺少 content 字段
102document_ids is required解析/删除时缺少 document_ids
400文件格式不支持转换为 .md/.txt/.pdf 格式

常见问题

文档解析后 chunk_count = 0

  • 检查文件编码是否为 UTF-8
  • 检查文件是否为空
  • 检查解析配置中的 delimiter 是否匹配

检索相似度过低

  • 知识库文档太少,补充更多相关文档
  • 查询过于宽泛,换更具体的关键词
  • 调整 similarity_threshold(当前 0.2)

辅助脚本

完整 CLI 工具: ragflow/opencaio.sh

bash ragflow/opencaio.sh status            # 知识库状态
bash ragflow/opencaio.sh upload file.md    # 上传文档
bash ragflow/opencaio.sh list              # 文档列表
bash ragflow/opencaio.sh search "query"    # 检索
bash ragflow/opencaio.sh chat "question"   # AI 对话

执行约束

  1. 上传前必须通过内容质量检查
  2. 上传后必须等待解析完成并验证
  3. 批量上传必须间隔 ≥ 2 秒,避免触发限流
  4. 不要上传包含敏感信息的文档
  5. 重复文档先删除旧版再上传新版
  6. 上传失败立即报告,附错误信息
  7. 每次操作后更新 memory 记录变更
Discovery
Tags

No tags published for this skill.

Version
Latest version metadata

Version

v2026.09.24

Published

Sep 24, 2026

Category

Uncategorized

License

MIT

Source path

skills/ragflow-opencaio

Default branch

main

Latest commit

b996aac

Tree SHA

07e787b