能力标签
知识检索工具
🔌
MCP工具

知识检索工具

基于 Python · 让 AI 助手直接操作你的系统与工具
英文名:knowledge-rag
⭐ 84 Stars 🍴 14 Forks 💻 Python 📄 MIT 🏷 AI 8.0分
8.0AI 综合评分
mcpbm25chromadbclaudedocument-search
✦ AI Skill Hub 推荐

知识检索工具 是 AI Skill Hub 本期精选MCP工具之一。综合评分 8.0 分,整体质量较高。我们强烈推荐将其纳入你的 AI 工具库,帮助提升工作效率。

📚 深度解析

知识检索工具 是一款基于 MCP(Model Context Protocol)标准协议的 AI 工具扩展。MCP 协议由 Anthropic 开发并开源,旨在建立 AI 模型与外部工具之间的标准化通信接口,目前已被 Claude Desktop、Claude Code、Cursor 等主流 AI 工具采纳。

通过安装 知识检索工具,你的 AI 助手将获得额外的工具调用能力,可以用自然语言直接操控该工具的功能,无需学习复杂的命令行语法。MCP 工具的核心价值在于"一次配置,永久增强"——配置完成后,每次与 AI 对话时都可以无缝调用这些工具。

在技术实现上,MCP 工具通过标准的 JSON-RPC 协议与 AI 客户端通信,工具的功能以"工具列表"的形式暴露给 AI 模型,AI 可以按需调用。知识检索工具 提供了结构化的工具调用接口,使 AI 模型能够精确地理解和使用每个功能点,显著降低 AI 在工具使用上的错误率。

与传统的 API 集成相比,MCP 工具的优势在于无需编写代码——用户只需在配置文件中添加几行 JSON,即可让 AI 获得全新能力。AI Skill Hub 将 知识检索工具 评为 AI 评分 8.0 分,属于同类工具中的优质选择。

📋 工具概览

知识检索工具 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。

GitHub Stars
⭐ 84
开发语言
Python
支持平台
Windows / macOS / Linux
维护状态
轻量级项目,按需更新
开源协议
MIT
AI 综合评分
8.0 分
工具类型
MCP工具
Forks
14

📖 中文文档

以下内容由 AI Skill Hub 根据项目信息自动整理,如需查看完整原始文档请访问底部「原始来源」。

知识检索工具 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。

📌 核心特色
  • 通过标准 MCP 协议与 Claude、Cursor 等主流 AI 客户端深度集成
  • 提供结构化工具调用接口,显著降低 AI 集成复杂度
  • 支持 Claude Desktop 和 Claude Code 无缝接入,开箱即用
  • 可与其他 MCP 工具组合叠加,构建完整 AI 工作站
  • 轻量无侵入设计,不影响现有系统架构
🎯 主要使用场景
  • 在 Claude Desktop 对话中直接调用本地工具,实现 AI 与系统的深度联动
  • 通过自然语言驱动复杂的多步骤自动化任务,代替繁琐手动操作
  • 将多个 MCP 工具组合使用,构建个人专属 AI 工作站
以下安装命令基于项目开发语言和类型自动生成,实际以官方 README 为准。
安装命令
# 方式一:通过 Claude Code CLI 一键安装
claude skill install https://github.com/lyonzin/knowledge-rag

# 方式二:手动配置 claude_desktop_config.json
{
  "mcpServers": {
    "------": {
      "command": "npx",
      "args": ["-y", "knowledge-rag"]
    }
  }
}

# 配置文件位置
# macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
# Windows: %APPDATA%/Claude/claude_desktop_config.json
📋 安装步骤说明
  1. 确认已安装 Node.js(v18 或以上版本)
  2. 打开 Claude Desktop 或 Claude Code 的 MCP 配置文件
  3. 按「交给 Agent 安装 → Claude Desktop」标签中的 JSON 配置填入 mcpServers 字段
  4. 保存配置文件并重启 Claude 客户端
  5. 重启后,在对话中即可使用本工具
以下用法示例由 AI Skill Hub 整理,涵盖最常见的使用场景。
常用命令 / 代码示例
# 安装后在 Claude 对话中直接使用
# 示例:
用户: 请帮我用 知识检索工具 执行以下任务...
Claude: [自动调用 知识检索工具 MCP 工具处理请求]

# 查看可用工具列表
# 在 Claude 中输入:"列出所有可用的 MCP 工具"
以下配置示例基于典型使用场景生成,具体参数请参照官方文档调整。
配置示例
// claude_desktop_config.json 配置示例
{
  "mcpServers": {
    "______": {
      "command": "npx",
      "args": ["-y", "knowledge-rag"],
      "env": {
        // "API_KEY": "your-api-key-here"
      }
    }
  }
}

// 保存后重启 Claude Desktop 生效
📑 README 深度解析 真实文档 完整度 57/100 含工作流图 查看 GitHub 原文 →
以下内容由系统直接从 GitHub README 解析整理,保留代码块、表格与列表结构。

简介

<p align="center"> <img src="./assets/knowledge-rag-banner.png" alt="knowledge-rag — Local Hybrid RAG for MCP" width="100%" /> </p>

🚀 Zero-friction setup

pip install knowledge-rag → restart your MCP client → done. No Docker mandatory. No Ollama required. No separate embedding server. Everything runs in-process via FastEmbed ONNX. Works offline after the first model download.

</td> </tr> <tr> <td width="50%" valign="top">

Path 3 — Docker (models pre-downloaded, air-gapped ready)

docker pull ghcr.io/lyonzin/knowledge-rag:latest
docker run -v $(pwd)/documents:/app/documents -p 8179:8179 ghcr.io/lyonzin/knowledge-rag:latest

Full installation guide with all 5 methods, 8 MCP client configurations, and GPU setup: docs/INSTALLATION.md →

---

Option 2 — Via our install.sh (no Node needed; works on Linux/macOS/WSL/Git Bash)

curl -fsSL https://raw.githubusercontent.com/lyonzin/knowledge-rag/master/skills/install.sh | bash ```

Both restart-Claude-Code and you are done. Option 2 supports --project, --only rag-check-first,rag-cite-sources, --dry-run, --help.

For Cursor, Windsurf, Cline and full manual instructions → skills/README.md · Full catalog with skill chains → skills/CATALOG.md

---

🚀 Quick Start (3 minutes, from zero to your first query)

Pick your integration path — knowledge-rag ships the same server through every channel.

💼 Use Cases (real corpora, real teams)

config.yaml

server: transport: "sse" # or "streamable-http" host: "0.0.0.0" port: 8179 auth: bearer_token: "your-secret-token" rate_limit: enabled: true requests_per_minute: 60 metrics: enabled: true port: 9179 logging: format: "json" # ELK / Loki / Datadog / CloudWatch ready

bash knowledge-rag --transport sse ```

  • Health probe: curl http://your-host:8179/health → 200 + JSON payload
  • Prometheus scrape: http://your-host:9179/metrics
  • MCP dispatcher: authenticated via Authorization: Bearer your-secret-token

Option 1 — Via skills.sh (needs Node — one command, zero clone)

npx skills add lyonzin/knowledge-rag

🏢 Enterprise Features (built-in, zero configuration)

Every RAG framework claims "production-ready." Here is what knowledge-rag ships in the OSS core, verified by regression tests, that competitors either paywall, plugin-ify, or simply don't have.

⚙️ Configuration in 30 seconds

```yaml

config.yaml — everything is optional; defaults just work

paths: documents_dir: "./documents" data_dir: "./data"

models: embedding: profile: "compact" # "compact" | "quality" | "multilingual" | "custom" gpu: "auto" # "auto" | "true" | "false" reranker: enabled: true # cross-encoder rerank

search: default_results: 5 max_results: 100

server: # optional — SSE / HTTP mode transport: "stdio" # or "sse" / "streamable-http" auth: bearer_token: "" # set a secret to enable auth rate_limit: enabled: false metrics: enabled: false logging: format: "text" # or "json" ```

Pre-built presets: cybersecurity.yaml · developer.yaml · research.yaml · general.yaml · multilingual.yaml

Complete configuration reference — every field, every default, tuning guide: docs/CONFIGURATION.md →

---

📄 35 File Formats — parsed natively, no plugins needed

Every parser is chunk-aware — Markdown splits at ## headers, code splits at function/class boundaries, notebooks skip base64 outputs, PDFs use PyMuPDF, spreadsheets extract sheet-by-sheet. 33 formats are enabled by default; the 2 MetaTrader formats are opt-in (add to documents.supported_formats in config.yaml).

#FormatExtensionParserDefaultNotes
1Markdown.mdSection-aware (splits at ##)YesHeaders preserved as chunk boundaries
2Plain Text.txtFixed-size chunkingYes1000 chars + 200 overlap
3PDF.pdfPyMuPDF extractionYesText-based PDFs only (no OCR)
4Word.docxpython-docxYesHeadings preserved as markdown
5Excel.xlsxopenpyxlYesSheet-by-sheet extraction
6PowerPoint.pptxpython-pptxYesSlide-by-slide extraction
7Jupyter Notebook.ipynbCell-aware parserYesMarkdown + code cells only; skips outputs/base64
8JSON.jsonStructure-awareYesFlattened key-value extraction
9CSV.csvRow-based parserYesHeaders + rows as text
10XML.xmlXML parserYesRoot element + namespace metadata
11Python.pyCode-aware parserYesFunctions/classes as chunks
12C Source.cCode-aware parserYesFunctions / structs / includes extracted
13C/C++ Header.hCode-aware parserYesFunction declarations + structs extracted
14C++ Source.cppCode-aware parserYesClasses / structs / includes extracted
15JavaScript.jsCode-aware parserYesFunctions / classes / imports (ESM + CJS)
16React JSX.jsxCode-aware parserYesSame as JS parser
17TypeScript.tsCode-aware parserYesFunctions / classes / interfaces / enums / imports
18React TSX.tsxCode-aware parserYesSame as TS parser
19Go.goCode-aware parserYesFunctions / structs / imports extracted
20Rust.rsCode-aware parserYesFunctions / structs / enums / traits / use imports
21Kotlin.ktCode-aware parserYesFunctions (incl. class members) / classes extracted
22YAML.yamlYAML parserYesKubernetes kind / apiVersion / name extracted
23YAML.ymlYAML parserYesSame as YAML parser
24HuJSON.hujsonHuJSON parserYesJSON with comments + trailing commas (e.g. Tailscale ACLs)
25CUE.cueCode-aware parserYesImports / package extracted
26Protocol Buffers.protoProto parserYesServices / messages / RPCs extracted
27Rego.regoCode-aware parserYesOPA policies — imports / package extracted
28SQL.sqlSQL parserYesTable names + statement types extracted
29Shell.shShell parserYesFunction names extracted
30jq.jqShell parserYesIndexed as shell-style script
31DockerfileDockerfileText parserYesMatched by exact filename (no extension)
32MakefileMakefileText parserYesMatched by exact filename (no extension)
33TiltfileTiltfileCode-aware parserYesStarlark — def functions / load() extracted
34MQL4 Source.mq4Code parser**No**MetaTrader — opt-in via documents.supported_formats
35MQL4 Header.mqhCode parser**No**MetaTrader — opt-in via documents.supported_formats
Enable an opt-in format — add the extension to documents.supported_formats in your config.yaml:
> documents:
>   supported_formats: [".md", ".pdf", ".mq4", ".mqh"]
> 

Full parser reference with per-format notes: docs/CONFIGURATION.md

---

🔌 Choose your MCP integration

Claude Code<br/> ~/.claude.json

</td> <td align="center" width="14%">

Claude Desktop<br/> claude_desktop_config.json

</td> <td align="center" width="14%">

Cursor<br/> ~/.cursor/mcp.json

</td> <td align="center" width="14%">

Windsurf<br/> ~/.codeium/windsurf/mcp_config.json

</td> <td align="center" width="14%">

VS Code<br/> Copilot Chat mcp.json

</td> <td align="center" width="14%">

Cline · Gemini CLI · Zed<br/> Native MCP

</td> </tr> </table>

Complete client configuration guide with JSON schemas per client: docs/INSTALLATION.md#use-with-other-mcp-clients →

---

📊 How knowledge-rag compares to other RAG frameworks

We audited 16 popular RAG frameworks and platforms (LlamaIndex, LangChain, ChromaDB, Weaviate, Qdrant, RAGFlow, LightRAG, DSPy, GraphRAG, Haystack, RAG-Anything, kotaemon, txtai, llmware, Dify, open-webui, FastGPT) so you can pick honestly.

Legend: ✅ built-in · 🟡 plugin / paid tier / partial · ❌ not available · ⚠️ license or default concern

Dimension🎯 **knowledge-rag**LlamaIndexLangChainHaystackRAGFlowtxtaiopen-webuiDifyQdrant
**100% local, zero cloud**🟡🟡🟡🟡🟡
**MCP native (Claude/Cursor)**✅ 13 tools🟡 pkg🟡 adapter🟡 wrapper🟡 add-on✅ consumer
**Hybrid BM25 + semantic**✅ 128× faster🟡🟡
**Cross-encoder rerank**✅ builtin🟡✅ fused🟡🟡
**Bearer auth builtin**❌ core🟡✅ RBAC✅ OAuth2
**Prometheus /metrics**❌ core✅ OTel
**Rate limiting**✅ sliding-window
**Health probes** (/health)🟡🟡
**Structured JSON logging**✅ opt-in✅ OTel🟡
**Zero-downtime reindex**
**Async background reindex**✅ + polling🟡
**GPU CUDA optional**✅ 12 auto🟡🟡🟡
**File formats builtin**✅ **20**0 (LlamaParse=$)50+ plugins✅ **36+**8+??~10
**Setup < 5 min POC**✅ pip 1-liner❌ 16GB RAM✅ docker✅ docker
**Nightly chaos + soak + mutation**
**License**✅ MITMITMITApache-2.0Apache-2.0Apache-2.0⚠️ preserving⚠️ restrictiveApache-2.0
The 5 dimensions where knowledge-rag is unique: health probes + JSON logging + Prometheus + rate limit + bearer auth simultaneously built-in on an OSS RAG-focused MCP server. Zero-downtime reindex + async background reindex + nightly chaos/soak/mutation are documented on nobody else's README.

---

Path 1 — Claude Code, Cursor, Windsurf, Cline, VS Code, Gemini CLI, Zed (MCP)

pip install knowledge-rag
knowledge-rag init                    # scaffolds config.yaml + documents/

Drop your PDFs, markdown, code files into documents/. Restart your MCP client. Ask it:

search_knowledge("your query")

That's it. First query loads the ONNX embedding model (~200MB, one-off download). Subsequent queries are cached and hit sub-second latency.

🇨🇳 中文文档镜像 AI 翻译 2026-05-27
英文原文章节由系统翻译为中文摘要,便于快速理解。完整原文见上方 "📑 README 深度解析"。
📌 简介

Knowledge RAG 是一个基于 MCP (Model Context Protocol) 架构的高性能知识检索增强生成系统。它通过 FastMCP 构建了一个包含 12 种工具的 MCP Server,支持搜索、增删改查、索引重构及统计等功能。系统核心采用混合搜索引擎(Hybrid Search Engine),结合了关键词路由(Keyword Router)、语义搜索(Semantic Search/ChromaDB)以及 BM25 算法,并通过 RRF(Reciprocal Rank Fusion)技术实现多路召回结果的精准融合,为 AI Agent 提供可靠的本地知识库支撑。

⚡ 功能介绍

本项目在 v3.9.0 版本中引入了严格的 Quality Gate 质量门禁,涵盖安全、稳定性、内存泄漏等 7 大维度及混沌测试。核心功能包括:支持语义与 BM25 结合的 Hybrid Search 混合搜索;集成 Cross-Encoder Reranker(使用 Xenova/ms-marco-MiniLM-L-6-v2)进行高精度重排序;支持通过 ONNX CUDA 实现 GPU 加速,使索引速度提升 5-10 倍;并提供高度灵活的 YAML Configuration,允许用户针对特定领域进行深度定制。

📋 环境依赖

运行本项目需要 Python 3.11 或更高版本。用户需安装 Claude Code CLI,或者使用任何兼容 MCP 协议的客户端,如 Claude Desktop、Cursor、VS Code、Windsurf 等。此外,系统在首次运行时会自动下载模型缓存,请确保磁盘预留约 200MB 的空间。

🛠 安装步骤(Docker/pip/源码)

项目提供了五种灵活的安装方式,最终生成的 MCP server 效果一致:1. NPX(最快):通过 `npx -y knowledge-rag` 实现零配置安装,自动管理 Python 虚拟环境;2. PyPI:使用经典的 `pip install knowledge-rag`;3. 一键脚本:适用于 Linux/macOS/Windows 的 shell 安装;4. Docker:通过 `docker pull` 获取预下载好模型的镜像;5. 源码安装:通过 `git clone` 并手动安装依赖。建议初学者优先使用 NPX 方式。

🚀 使用教程

项目支持快速启动,通过 MCP 客户端即可直接调用。在内存使用方面,处理约 200 份文档时,RAM 占用约为 300-500MB。为了优化性能,Embedding 模型和 Reranker 模型均采用延迟加载(Lazy-loading)机制,仅在实际查询时才载入内存。对于包含 1000 份以上文档的大型知识库,建议开启 GPU 加速并使用 exclude patterns 来限制索引范围。

⚙️ 配置说明(含 MCP / env)

Knowledge RAG 支持通过项目根目录下的 `config.yaml` 进行完全自定义配置。如果不存在该文件,系统将以默认配置“开箱即用”。用户可以根据需求选择预设模板(如 cybersecurity、developer、research 或 general 模式)进行快速初始化,也可以基于 `config.example.yaml` 模板自行编写特定领域的配置规则。

🔌 API 说明

本项目采用本地化 AI 模型方案,无需外部 API Key 即可运行。配置中定义了 embedding 模型(如 BAAI/bge-small-en-v1.5)和 reranker 模型(如 Xenova/ms-marco-MiniLM-L-6-v2)。用户可以通过配置参数控制模型是否启用 GPU 加速(`gpu: true`)以及 reranker 的检索倍率(`top_k_multiplier`),确保检索精度与性能的平衡。

❓ FAQ 摘要

针对常见问题,本项目已在 v3.8.1 版本中修复了 Windows CI 环境下的稳定性问题,并解决了 Embedding 向量可能出现的静默零向��损坏问题(Loud-fail 机制)。如果遇到模型下载或环境配置问题,请检查网络连接及 Python 虚拟环境状态。

🎯 aiskill88 AI 点评 A 级 2026-05-25

高质量的开源MCP工具,支持多种格式解析

📚 实用指南(长尾问题)
适合谁
  • 需要让 Claude / Cursor 操作本地工具的 AI 工程师
  • 构建多智能体协作系统的 Agent 开发者
  • 构建企业知识库 / RAG 检索应用的团队
  • 需要从图片、PDF 提取文字的文档自动化场景
最佳实践
  • 配置 MCP 服务器时建议使用 stdio 传输 + JSON-RPC,避免暴露公网
  • 生产部署优先使用 Docker Compose 隔离依赖,并挂载 volume 持久化数据
  • 本地部署优先选 GGUF 量化模型,节省显存并保持响应速度
  • 分块大小建议 256-512 tokens,向量库优选 pgvector 或 Qdrant
  • Agent 任务先做 dry-run 验证工具调用链,再开启自主执行
常见错误
  • API key 直接提交到 git 仓库(请用 .env 并加入 .gitignore)
  • MCP 配置路径拼错或权限不足,重启 Claude Desktop 才生效
  • 容器内无法访问宿主机 localhost — 使用 host.docker.internal
  • embedding 模型与查询模型不一致导致检索失效
  • 显存不足直接 OOM — 优先降低 context 或换更小的量化模型
  • Python 依赖冲突:建议用 venv / uv 隔离环境
部署方案
  • Docker:knowledge-rag 提供官方镜像,docker compose up 一键启动
  • CLI:直接 npm install -g / pip install,命令行调用
  • 本地部署:CPU 8GB 起,GPU 推荐 16GB+ 显存
  • 云端托管:可放在 Vercel / Railway / Fly.io 等 PaaS 平台

⚡ 核心功能

  • 通过标准 MCP 协议与 Claude、Cursor 等主流 AI 客户端深度集成
  • 提供结构化工具调用接口,显著降低 AI 集成复杂度
  • 支持 Claude Desktop 和 Claude Code 无缝接入,开箱即用
  • 可与其他 MCP 工具组合叠加,构建完整 AI 工作站
  • 轻量无侵入设计,不影响现有系统架构
👥 适合谁
  • 需要让 Claude / Cursor 操作本地工具的 AI 工程师
  • 构建多智能体协作系统的 Agent 开发者
  • 构建企业知识库 / RAG 检索应用的团队
  • 需要从图片、PDF 提取文字的文档自动化场景
⭐ 最佳实践
  • 配置 MCP 服务器时建议使用 stdio 传输 + JSON-RPC,避免暴露公网
  • 生产部署优先使用 Docker Compose 隔离依赖,并挂载 volume 持久化数据
  • 本地部署优先选 GGUF 量化模型,节省显存并保持响应速度
  • 分块大小建议 256-512 tokens,向量库优选 pgvector 或 Qdrant
⚠️ 常见错误
  • API key 直接提交到 git 仓库(请用 .env 并加入 .gitignore)
  • MCP 配置路径拼错或权限不足,重启 Claude Desktop 才生效
  • 容器内无法访问宿主机 localhost — 使用 host.docker.internal
  • embedding 模型与查询模型不一致导致检索失效

👥 适合人群

Claude Desktop / Claude Code 用户AI 工具开发者需要扩展 AI 能力的专业人士自动化工程师

🎯 使用场景

  • 在 Claude Desktop 对话中直接调用本地工具,实现 AI 与系统的深度联动
  • 通过自然语言驱动复杂的多步骤自动化任务,代替繁琐手动操作
  • 将多个 MCP 工具组合使用,构建个人专属 AI 工作站

⚖️ 优点与不足

✅ 优点
  • +MIT 协议,可免费商用
  • +标准化 MCP 协议,生态互联性强
  • +与 Claude 官方生态无缝对接
  • +即插即用,配置简单快捷
⚠️ 不足
  • 依赖 Claude 客户端,非 Claude 用户无法使用
  • MCP 协议仍在持续演进,接口可能变更
  • 需要一定的配置步骤
⚠️ 使用须知

AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。

建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。

📄 License 说明

✅ MIT 协议 — 最宽松的开源协议之一,可自由商用、修改、分发,仅需保留版权声明。

❓ 常见问题 FAQ

knowledge-rag 是一款Python开发的AI辅助工具。开源MCP工具:Drop docs, search instantly from Claude Code — 12 MCP tools, 20 format parsers, 。⭐84 · Python 主要应用场景包括:快速搜索和管理文档。
💡 AI Skill Hub 点评

经综合评估,知识检索工具 在MCP工具赛道中表现稳健,质量优秀。如果你已有明确的使用需求,可以直接上手体验;如果还在评估阶段,建议对比同类工具后再做决策。

⬇️ 获取与下载
⬇ 下载源码 ZIP

✅ MIT 协议 · 可免费商用 · 直接从 aiskill88 服务器下载,无需跳转 GitHub

📚 深入学习 知识检索工具
查看分步骤安装教程和完整使用指南,快速上手这款工具
🌐 原始信息
原始名称 knowledge-rag
原始描述 开源MCP工具:Drop docs, search instantly from Claude Code — 12 MCP tools, 20 format parsers, 。⭐84 · Python
Topics mcpbm25chromadbclaudedocument-search
GitHub https://github.com/lyonzin/knowledge-rag
License MIT
语言 Python
🔗 原始来源
🐙 GitHub 仓库  https://github.com/lyonzin/knowledge-rag 🌐 官方网站  https://pypi.org/project/knowledge-rag/

收录时间:2026-05-25 · 更新时间:2026-05-30 · License:MIT · AI Skill Hub 不对第三方内容的准确性作法律背书。