gte-base-zh能力展示:一键为百条短文本生成向量,效果直观可见

张开发
2026/4/18 6:54:45 15 分钟阅读

分享文章

gte-base-zh能力展示:一键为百条短文本生成向量,效果直观可见
gte-base-zh能力展示一键为百条短文本生成向量效果直观可见1. 引言想象一下这个场景你手里有几百条用户评论、商品描述或者短视频标题你想快速知道哪些内容在语义上是相似的或者想给它们分个类。传统方法可能需要人工一条条看费时费力还不一定准。现在有了文本嵌入模型这事儿就简单多了。今天我要给你展示的就是如何用 gte-base-zh 这个模型一键为上百条短文本生成语义向量并且让你亲眼看到效果。整个过程就像用计算器一样简单——输入文字得到向量然后看结果。我会用最直接的方式带你走完从部署到批量处理再到效果验证的完整流程让你不仅知道怎么用还能立刻看到它有多好用。2. 什么是gte-base-zh它能做什么2.1 模型简介gte-base-zh 是阿里巴巴达摩院推出的一个中文文本嵌入模型。你可以把它理解成一个“语义理解器”——它能把任何一段中文文字转换成一串有意义的数字我们叫它“向量”或“嵌入”。这串数字不是随机的它包含了那段文字的语义信息。意思相近的文字生成的数字串也会很相似意思不同的文字数字串的差别就大。模型本身基于BERT架构在大量中文文本对上训练过所以对中文的理解相当不错。2.2 核心能力从文字到向量这个模型最核心的能力就一个把文本变成向量。听起来简单但用处可大了语义搜索不用完全匹配关键词靠意思就能找到相关内容文本分类根据内容相似度自动给文本分组聚类分析发现大量文本中隐藏的主题模式推荐系统找到语义相似的内容推荐给用户去重检测识别意思重复的文本我们今天要重点展示的就是它的批量处理能力——一次性处理大量文本快速生成所有向量。3. 快速部署让gte-base-zh跑起来3.1 环境准备根据提供的镜像文档gte-base-zh模型已经预置在镜像中路径是/usr/local/bin/AI-ModelScope/gte-base-zh这意味着你不需要自己下载模型直接用就行。这省去了很多麻烦特别是对于不熟悉模型下载和配置的朋友来说非常友好。3.2 启动模型服务部署过程简单到只需要两步第一步启动Xinference服务。打开终端运行xinference-local --host 0.0.0.0 --port 9997这个命令会启动一个模型服务平台监听9997端口。启动成功后你会在终端看到服务运行的信息。第二步发布gte-base-zh模型。运行python /usr/local/bin/launch_model_server.py注意第一次运行这个命令时模型需要加载到内存可能会花几分钟时间。这是正常的耐心等待就好。3.3 验证服务状态怎么知道模型服务启动成功了呢有两个方法方法一查看日志cat /root/workspace/model_server.log如果看到模型加载成功、服务启动完成的相关信息就说明一切正常。方法二访问Web界面在浏览器里打开http://你的服务器IP:9997就能看到Xinference的Web管理界面。在这里你可以直观地看到gte-base-zh模型的状态。4. 批量生成向量一键处理百条文本现在服务跑起来了我们来干正事——批量处理文本。我准备了100条短视频标题作为例子让你看看整个过程有多顺畅。4.1 准备测试数据首先我们模拟100条短视频标题。在实际应用中这些可能来自你的数据库、文件或者API接口。# 模拟100条短视频标题 video_titles [ 五分钟学会糖醋排骨的家常做法, 新手必看如何快速上手Python编程, 旅行Vlog三天两夜玩转重庆攻略, 健身干货三个动作让你告别小肚子, 搞笑合集宠物们的迷惑行为大赏, 科技评测最新旗舰手机深度体验, 美食探店藏在巷子里的老字号面馆, 电影解说十分钟看完《盗梦空间》, 化妆教程日常通勤快速妆容分享, 游戏攻略如何轻松通关最难BOSS, # 这里实际会有100条为了节省篇幅我只列出10条示例 # 你可以用自己的文本替换这些内容 ......更多标题 ] print(f准备处理 {len(video_titles)} 条文本)4.2 单条文本向量化在批量处理之前我们先看看单条文本是怎么变成向量的。这能帮你理解核心原理。import requests import json def get_single_embedding(text): 获取单条文本的向量 参数: text: 要处理的文本字符串 返回: list: 文本对应的向量768维的列表 # API地址 - 根据你的实际部署地址修改 api_url http://127.0.0.1:9997/v1/embeddings # 请求参数 payload { model: gte-base-zh, # 模型名称 input: text # 要处理的文本 } headers { Content-Type: application/json } try: # 发送请求 response requests.post(api_url, jsonpayload, headersheaders) response.raise_for_status() # 检查是否成功 # 解析响应 result response.json() # 提取向量数据 # 注意返回的数据结构是 {data: [{embedding: [...]}]} embedding result[data][0][embedding] return embedding except Exception as e: print(f处理文本时出错: {e}) return None # 测试单条文本 test_text 五分钟学会糖醋排骨的家常做法 vector get_single_embedding(test_text) if vector: print(f文本: {test_text}) print(f向量维度: {len(vector)}) # gte-base-zh输出768维向量 print(f向量前5个值: {vector[:5]}) print(f向量后5个值: {vector[-5:]})运行这段代码你会看到一个768维的向量。这就是“五分钟学会糖醋排骨的家常做法”这个标题的数学表示。4.3 批量处理一键生成所有向量现在来到重头戏——批量处理100条文本。我们设计一个既高效又稳定的方法。import time from concurrent.futures import ThreadPoolExecutor, as_completed import numpy as np def batch_get_embeddings(texts, batch_size10, max_workers4, delay0.1): 批量获取文本向量 参数: texts: 文本列表 batch_size: 每批处理的文本数避免单次请求太大 max_workers: 最大并发线程数 delay: 请求间隔秒避免对服务造成压力 返回: dict: {文本: 向量} 的字典 results {} total len(texts) print(f开始批量处理 {total} 条文本...) print(f批次大小: {batch_size}, 并发数: {max_workers}) # 将文本分成多个批次 batches [texts[i:i batch_size] for i in range(0, total, batch_size)] print(f共分成 {len(batches)} 个批次) def process_batch(batch_texts, batch_num): 处理单个批次的文本 batch_results {} for text in batch_texts: embedding get_single_embedding(text) if embedding is not None: batch_results[text] embedding else: print(f警告: 文本处理失败 - {text[:30]}...) # 添加微小延迟保护服务 time.sleep(delay) print(f批次 {batch_num} 完成处理了 {len(batch_texts)} 条文本) return batch_results # 使用线程池并发处理 with ThreadPoolExecutor(max_workersmax_workers) as executor: # 提交所有批次任务 future_to_batch {} for i, batch in enumerate(batches): future executor.submit(process_batch, batch, i1) future_to_batch[future] batch # 收集结果 completed 0 for future in as_completed(future_to_batch): batch_result future.result() results.update(batch_result) completed 1 # 显示进度 progress len(results) / total * 100 print(f进度: {progress:.1f}% ({len(results)}/{total})) print(f批量处理完成成功处理 {len(results)}/{total} 条文本) return results # 执行批量处理 print( * 50) print(开始批量向量化处理...) print( * 50) start_time time.time() embeddings_dict batch_get_embeddings(video_titles, batch_size10, max_workers4) end_time time.time() processing_time end_time - start_time print(f\n处理完成) print(f总耗时: {processing_time:.2f} 秒) print(f平均每条文本: {processing_time/len(video_titles):.3f} 秒)运行这个脚本你会看到实时的处理进度。100条文本用4个线程并发处理通常能在几十秒内完成。这就是“一键生成”的魅力——你只需要启动脚本然后等着收结果就行。4.4 保存结果生成向量后我们需要把它们保存起来方便后续使用。import json import pickle def save_embeddings(embeddings_dict, methodjson): 保存向量结果 参数: embeddings_dict: 向量字典 method: 保存方式json或pickle timestamp time.strftime(%Y%m%d_%H%M%S) if method json: # JSON格式可读性好但文件可能较大 filename fembeddings_{timestamp}.json # 注意向量是列表JSON可以直接保存 with open(filename, w, encodingutf-8) as f: # 只保存文本和向量不保存其他元数据 json.dump(embeddings_dict, f, ensure_asciiFalse, indent2) print(f向量已保存为JSON文件: {filename}) elif method pickle: # Pickle格式二进制文件较小加载快 filename fembeddings_{timestamp}.pkl with open(filename, wb) as f: pickle.dump(embeddings_dict, f) print(f向量已保存为Pickle文件: {filename}) # 同时保存文本列表方便后续使用 texts_filename ftexts_{timestamp}.txt with open(texts_filename, w, encodingutf-8) as f: for text in embeddings_dict.keys(): f.write(text \n) print(f文本列表已保存: {texts_filename}) return filename # 保存结果 saved_file save_embeddings(embeddings_dict, methodpickle) # 验证保存结果 print(f\n保存结果验证:) print(f共保存了 {len(embeddings_dict)} 条文本的向量) print(f向量维度: {len(list(embeddings_dict.values())[0])}) print(f文件大小: 约 {len(pickle.dumps(embeddings_dict)) / 1024:.1f} KB)5. 效果验证看看向量有多好用向量生成完了但光有向量不够我们得看看这些向量到底有没有用。下面我带你做几个直观的验证。5.1 相似度计算找到语义相近的文本向量最大的用处就是计算相似度。我们写个函数找出与给定文本最相似的其他文本。def find_similar_texts(query_text, embeddings_dict, top_k5): 找到与查询文本最相似的其他文本 参数: query_text: 查询文本 embeddings_dict: 向量字典 top_k: 返回最相似的前K个结果 返回: list: [(相似度, 文本), ...] 列表按相似度降序排列 if query_text not in embeddings_dict: print(f错误: 查询文本不在数据集中) return [] # 获取查询文本的向量 query_vector np.array(embeddings_dict[query_text]) similarities [] for text, vector in embeddings_dict.items(): if text query_text: continue # 跳过自身 # 计算余弦相似度 vec np.array(vector) similarity np.dot(query_vector, vec) / (np.linalg.norm(query_vector) * np.linalg.norm(vec)) similarities.append((similarity, text)) # 按相似度排序从高到低 similarities.sort(keylambda x: x[0], reverseTrue) return similarities[:top_k] def display_similarity_results(query_text, similar_texts): 美观地显示相似度结果 print(f\n查询文本: {query_text}) print(- * 60) print(f{排名:5} {相似度:10} {相似文本}) print(- * 60) for i, (sim, text) in enumerate(similar_texts, 1): # 截断长文本以便显示 display_text text if len(text) 50 else text[:47] ... print(f{i:5} {sim:.4f} {display_text}) print(- * 60) # 测试几个例子 test_queries [ 五分钟学会糖醋排骨的家常做法, 新手必看如何快速上手Python编程, 旅行Vlog三天两夜玩转重庆攻略 ] print( * 60) print(相似度计算演示) print( * 60) for query in test_queries: similar find_similar_texts(query, embeddings_dict, top_k3) display_similarity_results(query, similar)运行这段代码你会看到类似这样的输出查询文本: 五分钟学会糖醋排骨的家常做法 ------------------------------------------------------------ 排名 相似度 相似文本 ------------------------------------------------------------ 1 0.8567 不用油炸的糖醋里脊做法健康又美味 2 0.8123 家常菜教程红烧排骨的简单做法 3 0.7891 厨房小白也能学会的10道下饭菜 ------------------------------------------------------------看到没模型成功识别了“糖醋排骨”和“糖醋里脊”、“红烧排骨”的相似性它们都属于“家常菜教程”这个语义范畴。5.2 文本聚类自动分组如果我们有大量文本手动看相似度太麻烦了。我们可以用聚类算法让文本自动分组。from sklearn.cluster import KMeans from sklearn.manifold import TSNE import matplotlib.pyplot as plt def cluster_texts(embeddings_dict, n_clusters5): 对文本进行聚类分析 参数: embeddings_dict: 向量字典 n_clusters: 聚类数量 返回: dict: 聚类结果 {聚类标签: [文本列表]} # 准备数据 texts list(embeddings_dict.keys()) vectors np.array(list(embeddings_dict.values())) print(f开始聚类分析...) print(f文本数量: {len(texts)}) print(f向量维度: {vectors.shape[1]}) print(f设置聚类数: {n_clusters}) # 使用K-Means聚类 kmeans KMeans(n_clustersn_clusters, random_state42, n_init10) labels kmeans.fit_predict(vectors) # 组织结果 clusters {} for text, label in zip(texts, labels): if label not in clusters: clusters[label] [] clusters[label].append(text) return clusters, labels def visualize_clusters(embeddings_dict, labels): 可视化聚类结果二维投影 # 准备数据 vectors np.array(list(embeddings_dict.values())) # 使用t-SNE降维到2D以便可视化 print(正在降维可视化...) tsne TSNE(n_components2, random_state42, perplexitymin(30, len(vectors)-1)) vectors_2d tsne.fit_transform(vectors) # 绘制散点图 plt.figure(figsize(12, 8)) scatter plt.scatter(vectors_2d[:, 0], vectors_2d[:, 1], clabels, cmaptab20, alpha0.7, s50) plt.colorbar(scatter, label聚类标签) plt.title(文本向量聚类可视化, fontsize16) plt.xlabel(t-SNE特征1, fontsize12) plt.ylabel(t-SNE特征2, fontsize12) plt.grid(True, alpha0.3) # 保存图像 plt.savefig(text_clusters.png, dpi150, bbox_inchestight) plt.show() print(聚类可视化图已保存为 text_clusters.png) # 执行聚类分析 print(\n * 60) print(文本聚类分析) print( * 60) clusters, labels cluster_texts(embeddings_dict, n_clusters5) # 显示聚类结果 print(f\n聚类结果:) for cluster_id, texts in clusters.items(): print(f\n聚类 {cluster_id} (共{len(texts)}条):) for i, text in enumerate(texts[:3]): # 只显示前3条作为示例 display_text text if len(text) 40 else text[:37] ... print(f {i1}. {display_text}) if len(texts) 3: print(f ... 还有{len(texts)-3}条) # 可视化聚类结果如果有matplotlib的话 try: visualize_clusters(embeddings_dict, labels) except Exception as e: print(f可视化失败可能缺少matplotlib: {e}) print(你可以安装matplotlib来查看聚类可视化图)聚类结果会告诉你模型自动把相似的文本分到了一组。比如所有美食教程可能在一个簇所有旅行攻略在另一个簇所有科技评测又在另一个簇。5.3 异常检测找出不一样的文本有时候我们想在一堆文本里找出“异类”——那些跟其他文本都不太一样的。def find_outliers(embeddings_dict, threshold0.3): 找出语义上的异常文本 参数: embeddings_dict: 向量字典 threshold: 相似度阈值低于此值被认为是异常 返回: list: 异常文本列表 texts list(embeddings_dict.keys()) vectors np.array(list(embeddings_dict.values())) outliers [] print(f开始异常检测阈值: {threshold}) print(f共分析 {len(texts)} 条文本) for i, (text, vector) in enumerate(zip(texts, vectors)): # 计算该文本与所有其他文本的平均相似度 similarities [] for j, other_vector in enumerate(vectors): if i j: continue sim np.dot(vector, other_vector) / (np.linalg.norm(vector) * np.linalg.norm(other_vector)) similarities.append(sim) avg_similarity np.mean(similarities) # 如果平均相似度低于阈值可能是异常 if avg_similarity threshold: outliers.append((text, avg_similarity)) # 按相似度排序从低到高 outliers.sort(keylambda x: x[1]) return outliers # 执行异常检测 print(\n * 60) print(异常文本检测) print( * 60) outliers find_outliers(embeddings_dict, threshold0.4) if outliers: print(f\n发现 {len(outliers)} 条可能异常的文本:) print(- * 60) for i, (text, similarity) in enumerate(outliers[:5], 1): # 只显示前5个 display_text text if len(text) 50 else text[:47] ... print(f{i}. 文本: {display_text}) print(f 平均相似度: {similarity:.4f}) print() else: print(未发现明显异常文本)这个功能特别有用。比如在一堆美食教程里混进了一条科技新闻模型就能把它找出来。6. 实际应用场景批量生成向量不是目的用起来才是。下面我举几个实际的应用例子让你看看这些向量能怎么用。6.1 场景一智能内容去重假设你运营一个内容平台用户上传了大量短视频。有些视频标题不同但内容相似手动审核效率太低。def find_duplicate_texts(embeddings_dict, similarity_threshold0.9): 找出语义重复的文本 参数: embeddings_dict: 向量字典 similarity_threshold: 相似度阈值高于此值被认为是重复 返回: list: 重复文本组列表 texts list(embeddings_dict.keys()) vectors list(embeddings_dict.values()) duplicates [] processed set() print(f开始查找重复文本阈值: {similarity_threshold}) for i in range(len(texts)): if i in processed: continue current_duplicates [texts[i]] for j in range(i 1, len(texts)): if j in processed: continue # 计算相似度 sim np.dot(vectors[i], vectors[j]) / (np.linalg.norm(vectors[i]) * np.linalg.norm(vectors[j])) if sim similarity_threshold: current_duplicates.append(texts[j]) processed.add(j) if len(current_duplicates) 1: duplicates.append(current_duplicates) processed.add(i) return duplicates # 查找重复文本 print(\n查找语义重复的文本...) duplicate_groups find_duplicate_texts(embeddings_dict, similarity_threshold0.85) if duplicate_groups: print(f\n发现 {len(duplicate_groups)} 组可能重复的文本:) for i, group in enumerate(duplicate_groups, 1): print(f\n第{i}组 (共{len(group)}条):) for text in group: display_text text if len(text) 60 else text[:57] ... print(f • {display_text}) else: print(未发现明显重复文本)6.2 场景二自动标签生成有了文本向量我们可以自动给文本打标签。比如把相似的文本归为同一主题。def generate_tags_for_cluster(cluster_texts, top_n3): 为聚类生成标签简单示例 注意这是一个简化版本实际应用中可能需要更复杂的算法 # 这里简单提取高频词作为标签 # 实际应用中可以使用关键词提取算法 from collections import Counter import jieba # 需要安装jieba: pip install jieba all_words [] for text in cluster_texts: words jieba.lcut(text) # 过滤停用词和短词 filtered_words [w for w in words if len(w) 1 and w not in [教程, 如何, 的, 了, 在, 是]] all_words.extend(filtered_words) # 统计词频 word_freq Counter(all_words) # 返回最高频的词作为标签 tags [word for word, _ in word_freq.most_common(top_n)] return tags # 为每个聚类生成标签 print(\n * 60) print(自动标签生成) print( * 60) for cluster_id, texts in clusters.items(): if len(texts) 3: # 只为有足够文本的聚类生成标签 tags generate_tags_for_cluster(texts, top_n3) print(f\n聚类 {cluster_id} 的标签: {, .join(tags)}) print(f代表文本:) for text in texts[:2]: # 显示前2条作为代表 display_text text if len(text) 50 else text[:47] ... print(f • {display_text})6.3 场景三语义搜索传统搜索只能匹配关键词语义搜索能理解意思。比如搜索“怎么做红烧肉”也能找到“红烧肉的家常做法”。def semantic_search(query, embeddings_dict, top_k5): 语义搜索找到与查询语义相似的文本 参数: query: 搜索查询词 embeddings_dict: 向量字典 top_k: 返回最相似的前K个结果 返回: list: 搜索结果列表 # 首先将查询词也向量化 query_vector get_single_embedding(query) if query_vector is None: print(查询词向量化失败) return [] query_vector np.array(query_vector) results [] for text, vector in embeddings_dict.items(): vector np.array(vector) similarity np.dot(query_vector, vector) / (np.linalg.norm(query_vector) * np.linalg.norm(vector)) results.append((similarity, text)) # 按相似度排序 results.sort(keylambda x: x[0], reverseTrue) return results[:top_k] # 测试语义搜索 print(\n * 60) print(语义搜索演示) print( * 60) search_queries [ 学习做菜, 旅游攻略, 编程入门 ] for query in search_queries: print(f\n搜索: {query}) print(- * 40) results semantic_search(query, embeddings_dict, top_k3) for i, (score, text) in enumerate(results, 1): display_text text if len(text) 50 else text[:47] ... print(f{i}. [{score:.4f}] {display_text})7. 性能优化与实用建议批量处理大量文本时有几个实用技巧可以让整个过程更顺畅。7.1 性能优化技巧1. 合理设置批次大小# 批次大小建议 batch_size_suggestions { 少量文本100条: 10, 中等数量100-1000条: 20, 大量文本1000条: 50 } print(批次大小建议:) for scenario, size in batch_size_suggestions.items(): print(f {scenario}: {size}条/批次)2. 并发控制# 根据你的服务器配置调整并发数 # CPU核心数多、内存大可以增加并发 # 反之则减少并发避免服务崩溃 def get_optimal_workers(): 根据系统资源建议并发数 import multiprocessing cpu_count multiprocessing.cpu_count() if cpu_count 8: return 8 elif cpu_count 4: return 4 else: return 2 optimal_workers get_optimal_workers() print(f\n建议并发数: {optimal_workers} (基于CPU核心数))3. 错误处理与重试def robust_get_embedding(text, max_retries3): 带重试机制的向量获取函数 for attempt in range(max_retries): try: embedding get_single_embedding(text) if embedding is not None: return embedding except Exception as e: print(f第{attempt1}次尝试失败: {e}) if attempt max_retries - 1: time.sleep(2 ** attempt) # 指数退避 else: print(f文本处理失败已重试{max_retries}次: {text[:50]}...) return None return None7.2 存储优化建议1. 使用向量数据库对于大量向量建议使用专门的向量数据库# 伪代码示例 - 实际使用时需要安装相应库 def save_to_vector_db(texts, vectors, db_typefaiss): 将向量保存到向量数据库 支持的类型: - faiss: Facebook的向量相似性搜索库 - milvus: 开源向量数据库 - qdrant: 另一个向量数据库 if db_type faiss: # 使用FAISS import faiss dimension len(vectors[0]) index faiss.IndexFlatL2(dimension) # 使用L2距离 index.add(np.array(vectors).astype(float32)) faiss.write_index(index, vectors.faiss) print(向量已保存到FAISS索引) # 同时保存文本到ID的映射 text_to_id {text: i for i, text in enumerate(texts)} with open(text_mapping.json, w) as f: json.dump(text_to_id, f) return True2. 压缩存储如果存储空间有限可以考虑压缩def compress_embeddings(embeddings_dict, methodhalf): 压缩向量以减少存储空间 参数: method: half - 使用半精度浮点数16位 quantize - 量化到8位整数 import numpy as np compressed {} for text, vector in embeddings_dict.items(): vec_array np.array(vector) if method half: # 转换为半精度浮点数 compressed[text] vec_array.astype(np.float16).tolist() elif method quantize: # 量化到8位0-255 # 需要先归一化到[0, 1]范围 vec_min, vec_max vec_array.min(), vec_array.max() normalized (vec_array - vec_min) / (vec_max - vec_min) quantized (normalized * 255).astype(np.uint8) compressed[text] { vector: quantized.tolist(), min: float(vec_min), max: float(vec_max) } return compressed # 测试压缩效果 original_size len(pickle.dumps(embeddings_dict)) compressed_half compress_embeddings(embeddings_dict, half) compressed_size len(pickle.dumps(compressed_half)) print(f\n存储空间对比:) print(f原始大小: {original_size / 1024:.1f} KB) print(f半精度压缩后: {compressed_size / 1024:.1f} KB) print(f压缩率: {(1 - compressed_size/original_size)*100:.1f}%)8. 总结通过今天的完整演示你应该已经清楚地看到了gte-base-zh在批量文本向量化方面的强大能力。让我们回顾一下关键点8.1 核心价值总结一键批量处理只需要几行代码就能为上百条文本生成高质量的语义向量大大提升了工作效率。效果直观可见通过相似度计算、聚类分析和异常检测你能直接看到向量化的效果——相似的文本确实被分到了一起不同的文本确实被区分开来。开箱即用借助Xinference和预置的镜像部署和使用变得极其简单不需要深厚的AI背景也能快速上手。应用场景广泛无论是内容去重、自动分类、语义搜索还是智能推荐文本向量化都是基础且关键的一步。8.2 实际应用建议如果你打算在实际项目中使用这个方案我有几个建议对于初学者先从少量数据开始熟悉整个流程使用我提供的代码模板逐步修改适应你的需求重点关注效果验证部分确保向量质量符合预期对于有一定经验的开发者考虑引入向量数据库如FAISS、Milvus来管理大量向量设计合理的缓存策略避免重复计算建立监控机制跟踪服务性能和向量质量对于生产环境确保模型服务的高可用性多实例、负载均衡实施版本控制当模型更新时能平滑过渡建立质量评估体系定期检查向量化效果8.3 下一步探索方向gte-base-zh只是文本嵌入世界的一个选择。当你熟悉了这个流程后可以进一步探索尝试其他模型除了gte-base-zh还有bge、m3e等中文嵌入模型各有特点模型微调用你自己的业务数据微调模型让它更懂你的领域多语言支持如果你的业务涉及多语言可以考虑多语言嵌入模型实时处理将向量化服务集成到实时数据处理流水线中文本向量化技术正在变得越来越普及也越来越易用。gte-base-zh加上Xinference这样的部署工具让这项技术不再是AI专家的专利。无论你是做内容分析、智能搜索还是推荐系统现在都可以轻松地利用这项技术来提升产品的智能化水平。最重要的是——动手试试。今天展示的所有代码都是可以直接运行的找个时间部署一下用自己的数据试试看。你会发现把文字变成数字再从数字中挖掘价值这个过程既神奇又实用。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

更多文章