44.llama_index-向量模型的使用(在线和本地)

📅 2026/7/5 13:26:52
44.llama_index-向量模型的使用(在线和本地)
内容参考于图灵AI大模型全栈在线模型这里还是使用千问的模型下载指令如下pip install llama-index-embeddings-dashscope执行完指令如下图红框就有了千问的模型效果图# 前置依赖安装命令需要先安装 LlamaIndex 官方的通义千问嵌入模型适配包 # pip install llama-index-embeddings-dashscope # 导入操作系统交互模块用来读取系统环境变量中的 API 密钥 import os # 从 LlamaIndex 的通义千问适配包中导入嵌入模型类 # 作用LlamaIndex 官方封装的阿里云通义千问文本向量生成工具 # 直接调用通义千问的在线嵌入接口生成文本向量中文语义匹配效果优秀无需本地部署大模型 from llama_index.embeddings.dashscope import DashScopeEmbedding # 导入 dotenv 环境变量加载函数用来读取 .env 文件里的配置 from dotenv import load_dotenv # 执行加载 .env 文件把文件里的 DASHSCOPE_API_KEY 等配置写入系统环境变量 # 好处敏感的 API 密钥不写死在代码里更安全换环境只需要改 .env 文件 load_dotenv() # 初始化通义千问嵌入模型实例后续所有向量生成都通过这个对象调用 embed_model DashScopeEmbedding( # 指定使用的嵌入模型名称text-embedding-v3 是通义千问的第三代文本嵌入模型 # 特点中文语义理解能力强向量维度适中适合 RAG 检索场景 model_nametext-embedding-v3, # 从环境变量中读取通义千问的 API 密钥对应 .env 文件里的 DASHSCOPE_API_KEY api_keyos.getenv(DASHSCOPE_API_KEY) ) # 方法1查询专用向量转换 # get_query_embedding专门用于生成「用户查询问题」的向量 # 作用把用户的自然语言问题转换成向量表示后续用来和文档向量做语义相似度匹配 # 设计逻辑部分嵌入模型对「查询」和「文档」做了差异化训练 # 查询向量更聚焦检索意图和文档向量匹配时召回准确率更高是 RAG 场景的标准做法 query_emb embed_model.get_query_embedding(你好) # 打印查询向量输出是一组浮点数数组代表这段文本的语义特征 print(query_emb) # 方法2单条文档向量转换 # get_text_embedding用于生成「单条文档文本」的向量 # 作用把单段文档内容转换成向量一般用于文档片段入库时生成向量存入向量数据库 # 场景处理单个文本块、小批量内容时使用 text_emb embed_model.get_text_embedding(你好) # 打印单条文本向量 print(text_emb) # 方法3批量文档向量转换 # get_text_embedding_batch批量生成多条文本的向量 # 作用一次性处理多条文本批量返回对应的向量数组 # 优势比循环调用单条方法的 API 请求次数更少、生成速度更快、更节省接口配额 # 是文档批量入库、构建知识库时的首选方式 text_emb embed_model.get_text_embedding_batch([你好, 你好]) # 打印批量生成的向量列表每个元素对应一条输入文本的向量 print(text_emb)调用本地向量模型国内的镜像地址https://hf-mirror.com/models魔塔 https://www.modelscope.cn/models/maidalun/bce-embedding-base_v1# 安装模块 # pip install sentence_transformers from modelscope import snapshot_download # BAAI/bge-m3 模型名字 cache_dir下载位置 model_dir snapshot_download(BAAI/bge-m3, cache_dirrD:\LLM\Local_model)上方的代码就是下载的下图红框的向量模型点击上图红框进入后再点击下图红框可以复制名字本地模型可以选择CPU运行和独立显卡运行显卡运行需要安装一个pytorch打开一个cmd输入nvidia-smi查看下图红框位置我的是11.3需要下载cu118如果下图红框位置是12.x就下载cu121要英伟达的显卡英伟达的显卡有CUDA这个CUDA是专门用来驱动显卡芯片的CUDA相当于是一个软件可以用来操作显卡下载cu#12.x版本 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 #11.x版本 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118如果存在transformers版本冲突就如下的指令降级pip install transformers4.46.3 --force-reinstall代码如果生成向量的内容很少cpu和gpu的速度是差不多的# 上方注释的是通义千问在线嵌入方案 # 特点调用阿里云在线接口生成向量不用本地装模型简单方便但需要API密钥、消耗接口配额 # 本段代码是替代方案本地加载开源嵌入模型生成向量完全离线、不花钱、数据不外发 # 从 LlamaIndex 中导入 HuggingFace 嵌入模型类 # 作用LlamaIndex 官方封装的本地嵌入模型适配工具底层基于 sentence-transformers # 可以加载所有 HuggingFace 格式的开源嵌入模型比如 bge 系列、m3e 系列 # 接口规范和在线嵌入模型完全一致切换嵌入方案时业务代码不用改 from llama_index.embeddings.huggingface import HuggingFaceEmbedding # 初始化本地嵌入模型实例 embed_model HuggingFaceEmbedding( # 指定模型路径这里填你本地已经下载好的模型文件夹绝对路径 # 也可以直接填模型名如 BAAI/bge-m3会自动从 HuggingFace 下载 # 国内网络下载慢所以一般提前把模型下到本地直接填路径加载 # 路径前加 r 是 Python 原始字符串语法避免 Windows 反斜杠被当成转义符 model_namerD:\huanjing\ai模型\BAAI\bge-m3, # 指定模型运行的设备 # devicecpu用 CPU 运行兼容性最好所有电脑都能用但生成速度慢 # devicecuda用 NVIDIA(英伟达) 显卡运行生成速度快很多是推荐选项 # 注意用 cuda 必须提前安装 CUDA 版本的 PyTorch且电脑有 N 卡否则会报错 devicecuda ) # 生成「用户查询」专用向量 # 作用把用户的问题转换成向量RAG 场景下用来和文档向量做语义相似度匹配 # 设计逻辑和在线版接口完全一致部分嵌入模型对查询/文档做了差异化优化 # 统一用这个方法生成问题向量检索准确率更高 query_emb embed_model.get_query_embedding(你好) # 打印查询向量输出是一组浮点数数组代表这段文本的语义特征 print(query_emb) # 生成「单条文档」向量 # 作用把单段文本转换成向量一般用于文档片段入库时生成向量存入向量数据库 # 接口和在线版的 get_text_embedding 完全一致切换模型无感知 embedding embed_model.get_text_embedding(你好) # 打印单条文本向量 print(embedding)