現(xiàn)向量化的三種方式)
文本向量化(embedding)的核心作用就是把“文本”轉(zhuǎn)換成“可以進(jìn)行數(shù)學(xué)運(yùn)算的語義表示”也就是向量從而讓計(jì)算機(jī)能夠進(jìn)行相似度搜索、語義檢索、聚類、推薦、分類等操作。文本轉(zhuǎn)向量再進(jìn)行相似度計(jì)算也是RAG文檔分塊的語義切分使用的方式。向量化向量模型/嵌入模型 不需要我們自己訓(xùn)練一般都會(huì)直接使用模型廠商提供的例如阿里的嵌入模型、BGE-M3等。注意不同的嵌入模型即使 使用相同的文本得到的向量一般也是不一樣的因?yàn)椴煌膹S商語料不一樣或者向量的維度不一樣。方式1ollama本地部署嵌入模型下載嵌入模型ollama pull bge-m3下載完成后可以通過命令ollama list查看已安裝的模型列表確認(rèn) bge-m3 是否已成功存在于本地ollama -embed : https://docs.ollama.com/api/embed 使用ollama本地部署的嵌入模型bge-m3 本地部署模型后訪問嵌入模型以及輸出文本的向量表示 importollama query西瓜query[西瓜,蘋果]responseollama.embed(modelbge-m3,# ollama調(diào)用的模型inputquery,# 輸入文本dimensions1024# 用于指定生成嵌入的維度數(shù)量bge-m3最多1024維)print(response.embeddings)# number[][]print(維度:,len(response.embeddings[0]))# print(維度:,len(response.embeddings[1]))注意Embedding 向量不是“單詞含義的數(shù)字列表”它實(shí)際上是模型經(jīng)過訓(xùn)練后在高維空間中形成的分布式語義表示。方式2使用在線模型開源模型可以本地部署這邊使用國(guó)內(nèi)托管的千問的嵌入模型qwen3.7-text-embedding-flashimportosfromopenaiimportOpenAI 使用在線嵌入模型Qwen的embedding模型 如何訪問嵌入模型以及輸出文本的向量表示 defqwen_text_embedding(query,modelqwen3.7-text-embedding-flash,dimensions1024):# 創(chuàng)建 大模型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]))模型與費(fèi)用對(duì)比https://docs.bailian.console.aliyun.com/zh/model-studio/text-embedding-batch-api方式3sentence-transformerssentence-transformers是一個(gè) Python 庫(kù)專門用來把句子、段落、短文本轉(zhuǎn)成向量.fromsentence_transformers import SentenceTransformerfromsentence_transformers import util# 加載模型# model SentenceTransformer(BAAI/bge-m3)model SentenceTransformer(sentence-transformers/all-MiniLM-L6-v2)# 這個(gè)模型更小但性能稍差text 我喜歡吃西瓜embeddings model.encode(text)# 把文本轉(zhuǎn)換成 Embedding 向量print(embeddings)print(embeddings.shape)# (384,) 384 維向量texts [如何養(yǎng)貓,貓咪飼養(yǎng)方法,今天天氣不錯(cuò),]embeddings model.encode(texts)print(embeddings)print(embeddings.shape)# (3384) 3句話384 維向量BGE-M3all-MiniLM-L6-v2模型來源BAAI智源Sentence-Transformers主要用途RAG、語義檢索、多語言通用句子相似度向量維度1024384多語言? 很強(qiáng)?? 主要偏英文中文??? 效果有限模型大小較大很小速度較慢很快資源占用較高很低RAG????????