text2vec
将中文文本转化为向量矩阵,支持Word2Vec、SBERT、CoSENT、BGE等模型
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
将中文文本转化为向量矩阵,支持Word2Vec、SBERT、CoSENT、BGE等模型
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:text2vec 在 HuggingFace 平台上的模型页面
你有没有遇到过这样的场景:手里有一堆中文问答对,想找出和用户输入最相似的那个;或者有一批客服对话记录,需要判断哪些问题本质上是同一个意思——但面对"北京"和"首都"、"电脑"和"计算机"这样的表达差异,简单的关键词匹配完全束手无策。
这类需求在信息检索、智能问答、语义匹配场景中无处不在,而核心难题只有一个:如何让文本变成计算机能理解的数字向量,然后用余弦相似度这样的数学运算来衡量两段文字的语义距离。
text2vec 就是来解决这个问题的。它由 NLP 领域知名开源作者 shibing624(徐明) 开发维护,目前在 GitHub 斩获近 5000 颗星,成为中文 NLP 开发者做文本向量化的首选工具之一。

图2:text2vec 作者 shibing624(徐明),长期活跃于中文 NLP 开源社区
text2vec 是一个专注于文本向量表征(Text to Vector) 的 Python 工具库,其核心使命是把任意中文(或英文)文本转化为稠密的向量表示,让语义相似的内容在向量空间中"自然靠近"。
如果说传统 TF-IDF 是用"词频"来衡量文本,那么 text2vec 追求的是更高级的语义理解——"今天天气很好"和"今日阳光明媚"在 text2vec 的向量空间中距离会非常近,而"股票大涨"则会明显远离。
打个比方:text2vec 就像是给文字世界打造了一把纳米级量尺,让语言的细微差别都能被精确捕捉和比较。
| 模型 | 原理 | 特点 |
|---|---|---|
| Word2Vec | 词向量平均 | 轻量快速,适合粗筛 |
| SBERT | BERT+孪生网络 | 效果好,速度适中 |
| CoSENT | 余弦排序损失 | 收敛快,中文效果好 |
| BGE | RetroMAE预训练+对比学习 | 通用性强,支持中英双语 |
| RankBM25 | 传统BM25排序 | 无需训练,适合冷启动 |
项目还配套发布了多个经过监督微调的中文专用模型,包括:
shibing624/text2vec-base-chinese:基于中文 STS 数据集的 CoSENT 模型shibing624/text2vec-bge-large-chinese:BGE 大模型中文版shibing624/text2vec-base-multilingual:多语言匹配模型shibing624/text2vec-base-chinese-sentence:短句向量模型这些配套模型已发布在 HuggingFace 上,可直接加载使用,降低了用户的使用门槛。
text2vec 的代码结构非常清晰,核心模块位于 text2vec/ 目录:
word2vec.py — 基于腾讯 AI Lab 词向量的词向量检索sentencebert_model.py — Sentence-BERT 的 PyTorch 实现cosent_model.py — CoSENT 模型的实现(排序敏感的余弦损失)bge_model.py — BGE 模型的微调训练和推理bm25.py — RankBM25 排序算法similarity.py — 相似度计算工具cli.py — 命令行工具,支持批量文本向量化技术栈方面,text2vec 深度依赖 HuggingFace transformers 库做模型加载和推理,底层使用 PyTorch 做张量计算。代码本身遵循 Python 3.6+ 兼容性要求,依赖简洁(jieba、loguru、tqdm、pandas、scikit-learn),通过 pip install text2vec 即可一键安装。
此外,项目提供了丰富的示例脚本:
fastapi_server_demo.py — 用 FastAPI 搭建文本向量服务gradio_demo.py — 用 Gradio 搭建交互式 Web 界面semantic_search_demo.py — 语义搜索示例jina_server_demo.py — 接入 Jina AI 向量服务computing_embeddings_multi_gpu_demo.py — 多 GPU 批量推理text2vec 的安装极度友好,对于有 Python 基础的用户来说:
pip install text2vec
一句命令即可完成安装。安装后有两种使用方式:
方式一:Python API(适合集成到项目)
from text2vec import SentenceModel
model = SentenceModel("shibing624/text2vec-base-chinese")
vec1 = model.encode("今天天气很好")
vec2 = model.encode("今天阳光明媚")
# 计算余弦相似度
similarity = model.similarity(vec1, vec2)
print(f"相似度:{similarity[0][1]:.4f}")
方式二:CLI 批量向量化(适合数据预处理)
text2vec --input texts.txt --output vectors.npy --batch-size 32
CLI 工具的加入让 text2vec 可以无缝融入数据预处理 pipeline,对于需要处理大量文本的场景非常有价值。
text2vec 在中文语义匹配任务上做了大量基准测试,涵盖了 ATEC、BQ、LCQMC、PAWSX 等主流中文匹配数据集。从公开的评测结果看:
不过需要注意的是:text2vec 主要面向中文场景,英文语义匹配并非其核心优势所在。对于纯英文场景,Sentence-Transformers 可能是更成熟的选择。
另外,text2vec 作为工具库而非托管服务,所有推理都在本地执行,这意味着:
✅ 优点:数据完全私有,不上传任何内容,适合企业内网部署
⚠️ 局限:需要自行准备 GPU 资源,大批量推理时需要关注显存
text2vec 的出现填补了中文语义匹配开源工具的一个空白。在它之前,中文 NLP 开发者通常需要自己拼凑 BERT+CosineSimilarity 的流程,或者依赖商业 API(百度、腾讯等)。text2vec 以 Apache 2.0 开源许可证发布,将这些能力免费开放给社区。
从增长曲线看,该项目在 2022-2023 年经历了快速迭代期(v1.1 到 v1.2 版本),持续引入 CoSENT、BGE 等前沿模型,并配套发布经过微调的中文专用模型,形成了"工具+模型"的完整生态。
未来,随着大模型(LLM)浪潮的到来,text2vec 的定位也在悄然变化——它可以作为 LLM 的"前处理层",在 RAG(检索增强生成)Pipeline 中负责文档召回环节,将用户的自然语言问题转化为向量,在向量数据库中检索最相关的上下文,喂给大模型生成答案。这是一个正在快速增长的场景需求。
总结一句话:如果你需要快速给中文文本计算语义相似度,text2vec 是一个零学习成本、效果经过真实数据验证的优秀选择。