AnglE
AnglE 是一个专注于训练和推理高性能句子嵌入(Sentence Embeddings)的开源框架。它源自 ACL 2024 收录的论文,旨在解决传统方法在语义文本相似度任务中表现不足的问题,帮助开发者轻松构建在 STS 和 MTEB 权威榜单上达到最先进水平(SOTA)的模型。
无论是算法研究人员还是工程开发者,都能通过 AnglE 仅用几行代码即可完成从 BERT 系列到大型语言模型(如 LLaMA、Qwen)的嵌入模型训练与推理。其核心亮点在于独创的"AnglE 损失函数”,通过角度优化策略显著提升了向量表示的质量。此外,它还兼容对比损失、CoSENT 及最新的 Espresso 损失等多种训练目标,并支持单卡或多卡分布式训练,具备极高的灵活性。
凭借强大的性能,基于 AnglE 训练的模型曾多次刷新 MTEB 榜单纪录,广泛应用于通用语义搜索、代码相似度匹配及医疗文本分析等场景。如果你希望快速复现前沿成果或定制专属的高质量嵌入模型,AnglE 提供了一个高效且专业的解决方案。
使用场景
某医疗科技公司的算法团队正在构建一个智能文献检索系统,旨在帮助医生快速从海量 PubMed 论文中找到与特定病例最相关的研究资料。
没有 AnglE 时
- 语义理解偏差大:传统嵌入模型难以捕捉医学术语间的深层逻辑,导致搜索“心肌梗死”时无法匹配到包含"MI"或“急性冠脉综合征”的关键论文。
- 训练门槛高且耗时:若要微调专业模型,需编写复杂的对比学习代码并手动调整损失函数,单卡训练效率低,多卡配置繁琐。
- 效果遭遇瓶颈:即便投入大量算力微调,模型在专业领域的语义相似度评测(STS)得分依然停滞不前,无法满足临床精准度要求。
- 模型适配困难:试图利用强大的 LLM(如 LLaMA)作为基座时,缺乏有效的双向依赖处理机制,导致推理速度慢且显存占用过高。
使用 AnglE 后
- 领域语义精准匹配:利用 AnglE 预训练的医学专用模型(如
pubmed-angle-large-en),系统能准确识别同义词与上下位词,显著提升召回率。 - 极简高效训练流程:借助 AnglE 封装的 Angle Loss 和 CoSENT Loss,团队仅用几行代码即可启动单卡或多卡训练,快速迭代出定制化模型。
- 刷新行业标杆性能:基于 AnglE 优化的模型在 MTEB leaderboard 上取得 SOTA 成绩,确保检索结果的相关性达到业界顶尖水平。
- 灵活支持大模型架构:直接调用 AnglE 对 LLM 的支持能力,轻松部署基于 LLaMA 等大模型的高精度嵌入服务,兼顾了性能与推理效率。
AnglE 通过角度优化的损失函数和极简的训练框架,让开发者能以最低成本获得医疗垂直领域最先进的语义嵌入能力。
运行环境要求
- 未说明
- 训练和推理均支持 GPU 加速(代码示例中使用 .cuda())
- 支持单卡和多卡训练(Multi-GPU with FSDP/Standard)
- 具体显存大小取决于所选骨干模型(BERT 系列或 LLM 系列如 Llama-2-7b/13b),LLM 模型通常需要较大显存(建议 16GB+ 并使用 float16)
- 未明确指定最低 CUDA 版本,但需兼容 PyTorch
未说明

快速开始
EN | 简体中文
AnglE 📐
由 Mixedbread 赞助
如需更详细的使用说明,请参阅 📘 文档: https://angle.readthedocs.io/en/latest/index.html
📢 使用 AnglE 训练/推理强大的句子嵌入。 该库源自论文:AnglE: 角度优化的文本嵌入。它只需几行代码即可训练最先进的基于 BERT/LLM 的句子嵌入。AnglE 也是一个通用的句子嵌入推理框架,支持多种基于 Transformer 的句子嵌入的推理。
✨ 特性
损失函数:
- 📐 AnglE 损失(ACL24)
- ⚖ 对比损失
- 📏 CoSENT 损失
- ☕️ Espresso 损失(ICLR 2025,又名 2DMSE,详情见:README_ESE)
骨干模型:
- 基于 BERT 的模型(BERT、RoBERTa、ModernBERT 等)
- 基于 LLM 的模型(LLaMA、Mistral、Qwen 等)
- 双向 LLM 基础模型(LLaMA、Mistral、Qwen、OpenELMo 等,详情请参阅:https://github.com/WhereIsAI/BiLLM)
训练:
- 单 GPU 训练
- 多 GPU 训练
🏆 成就
📅 2024年5月16日 | 论文“AnglE: 角度优化的文本嵌入”被 ACL 2024 主会场接收。
📅 2024年3月13日 | 论文“BeLLM: 面向句子嵌入的反向依赖增强大型语言模型”被 NAACL 2024 主会场接收。
📅 2024年3月8日 | 🍞 mixedbread 的嵌入 (mixedbread-ai/mxbai-embed-large-v1) 在 MTEB Leaderboard 上以平均分 64.68 获得 SOTA!该模型使用 AnglE 训练而成。恭喜 mixedbread!
📅 2023年12月4日 | 我们的通用句子嵌入 WhereIsAI/UAE-Large-V1 在 MTEB Leaderboard 上以平均分 64.64 获得 SOTA!该模型同样使用 AnglE 训练而成。
📅 2023年12月 | AnglE 在 STS 语义文本相似度基准测试中达到 SOTA 表现!
🤗 官方预训练模型
基于 BERT 的模型:
| 🤗 HF | 最大标记数 | 池化策略 | 场景 |
|---|---|---|---|
| WhereIsAI/UAE-Large-V1 | 512 | cls | 英语,通用 |
| WhereIsAI/UAE-Code-Large-V1 | 512 | cls | 代码相似性 |
| WhereIsAI/pubmed-angle-base-en | 512 | cls | 医学相似性 |
| WhereIsAI/pubmed-angle-large-en | 512 | cls | 医学相似性 |
基于 LLM 的模型:
| 🤗 HF (lora 权重) | 骨干模型 | 最大标记数 | 提示词 | 池化策略 | 场景 |
|---|---|---|---|---|---|
| SeanLee97/angle-llama-13b-nli | NousResearch/Llama-2-13b-hf | 4096 | Prompts.A |
最后一个 token | 英语,相似性测量 |
| SeanLee97/angle-llama-7b-nli-v2 | NousResearch/Llama-2-7b-hf | 4096 | Prompts.A |
最后一个 token | 英语,相似性测量 |
💡 您可以在 HuggingFace Collection 中找到更多使用 AnglE 训练的第三方嵌入。
🚀 快速入门
⬇️ 安装
使用 uv
uv pip install -U angle-emb
或 pip
pip install -U angle-emb
🔍 推理
1️⃣ 基于 BERT 的模型
选项 A:使用提示词(用于检索任务)
使用包含 {text} 占位符的提示词。可通过 Prompts.list_prompts() 查看可用提示词。
from angle_emb import AnglE, Prompts
from angle_emb.utils import cosine_similarity
# 加载模型
angle = AnglE.from_pretrained('WhereIsAI/UAE-Large-V1', pooling_strategy='cls').cuda()
# 使用提示词编码查询,不使用提示词编码文档
qv = angle.encode(['天气怎么样?'], to_numpy=True, prompt=Prompts.C)
doc_vecs = angle.encode([
'天气真好!',
'今天下雨了。',
'我要去睡觉了'
], to_numpy=True)
# 计算相似度
for dv in doc_vecs:
print(cosine_similarity(qv[0], dv))
选项 B:不使用提示词(用于相似性任务)
from angle_emb import AnglE
from angle_emb.utils import cosine_similarity
# 加载模型
angle = AnglE.from_pretrained('WhereIsAI/UAE-Large-V1', pooling_strategy='cls').cuda()
# 编码文档
doc_vecs = angle.encode([
'天气真好!',
'天气非常好!',
'我要去睡觉了'
])
# 计算两两相似度
for i, dv1 in enumerate(doc_vecs):
for dv2 in doc_vecs[i+1:]:
print(cosine_similarity(dv1, dv2))
2️⃣ 基于 LLM 的模型
对于基于 LoRA 的模型,需同时指定骨干模型和 LoRA 权重。对于 LLM 模型,务必设置 is_llm=True。
import torch
from angle_emb import AnglE, Prompts
from angle_emb.utils import cosine_similarity
# 加载带有 LoRA 权重的 LLM
angle = AnglE.from_pretrained(
'NousResearch/Llama-2-7b-hf',
pretrained_lora_path='SeanLee97/angle-llama-7b-nli-v2',
pooling_strategy='last',
is_llm=True,
torch_dtype=torch.float16
).cuda()
# 使用提示词编码
doc_vecs = angle.encode([
'天气真好!',
'天气非常好!',
'我要去睡觉了'
], prompt=Prompts.A)
# 计算相似度
for i, dv1 in enumerate(doc_vecs):
for dv2 in doc_vecs[i+1:]:
print(cosine_similarity(dv1, dv2))
3️⃣ 基于 BiLLM 的模型
通过设置 apply_billm=True 并指定模型类,启用双向 LLM。
import os
import torch
from angle_emb import AnglE
from angle_emb.utils import cosine_similarity
# 设置 BiLLM 环境变量
os.environ['BiLLM_START_INDEX'] = '31'
# 加载 BiLLM 模型
angle = AnglE.from_pretrained(
'NousResearch/Llama-2-7b-hf',
pretrained_lora_path='SeanLee97/bellm-llama-7b-nli',
pooling_strategy='last',
is_llm=True,
apply_billm=True,
billm_model_class='LlamaForCausalLM',
torch_dtype=torch.float16
).cuda()
# 使用自定义提示进行编码
doc_vecs = angle.encode([
'天气真好!',
'天气非常好!',
'我要去睡觉了'
], prompt='句子 {text} 的代表性词语是:')
# 计算相似度
for i, dv1 in enumerate(doc_vecs):
for dv2 in doc_vecs[i+1:]:
print(cosine_similarity(dv1, dv2))
4️⃣ 浓缩版/套娃模型
通过截断层和嵌入维度,实现灵活的模型压缩。
from angle_emb import AnglE
from angle_emb.utils import cosine_similarity
# 加载模型
angle = AnglE.from_pretrained('mixedbread-ai/mxbai-embed-2d-large-v1', pooling_strategy='cls').cuda()
# 截断到特定层
angle = angle.truncate_layer(layer_index=22)
# 使用截断后的嵌入尺寸进行编码
doc_vecs = angle.encode([
'天气真好!',
'天气非常好!',
'我要去睡觉了'
], embedding_size=768)
# 计算相似度
for i, dv1 in enumerate(doc_vecs):
for dv2 in doc_vecs[i+1:]:
print(cosine_similarity(dv1, dv2))
5️⃣ 第三方模型
使用 AnglE 可以加载任何基于 Transformer 的模型(例如 sentence-transformers、BAAI/bge 等)。
from angle_emb import AnglE
# 加载第三方模型
model = AnglE.from_pretrained('mixedbread-ai/mxbai-embed-large-v1', pooling_strategy='cls').cuda()
# 编码文本
vec = model.encode('hello world', to_numpy=True)
print(vec)
⚡ 批量推理
使用 batched 库加速推理(推荐用于大规模处理)。
uv pip install batched
import batched
from angle_emb import AnglE
# 加载模型
model = AnglE.from_pretrained("WhereIsAI/UAE-Large-V1", pooling_strategy='cls').cuda()
# 启用动态批处理
model.encode = batched.dynamically(model.encode, batch_size=64)
# 编码大批量数据
vecs = model.encode([
'天气真好!',
'天气非常好!',
'我要去睡觉了'
] * 50)
🕸️ 自定义训练
💡 完整详情请参阅 官方训练文档。
🗂️ 第一步:准备数据集
AnglE 支持三种数据集格式。请根据任务选择:
| 格式 | 列 | 描述 | 使用场景 |
|---|---|---|---|
| 格式 A | text1, text2, label |
成对文本及相似度分数(0–1) | 相似度评分 |
| 格式 B | query, positive |
查询-文档对 | 检索任务,无需硬负样本 |
| 格式 C | query, positive, negative |
查询及其正负样本 | 对比学习 |
注意事项:
- 所有格式均使用 HuggingFace 的
datasets.Dataset text1、text2、query、positive和negative可以是字符串或字符串列表(列表时会随机采样)
🚂 第二步:训练方法
方案 A:命令行训练(推荐)
单 GPU:
CUDA_VISIBLE_DEVICES=0 angle-trainer --help
多 GPU 与 FSDP:
CUDA_VISIBLE_DEVICES=0,1,2,3 WANDB_MODE=disabled accelerate launch \
--multi_gpu \
--num_processes 4 \
--main_process_port 2345 \
--config_file examples/FSDP/fsdp_config.yaml \
-m angle_emb.angle_trainer \
--gradient_checkpointing 1 \
--use_reentrant 0 \
...
多 GPU(标准方式):
CUDA_VISIBLE_DEVICES=0,1,2,3 WANDB_MODE=disabled accelerate launch \
--multi_gpu \
--num_processes 4 \
--main_process_port 2345 \
-m angle_emb.angle_trainer \
--model_name_or_path YOUR_MODEL \
--train_name_or_path YOUR_DATASET \
...
📁 更多示例:examples/Training
方案 B:Python API 训练
from datasets import load_dataset
from angle_emb import AnglE
# 第一步:加载预训练模型
angle = AnglE.from_pretrained(
'SeanLee97/angle-bert-base-uncased-nli-en-v1',
max_length=128,
pooling_strategy='cls'
).cuda()
# 第二步:准备数据集(格式 A 示例)
ds = load_dataset('mteb/stsbenchmark-sts')
ds = ds.map(lambda obj: {
"text1": str(obj["sentence1"]),
"text2": str(obj['sentence2']),
"label": obj['score']
})
ds = ds.select_columns(["text1", "text2", "label"])
# 第三步:训练模型
angle.fit(
train_ds=ds['train'].shuffle(),
valid_ds=ds['validation'],
output_dir='ckpts/sts-b',
batch_size=32,
epochs=5,
learning_rate=2e-5,
save_steps=100,
eval_steps=1000,
warmup_steps=0,
gradient_accumulation_steps=1,
loss_kwargs={
'cosine_w': 1.0,
'ibn_w': 1.0,
'angle_w': 0.02,
'cosine_tau': 20,
'ibn_tau': 20,
'angle_tau': 20
},
fp16=True,
logging_steps=100
)
# 第四步:评估
corrcoef = angle.evaluate(ds['test'])
print('Spearman 相关系数:', corrcoef)
⚙️ 高级配置
训练特殊模型
| 模型类型 | CLI 标志 | 描述 |
|---|---|---|
| LLM | --is_llm 1 + LoRA 参数 |
必须手动启用 LLM 模式 |
| BiLLM | --apply_billm 1 --billm_model_class LlamaForCausalLM |
双向 LLM(指南) |
| 浓缩版(ESE) | --apply_ese 1 --ese_kl_temperature 1.0 --ese_compression_size 256 |
套娃风格嵌入 |
应用提示词
| 格式 | 标志 | 适用对象 |
|---|---|---|
| 格式 A | --text_prompt "text: {text}" |
同时应用于 text1 和 text2 |
| 格式 B/C | --query_prompt "query: {text}" |
仅适用于 query 字段 |
| 格式 B/C | --doc_prompt "document: {text}" |
仅适用于 positive 和 negative 字段 |
列映射(旧版兼容性)
无需修改即可适配旧数据集:
# 命令行
--column_rename_mapping "text:query"
# Python
列重命名映射={"text": "query"}
模型转换
将训练好的模型转换为 sentence-transformers 格式:
python scripts/convert_to_sentence_transformers.py --help
💡 微调技巧
📖 完整文档
| 格式 | 建议 |
|---|---|
| 格式 A | 增加 cosine_w 或减小 ibn_w |
| 格式 B | 仅调整 ibn_w 和 ibn_tau |
| 格式 C | 设置 cosine_w=0, angle_w=0.02, 并配置 cln_w + ibn_w |
防止灾难性遗忘:
- 设置
teacher_name_or_path进行知识蒸馏 - 自蒸馏时使用相同的模型路径
- ⚠️ 确保教师模型和学生模型使用 相同的分词器
🔄 与 sentence-transformers 集成
| 任务 | 状态 | 备注 |
|---|---|---|
| 训练 | ⚠️ 部分 | SentenceTransformers 提供了 AnglE 损失,但为了获得最佳效果,请使用官方的 angle_emb |
| 推理 | ✅ 全面 | 可以通过 examples/convert_to_sentence_transformers.py 转换训练好的模型 |
🫡 引用
如果您使用了我们的代码和预训练模型,请通过以下方式引用我们的工作以支持我们:
@article{li2023angle,
title={AnglE优化文本嵌入},
author={李贤明和李静},
journal={arXiv 预印本 arXiv:2309.12871},
year={2023}
}
📜 更改日志
| 📅 | 描述 |
|---|---|
| 2025年1月 | v0.6.0 - 重大重构 🎉: • 移除 AngleDataTokenizer - 无需预先对数据集进行分词!• 移除 DatasetFormats 类 - 使用字符串字面量('A', 'B', 'C')• 移除 LLM 模型的自动检测 - 手动设置 is_llm• 将 --prompt_template 重命名为 --text_prompt(仅适用于格式 A)• 新增 --query_prompt 和 --doc_prompt 用于格式 B/C• 新增 --column_rename_mapping,以便在不修改旧数据集的情况下适配• 更新数据格式:格式 B/C 现在使用 query、positive、negative 字段• 支持格式 B/C 中基于列表的采样 • 更新示例,使用 accelerate launch• 请参阅 MIGRATION_GUIDE.md 获取升级说明 |
| 2024年5月21日 | 支持 Espresso 句子嵌入 |
| 2024年2月7日 | 支持仅使用正样本对进行训练(格式 C:query, positive) |
| 2023年12月4日 | 发布通用英语句子嵌入模型:WhereIsAI/UAE-Large-V1 |
| 2023年11月2日 | 发布英文预训练模型:SeanLee97/angle-llama-13b-nli |
| 2023年10月28日 | 发布两款中文预训练模型:SeanLee97/angle-roberta-wwm-base-zhnli-v1 和 SeanLee97/angle-llama-7b-zhnli-v1;新增中文 README.md |
📧 联系方式
如果您有任何问题或建议,请随时通过电子邮件与我们联系:xmlee97@gmail.com
© 许可证
本项目采用 MIT 许可证。关于预训练模型的许可信息,请参阅相应模型的许可证文件。
版本历史
v0.6.02025/10/19v0.5.62025/01/31v0.5.22024/10/19v0.5.12024/10/12v0.4.72024/07/18v0.4.42024/05/29v0.4.02024/05/22常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器