Python-LangChain框架的向量化功能是做什么的?

摘要:之前讲了milvus向量数据库如何使用,但是如何把文本信息转成向量?这个问题一直没有讲,今天就讲讲,这是构建RAG关键的一步,咱们使用all-MiniLM-L6-v2本地模型将文本转成向量。 为什么用它最直接的原因是免费还好用,调用各大平台
之前讲了milvus向量数据库如何使用,但是如何把文本信息转成向量?这个问题一直没有讲,今天就讲讲,这是构建RAG关键的一步,咱们使用all-MiniLM-L6-v2本地模型将文本转成向量。 为什么用它最直接的原因是免费还好用,调用各大平台的向量模型是要收费的,所以使用本地化向量模型从部署到使用都是免费的。 all-MiniLM-L6-v2 是 Sentence-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 维,推理更快)。 看看代码部分 # 导入SentenceTransformer库,该库专门用于加载和使用预训练的句子/文本嵌入模型 from sentence_transformers import SentenceTransformer # ===================== 核心配置 ===================== # 本地模型文件的存储路径(需确保该路径下有完整的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个元素,避免输出过长) for i, embedding in enumerate(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环境的依赖如下: 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 向量模型可以在老虎网盘资源中搜索“all-MiniLM-L6-v2向量化模型”,然后解压使用,也可以自行去其他大模型平台下载使用。