使用python实现向量化的三种方式 文本向量化(embedding)的核心作用就是把“文本”转换成“可以进行数学运算的语义表示”也就是向量从而让计算机能够进行相似度搜索、语义检索、聚类、推荐、分类等操作。文本转向量再进行相似度计算也是RAG文档分块的语义切分使用的方式。向量化向量模型/嵌入模型 不需要我们自己训练一般都会直接使用模型厂商提供的例如阿里的嵌入模型、BGE-M3等。注意不同的嵌入模型即使 使用相同的文本得到的向量一般也是不一样的因为不同的厂商语料不一样或者向量的维度不一样。方式1ollama本地部署嵌入模型下载嵌入模型ollama pull bge-m3下载完成后可以通过命令ollama list查看已安装的模型列表确认 bge-m3 是否已成功存在于本地ollama -embed : https://docs.ollama.com/api/embed 使用ollama本地部署的嵌入模型bge-m3 本地部署模型后访问嵌入模型以及输出文本的向量表示 importollama query西瓜query[西瓜,苹果]responseollama.embed(modelbge-m3,# ollama调用的模型inputquery,# 输入文本dimensions1024# 用于指定生成嵌入的维度数量bge-m3最多1024维)print(response.embeddings)# number[][]print(维度:,len(response.embeddings[0]))# print(维度:,len(response.embeddings[1]))注意Embedding 向量不是“单词含义的数字列表”它实际上是模型经过训练后在高维空间中形成的分布式语义表示。方式2使用在线模型开源模型可以本地部署这边使用国内托管的千问的嵌入模型qwen3.7-text-embedding-flashimportosfromopenaiimportOpenAI 使用在线嵌入模型Qwen的embedding模型 如何访问嵌入模型以及输出文本的向量表示 defqwen_text_embedding(query,modelqwen3.7-text-embedding-flash,dimensions1024):# 创建 大模型client:clientOpenAI(api_keyos.getenv(DASHSCOPE_API_KEY),base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1,)dataclient.embeddings.create(inputquery,modelmodel,dimensionsdimensions).data vector[x.embeddingforxindata]# 提取向量returnvectorif__name____main__:query很高兴遇见你vectorqwen_text_embedding(query,modelqwen3.7-text-embedding-flash)print(vector)print(第1句话的向量维度:,len(vector[0]))模型与费用对比https://docs.bailian.console.aliyun.com/zh/model-studio/text-embedding-batch-api方式3sentence-transformerssentence-transformers是一个 Python 库专门用来把句子、段落、短文本转成向量.fromsentence_transformers import SentenceTransformerfromsentence_transformers import util# 加载模型# model SentenceTransformer(BAAI/bge-m3)model SentenceTransformer(sentence-transformers/all-MiniLM-L6-v2)# 这个模型更小但性能稍差text 我喜欢吃西瓜embeddings model.encode(text)# 把文本转换成 Embedding 向量print(embeddings)print(embeddings.shape)# (384,) 384 维向量texts [如何养猫,猫咪饲养方法,今天天气不错,]embeddings model.encode(texts)print(embeddings)print(embeddings.shape)# (3384) 3句话384 维向量BGE-M3all-MiniLM-L6-v2模型来源BAAI智源Sentence-Transformers主要用途RAG、语义检索、多语言通用句子相似度向量维度1024384多语言✅ 很强⚠️ 主要偏英文中文✅⚠️ 效果有限模型大小较大很小速度较慢很快资源占用较高很低RAG⭐⭐⭐⭐⭐⭐⭐⭐