当前位置: 首页 > news >正文

2025-05-20 模型下载--文本向量化--Faiss检索

模型下载

  • 使用Python脚本进行下载
from huggingface_hub import snapshot_download
# import os# os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
# 自定义下载目录(Windows 路径建议用 raw string 或 pathlib)
download_dir = r"../model/V2/jina-embeddings-v3"local_dir = snapshot_download(repo_id="jinaai/jina-embeddings-v3",local_dir=download_dir,local_dir_use_symlinks=False  # 避免 Windows 下软链接问题
)print("模型保存路径:", local_dir)
  • 当使用跑数据集的时候,还是会出现错误,找不到各种文件,原因是依赖了其他的文件
  • 地址 https://huggingface.co/jinaai/xlm-roberta-flash-implementation/tree/main

文本向量化

import pandas as pd
from sentence_transformers import SentenceTransformer
import os# =========================
# 📍 Step 1: 加载数据
# =========================
input_datapath = './data/fine_food_reviews_1k.csv'df = pd.read_csv(input_datapath, index_col=0)
df = df[["Time", "ProductId", "UserId", "Score", "Summary", "Text"]]
df = df.dropna()# 合并文本字段
df["combined"] = ("Title: " + df.Summary.str.strip() + "; Content: " + df.Text.str.strip()
)# =========================
# 📍 Step 2: 加载本地模型
# =========================
model_path = 'model/jina-embeddings-v3/models--jinaai--jina-embeddings-v3/snapshots/f1944de8402dcd5f2b03f822a4bc22a7f2de2eb9'
model = SentenceTransformer(model_path, trust_remote_code=True)# =========================
# 📍 Step 3: 批量编码文本
# =========================
texts = df["combined"].tolist()# tqdm 显示进度条,convert_to_numpy 提供 array 输出
embeddings = model.encode(texts, show_progress_bar=True, convert_to_numpy=True)# =========================
# 📍 Step 4: 存储向量数据
# =========================
df["embedding"] = embeddings.tolist()# 保存为 parquet(高效)或 csv
output_path = './output/fine_food_reviews_with_embeddings.parquet'
os.makedirs(os.path.dirname(output_path), exist_ok=True)
df.to_parquet(output_path, index=False)print(f"✅ 向量化完成,共生成 {len(df)} 条记录,已保存至:{output_path}")

Faiss检索

import pandas as pd
import numpy as np
import faiss
from sentence_transformers import SentenceTransformer# ========== 1. 加载数据 ==========
df = pd.read_parquet('./output/fine_food_reviews_with_embeddings.parquet')
embeddings = np.array(df['embedding'].to_list())  # 转成 numpy array# ========== 2. 加载模型 ==========
model_path = 'model/jina-embeddings-v3/models--jinaai--jina-embeddings-v3/snapshots/f1944de8402dcd5f2b03f822a4bc22a7f2de2eb9'
model = SentenceTransformer(model_path, trust_remote_code=True)# ========== 3. 构建向量索引 ==========
index = faiss.IndexFlatL2(embeddings.shape[1])
index.add(embeddings)# ========== 4. 查询示例 ==========
query = "蜂蜜"
query_vec = model.encode([query], convert_to_numpy=True)# 查询 TopK 相似文本
D, I = index.search(query_vec, k=3)print("🔍 查询结果:")
for idx in I[0]:print(f"\n📌 Score: {df.iloc[idx]['Score']}")print(f"📄 Text: {df.iloc[idx]['combined']}")
http://www.xdnf.cn/news/546625.html

相关文章:

  • SQLMesh 内置宏详解:@PIVOT等常用宏的核心用法与示例
  • Qt文件:XML文件
  • 战略游戏--树形dp
  • Java中字符串(String类)的常用方法
  • 如何使用MATLAB NLP工具箱进行文本聚类
  • notepad++
  • 使用 vite-plugin-dynamic-base 实现运行时动态设置上下文路径
  • SetThrowSegvLongjmpSEHFilter错误和myFuncInitialize 崩溃
  • 深度学习框架显存泄漏诊断手册(基于PyTorch的Memory Snapshot对比分析方法)
  • LLM: 多模态LLM动态分辨率
  • AI知识库- Cherry Studio构建本地知识库
  • winrm ‘Protocol‘ object has no attribute ‘run_ps‘
  • AI编程辅助哪家强?深度解析主流AI编程工具的现状与未来-优雅草卓伊凡
  • 裸金属服务器:解锁极致性能,拒绝虚拟化开销!
  • es学习小结
  • OSError: [WinError 193] %1 不是有效的 Win32 应用程序。
  • AI人工智能的SGLang、vllm和YaRN大语言模型服务框架引擎的对比
  • 大语言模型 15 - Manus 超强智能体 开源版本 OpenManus 案例与原理深入解析
  • JIT即时编译器全面剖析:原理、实现与优化
  • 医疗器械erp系统 关键的管理工具 满足GSP需求
  • Java泛型 的详细知识总结
  • vue3+elementPlus穿梭框单个拖拽和全选拖拽
  • Windows 安装Anaconda
  • 2025年电工杯新规发布-近三年题目以及命题趋势
  • 瀚高数据库安全版审计查询方法
  • vue3前端后端地址可配置方案
  • Spark大数据分析案例(pycharm)
  • Rocketmq broker 是主从架构还是集群架构,可以故障自动转移吗
  • 深度解析 HDFS与Hive的关系
  • C#中使用SharpSvn和TortoiseSVN操作SVN版本控制系统的完整指南