关于 denser-retriever
denser-retriever 是用于调用 Denser Retriever REST API 的技能,可管理知识库并对文档进行语义搜索。它通过 curl 指导文件与文本导入、处理状态检查和查询。
主要功能
- 01创建和管理知识库
- 02上传并导入支持的文件
- 03直接导入纯文本
- 04检查文档处理状态
- 05语义搜索文档
适用场景
- 01从文件建立可搜索的知识库
- 02无需上传文件即可添加文本
- 03搜索指定或全部知识库
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ denser-org/ claude-skills --skill denser-retriever安装后在 Claude Code 中输入/denser-retriever确认已加载。
附带文件references/api_reference.md
详细介绍
Denser Retriever API
通过 Denser Retriever REST API 管理知识库,并对文档执行语义搜索。所有操作均使用 curl 命令。
设置
API 密钥:从 DENSER_API_KEY 环境变量读取。如果未设置,请向用户索取 API 密钥。
基础 URL:https://retriever.denser.ai/api/open/v1
检查密钥是否可用:
echo $DENSER_API_KEY
如果为空,请向用户询问:“请提供您的 Denser Retriever API 密钥(可在组织设置中找到)。”
快速参考
| 操作 | 方法 | 端点 |
|---|---|---|
| 获取用量 | GET | /v1/getUsage |
| 获取余额 | GET | /v1/getBalance |
| 创建知识库 | POST | /v1/createKnowledgeBase |
| 列出知识库 | GET | /v1/listKnowledgeBases |
| 更新知识库 | POST | /v1/updateKnowledgeBase |
| 删除知识库 | POST | /v1/deleteKnowledgeBase |
| 上传文件(预签名) | POST | /v1/presignUploadUrl |
| 导入文件 | POST | /v1/importFile |
| 导入文本 | POST | /v1/importTextContent |
| 列出文档 | GET | /v1/listDocuments |
| 删除文档 | POST | /v1/deleteDocument |
| 检查文档状态 | GET | /v1/getDocumentStatus |
| 搜索/查询 | POST | /v1/query |
完整的请求/响应架构请参阅 references/api_reference.md。
常见工作流
1. 根据文件构建知识库
这是一个多步骤流程:创建知识库、上传每个文件、等待处理完成,然后进行搜索。
步骤 1:创建知识库
curl -s -X POST "https://retriever.denser.ai/api/open/v1/createKnowledgeBase" \
-H "x-api-key: $DENSER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "My KB", "description": "Optional description"}' | python3 -m json.tool
保存返回的 id,以供后续操作使用。
步骤 2:对每个文件执行 3 步上传操作
a) 获取预签名上传 URL:
curl -s -X POST "https://retriever.denser.ai/api/open/v1/presignUploadUrl" \
-H "x-api-key: $DENSER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"knowledgeBaseId": "KB_ID", "fileName": "document.pdf", "size": FILE_SIZE_BYTES}' | python3 -m json.tool
b) 将文件上传到预签名 URL(原始字节,使用 PUT 请求):
curl -s -X PUT "PRESIGNED_UPLOAD_URL" --data-binary @/path/to/document.pdf
c) 触发导入处理:
curl -s -X POST "https://retriever.denser.ai/api/open/v1/importFile" \
-H "x-api-key: $DENSER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"fileId": "FILE_ID"}' | python3 -m json.tool
步骤 3:轮询,直到处理完成
curl -s -X GET "https://retriever.denser.ai/api/open/v1/getDocumentStatus?documentId=DOC_ID" \
-H "x-api-key: $DENSER_API_KEY" | python3 -m json.tool
每隔 2-3 秒重复一次,直到 status 为 "processed"。如果状态为 "failed" 或 "timeout",请报告错误。
步骤 4:搜索
curl -s -X POST "https://retriever.denser.ai/api/open/v1/query" \
-H "x-api-key: $DENSER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "your search query", "knowledgeBaseIds": ["KB_ID"], "limit": 10}' | python3 -m json.tool
2. 直接导入文本内容
适用于无需上传文件的纯文本:
curl -s -X POST "https://retriever.denser.ai/api/open/v1/importTextContent" \
-H "x-api-key: $DENSER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"knowledgeBaseId": "KB_ID", "title": "My Document", "content": "Full text content here..."}' | python3 -m json.tool
3. 搜索所有知识库
省略 knowledgeBaseIds 即可搜索所有内容:
curl -s -X POST "https://retriever.denser.ai/api/open/v1/query" \
-H "x-api-key: $DENSER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "your search query", "limit": 10}' | python3 -m json.tool
自动化模式
批量上传多个文件
用户提供文件目录时,循环处理其中的文件:
KB_ID="your-kb-id"
for file in /path/to/files/*; do
FILE_NAME=$(basename "$file")
FILE_SIZE=$(stat -f%z "$file" 2>/dev/null || stat -c%s "$file" 2>/dev/null)
# Get presigned URL
PRESIGN=$(curl -s -X POST "https://retriever.denser.ai/api/open/v1/presignUploadUrl" \
-H "x-api-key: $DENSER_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"knowledgeBaseId\": \"$KB_ID\", \"fileName\": \"$FILE_NAME\", \"size\": $FILE_SIZE}")
UPLOAD_URL=$(echo "$PRESIGN" | python3 -c "import sys,json; print(json.load(sys.stdin)['data']['uploadUrl'])")
FILE_ID=$(echo "$PRESIGN" | python3 -c "import sys,json; print(json.load(sys.stdin)['data']['fileId'])")
# Upload file
curl -s -X PUT "$UPLOAD_URL" --data-binary @"$file"
# Trigger import
curl -s -X POST "https://retriever.denser.ai/api/open/v1/importFile" \
-H "x-api-key: $DENSER_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"fileId\": \"$FILE_ID\"}"
echo "Uploaded: $FILE_NAME (fileId: $FILE_ID)"
done
轮询文档状态,直到就绪
DOC_ID="your-document-id"
while true; do
STATUS=$(curl -s -X GET "https://retriever.denser.ai/api/open/v1/getDocumentStatus?documentId=$DOC_ID" \
-H "x-api-key: $DENSER_API_KEY" | python3 -c "import sys,json; print(json.load(sys.stdin)['data']['status'])")
echo "Status: $STATUS"
if [ "$STATUS" = "processed" ] || [ "$STATUS" = "failed" ] || [ "$STATUS" = "timeout" ]; then
break
fi
sleep 3
done
响应格式
所有响应均遵循以下结构:
成功: {"success": true, "data": { ... }}
错误: {"success": false, "message": "Error details", "errorCode": "ERROR_CODE"}
常见错误代码:STORAGE_LIMIT_EXCEEDED、KNOWLEDGE_BASE_LIMIT_EXCEEDED、INSUFFICIENT_CREDITS、INPUT_VALIDATION_FAILED
支持的文件类型
PDF、DOCX、PPTX、XLS、XLSX、HTML、TXT、CSV、XML、Markdown。文件大小上限:512MB。
重要说明
- 每次搜索查询消耗 1 个积分。批量搜索前,请使用
getBalance检查余额。 - 文档处理是异步的——搜索前务必轮询
getDocumentStatus。 - 上传文件必须遵循
presignUploadUrl-> PUT 上传 ->importFile流程。 - 搜索结果包含
score、content、title、document_id和metadata。