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

AI开发-python-langchain框架(3-1-向量化 )

all-MiniLM-L6-v2Sentence-BERT(SBERT)系列中最经典、最常用的轻量级文本嵌入模型,核心作用和特点如下:

1. 核心功能:文本→向量的 "语义转换器"

该模型的核心作用是将任意长度的文本(句子 / 短语 / 短段落)转换为固定维度(384 维)的稠密向量(也叫嵌入向量 / Embedding),且转换后的向量具备以下关键特性:

  • 语义关联性:语义相似的文本,生成的向量在向量空间中的距离也更近(比如 "猫抓老鼠" 和 "猫咪捉老鼠" 的向量相似度极高);
  • 数值归一化:输出向量默认做了 L2 归一化,可直接用于余弦相似度计算;
  • 多语言兼容:对中文、英文等主流语言都有较好的语义捕捉能力(无需额外适配)。
2. 典型应用场景(为什么这个模型被广泛使用)

表格

应用场景具体作用
文本相似度计算计算两个句子的余弦相似度,用于查重、语义匹配(如问答匹配、文本聚类)
向量检索(RAG 核心)将文本向量存入向量数据库(如 FAISS/Milvus),实现 "语义检索"(而非关键词检索)
文本分类 / 聚类用生成的向量作为特征输入,训练轻量级分类器(如情感分析、意图识别)
大模型 RAG 增强作为 RAG(检索增强生成)的核心组件,将用户问题和知识库文本转为向量,实现精准检索
3. 模型的核心优势(为什么选它而非其他模型)
  • 轻量级:模型体积小(约 800MB)、推理速度快,适合本地部署或低算力场景;
  • 效果均衡:在 "速度 - 效果" 权衡中表现最优,384 维向量既保证语义信息量,又避免维度爆炸;
  • 易用性:通过 SentenceTransformer 库可一键加载,无需手动处理分词、模型微调等复杂步骤;
  • 开源免费:基于 MIT 协议,可商用,无版权限制。
4. 补充说明
  • 该模型的输出维度固定为 384 维,是 MiniLM 系列(简化版 BERT)的优化版本;
  • 若需要更高的语义精度,可选择all-mpnet-base-v2(768 维,效果更好但体积更大);
  • 若需要更低的算力消耗,可选择all-MiniLM-L4-v2(384 维,推理更快)。

看看代码部分

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

# 导入SentenceTransformer库,该库专门用于加载和使用预训练的句子/文本嵌入模型

fromsentence_transformersimportSentenceTransformer

# ===================== 核心配置 =====================

# 本地模型文件的存储路径(需确保该路径下有完整的all-MiniLM-L6-v2模型文件)

model_path="D:\\pythonProject2024\\pythonProject\\modelTest\\model\\all-MiniLM-L6-v2"

# ===================== 模型加载 =====================

# 加载本地预训练的all-MiniLM-L6-v2模型

# 该模型是轻量级的句子嵌入模型,核心用于将文本转换为固定维度的向量表示

model=SentenceTransformer(model_path)

# ===================== 示例文本 =====================

# 待生成向量嵌入的示例文本列表(支持多语言,中文/英文均可)

sentences=[

"这是第一个示例句子",

"这是第二个示例句子",

"Hello, how are you?"

]

# ===================== 生成向量嵌入 =====================

# 调用模型的encode方法,将文本列表转换为向量嵌入

# encode方法会自动完成文本预处理(分词、归一化)→ 模型推理 → 向量归一化的全流程

embeddings=model.encode(sentences)

# ===================== 结果输出 =====================

# 打印向量维度:all-MiniLM-L6-v2固定输出384维向量

print(f"向量维度: {embeddings.shape[1]}")# 输出: 向量维度: 384

# 遍历打印每个句子的向量(仅显示前5个元素,避免输出过长)

fori, embeddinginenumerate(embeddings):

print(f"句子 {i+1} 的向量: {embedding[:5]}...")# 示例输出: 句子 1 的向量: [0.0123, -0.0456, 0.0789, 0.0234, -0.0567]...

数据结果:

向量维度: 384
句子 1 的向量: [-0.01811877 0.10055622 0.07948062 0.00487238 0.02543747]...
句子 2 的向量: [-0.05084108 0.09896706 0.01865453 -0.02641223 -0.04201426]...
句子 3 的向量: [ 0.01909676 0.03446515 0.09162795 0.07016529 -0.02994661]...

补充说明,向量的维度是由选择的向量模型决定的

python环境的依赖如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

annotated-types==0.7.0

anyio==4.12.0

certifi==2025.11.12

charset-normalizer==3.4.4

click==8.3.1

dataclasses-json==0.6.7

faiss-cpu==1.13.0

fastapi==0.128.0

h11==0.16.0

httpcore==1.0.9

httpx==0.28.1

httpx-sse==0.4.3

huggingface-hub==0.36.0

idna==3.11

Jinja2==3.1.6

jiter==0.12.0

jsonschema==4.25.1

jsonschema-specifications==2025.9.1

langchain==0.1.20

langchain-classic==1.0.0

langchain-community==0.0.38

langchain-core==0.2.43

langchain-experimental==0.0.54

langchain-milvus==0.3.1

langchain-openai==0.0.5

langchain-text-splitters==0.0.2

langchainhub==0.1.21

langdetect==1.0.9

langgraph==0.1.10

langgraph-checkpoint==3.0.1

langgraph-prebuilt==1.0.5

langgraph-sdk==0.2.14

langsmith==0.1.147

lark==1.3.1

MarkupSafe==3.0.3

marshmallow==3.26.1

multidict==6.7.0

mypy_extensions==1.1.0

numpy==1.26.4

openai==1.109.1

orjson==3.11.5

ormsgpack==1.12.0

overrides==7.7.0

packaging==23.2

pandas==2.3.3

pydantic==2.12.5

pydantic-settings==2.12.0

pydantic_core==2.41.5

Pygments==2.19.2

pymilvus==2.5.0

python-dateutil==2.9.0.post0

python-dotenv==1.2.1

python-multipart==0.0.22

pytz==2025.2

referencing==0.37.0

regex==2025.11.3

requests==2.32.5

requests-toolbelt==1.0.0

rpds-py==0.30.0

safetensors==0.7.0

scikit-learn==1.7.2

scipy==1.16.3

sentence-transformers==5.1.2

six==1.17.0

sniffio==1.3.1

SQLAlchemy==2.0.44

starlette==0.50.0

tenacity==8.5.0

threadpoolctl==3.6.0

tiktoken==0.5.2

tokenizers==0.22.1

torch==2.9.1

tqdm==4.67.1

transformers==4.57.3

types-requests==2.32.4.20260107

typing-inspect==0.9.0

typing-inspection==0.4.2

typing_extensions==4.15.0

tzdata==2025.2

ujson==5.11.0

unstructured==0.18.21

unstructured-client==0.42.4

urllib3==2.6.0

uvicorn==0.40.0

yarl==1.22.0

http://www.jsqmd.com/news/592173/

相关文章:

  • 3大维度解析Snap Hutao:如何让原神游戏管理效率提升10倍?
  • 智能票务抢购系统:基于Python自动化的全流程解决方案
  • 新手入门:在快马平台动手学习修复synaptics.exe损坏映像错误
  • 霜儿-汉服-造相Z-Turbo效果可视化:CLIPScore与HumanEval双维度古风评分
  • m4s-converter:B站缓存视频本地化处理工具全攻略
  • 利用快马ai快速构建stm32点灯与串口打印原型,十分钟验证硬件
  • 不平衡电网电压下虚拟同步发电机模型预测控制Simulink仿真模型:具有功功率恒定、无功功率恒...
  • 【病变检测】基于matlab CNN视网膜影像检测糖尿病视网膜病变【含Matlab源码 15297期】含报告
  • SEER‘S EYE 模型部署入门:Anaconda环境管理与Python包依赖解决
  • CTF比赛必备:3步掌握无SQL版XSS数据接收平台实战技巧
  • 提升爬虫开发效率:用快马AI智能生成基于claw hub的电商数据采集方案
  • STM32F4的CAN升级方案:包含Bootloader源代码、测试用App源代码及上位机可执行文件
  • 如何在Linux上完美配置DisplayLink多显示器:displaylink-debian终极指南
  • Jasminum插件:3大核心功能如何彻底改变您的中文文献管理体验
  • YimMenu:GTA5游戏防护与体验增强解决方案
  • Pixel Language Portal 玩转 C 语言:数据结构与算法实现代码生成
  • 开源可二次开发的物联网云平台,支持工业设备远程控制与数据采集
  • 如何用NBTExplorer解决Minecraft数据编辑难题?可视化工具提升游戏创作效率
  • 告别繁琐手动配置,用快马一键生成ubuntu开发环境自动化安装脚本
  • 如何在Apex Legends中实现智能压枪辅助:自动武器检测与精准射击终极指南
  • 3大技术突破!智能预约系统革新抢购体验:从原理到实战的自动化工具全解析
  • Blender 3MF插件:3步颠覆传统3D打印工作流
  • YimMenu:GTA V安全防护与体验增强工具深度指南
  • Windows苹果设备驱动深度解决方案:从问题诊断到未来适配
  • 终极指南:如何用ComfyUI-MimicMotionWrapper实现AI动作迁移
  • 智能修复键盘连击问题:KeyboardChatterBlocker全场景应用指南
  • 基于改进粒子群算法的DG储能选址定容模型优化解决电力系统问题
  • 音频格式解密:QMCDecode打破音乐文件跨平台播放壁垒
  • 【地震】基于matlab GUI 2维声波变密度地震波数值模拟(采用10阶及以上空间精度和2阶时间精度的有限差分,结合PML吸收边界)【含Matlab源码 15293期】
  • 3步颠覆图片处理效率:PowerToys Image Resizer新手入门指南