ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

使用 Hugging Face 上的预训练 Embedding 模型构建语义检索与 RAG 应用

使用 Hugging Face 上的预训练 Embedding 模型构建语义检索与 RAG 应用 文档教程知识库【免费下载链接】developer-roadmapInteractive roadmaps, guides and other educational content to help developers grow in their careers.项目地址https://gitcode.com/GitHub_Trending/de/developer-roadmap点击查看免费下载本篇指南以 developer-roadmap 项目中 Models on Hugging Face 文档为核心系统讲解如何从 Hugging Face Model Hub 中发现、选用并加载预训练 Embedding 模型将其用于语义搜索、推荐系统、去重检测与检索增强生成RAG等典型场景。读完本文你将掌握基于transformers与sentence-transformers两类库生成高质量文本向量的完整实操路径并能结合本项目 AI Engineer 路线图 中的语义搜索、向量数据库等知识搭建端到端检索流程。为什么 Embedding 模型是 AI 工程师的必修课Embedding 模型Embedding Models负责把文本、代码、图片等原始数据转换为高维向量high-dimensional vectors这些向量捕捉了数据的语义含义semantic meaning。与依赖关键词精确匹配的传统方式不同向量表示让 AI 系统可以基于相似度而非精确匹配来比较、聚类和检索信息——这是本仓库 What are Embeddings 与 Embeddings 两篇文档反复强调的核心思想相似的数据在高维空间中被映射到相近的位置。在 AI Engineer 路线图中Embedding 模型处于数据层的枢纽位置典型应用包括语义搜索Semantic Search把查询语句与文档都转成向量即使字面词不匹配也能检索到语义相关的内容详见 Semantic Search推荐系统Recommendation Systems对用户偏好与候选内容分别编码按向量相似度做个性化排序重复内容检测Duplicate Detection对比文本向量距离识别近似重复的条目检索增强生成RAG先从知识库检索相关片段再交给 LLM 生成回答流程可参考 What are RAGs。而 Hugging Face 正是这些预训练 Embedding 模型的集中分发平台它提供了transformers与sentence-transformers两套成熟库来消费这些模型。Hugging Face 上的 Embedding 模型从哪里找Hugging Face Model Hub 是发现预训练模型的第一入口。针对 Embedding 任务最直接的检索方式是使用官方模型过滤页面按pipeline_tagfeature-extraction特征提取管道过滤即可列出所有适用于生成向量表示的模型。这是本文档明确推荐的官方资源入口适用于浏览任务分类为特征提取feature extraction的模型按下载量、点赞数、更新时间排序筛选社区常用的 Embedding 模型查看每个模型的模型卡Model Card确认其训练语料、语言支持、输出维度与许可协议。选型时建议重点关注以下信息均可从模型卡中获得关注点说明输出维度Dimensions决定每个文本向量占用多少数值直接影响向量库存储成本与检索速度支持语言是否覆盖你的业务语种如中文、多语种最大序列长度Max Sequence Length决定单次可编码文本的长度上限超长文本需先分块chunking任务适配性面向语义相似度STS训练、面向检索retrieval训练还是通用型许可协议商业使用是否需要授权库兼容性是否标注了sentence-transformers或transformers使用方式两种加载方式transformers 与 sentence-transformers本文档明确指出Hugging Face 上的 Embedding 模型可以通过transformers或sentence-transformers库访问。两条路径各有适用场景方式一使用 transformers 直接生成向量transformers库是 Hugging Face 的基础生态几乎所有模型都可在其上运行。它要求你手动完成分词 → 模型前向传播 → 池化pooling三步from transformers import AutoTokenizer, AutoModel import torch model_id sentence-transformers/all-MiniLM-L6-v2 tokenizer AutoTokenizer.from_pretrained(model_id) model AutoModel.from_pretrained(model_id) def embed(texts, tokenizer, model): inputs tokenizer(texts, paddingTrue, truncationTrue, return_tensorspt) with torch.no_grad(): outputs model(**inputs) # 使用 CLS token 或均值池化得到句向量 return outputs.last_hidden_state.mean(dim1) vecs embed([语义检索示例, another sentence], tokenizer, model) print(vecs.shape)要点生成 Embedding 前通常需要归一化normalize以便用余弦相似度比较选择池化策略CLS 或 mean pooling会影响向量质量sentence-transformers模型卡中一般会注明推荐的池化方式本仓库中 Hugging Face Models 与 Hugging Face Tasks 两篇文档分别介绍了模型卡信息与任务类型可作为补充阅读。方式二使用 sentence-transformers 一键生成sentence-transformers在 transformers 之上封装了句向量语义专门解决把整句映射为高质量向量的问题。其优势在于内置了与模型匹配的分词、池化与归一化逻辑两三行代码即可完成编码from sentence_transformers import SentenceTransformer model SentenceTransformer(sentence-transformers/all-MiniLM-L6-v2) vecs model.encode([语义检索示例, another sentence], normalize_embeddingsTrue) print(vecs.shape)为什么推荐这种方式本仓库的 Sentence Transformers 文档给出了原理性解释与只表示单个词语的传统词向量word embeddings不同Sentence Transformers 基于 BERT、RoBERTa 等 transformer 架构能理解整句的上下文语义将句子编码为稠密向量并使语义相近的句子在向量空间中彼此靠近——这正是聚类、语义搜索和近义句检测paraphrase detection所依赖的性质。语义相似度比较从向量到检索结果无论用哪种方式获得向量后续的核心操作都是相似度比较。本项目文档 Performing Similarity Search 描述了标准流程将用户查询文本或图片通过预训练模型编码为查询向量把查询向量与向量数据库中已存储的文档向量逐一比较返回距离最近相似度最高的若干条结果。向量相似度的常用度量包括余弦相似度cosine similarity与点积dot product。余弦相似度对向量长度不敏感是文本检索中最常用的选择import numpy as np def cosine_similarity(a, b): return float(np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))) query_vec model.encode([如何部署 embedding 模型])[0] doc_vecs model.encode([模型部署指南, 向量数据库介绍, 今天天气不错]) scores [cosine_similarity(query_vec, dv) for dv in doc_vecs] print(sorted(zip(scores, doc_vecs), reverseTrue))在数据量较大时逐条线性比较不可行需要把向量先索引起来。本项目 Indexing Embeddings 与 Vector Databases 指出向量数据库会为每个向量附带元数据原始文本或标识符一起存储并采用近似最近邻ANN搜索技术组织索引从而在大规模数据上实现快速检索。在 AI Engineer 路线图中与本主题配套的向量数据库与索引方案还包括 Vector Database、Chroma、Qdrant、Weaviate、Pinecone 与 Faiss 等页面。组合实战用 Hugging Face Embedding 模型搭建一个最小 RAG 检索链将以上知识串起来就可以搭建一个最小可用的语义检索链路其架构与 RAG 文档描述的流程一致from sentence_transformers import SentenceTransformer import numpy as np # 1. 选择 Hugging Face 上的预训练 embedding 模型 model SentenceTransformer(sentence-transformers/all-MiniLM-L6-v2) # 2. 文档库编码 索引示例用内存数组生产环境使用向量数据库 docs [Hugging Face Hub 托管预训练模型与数据集, sentence-transformers 用于生成句向量, 向量数据库支持 ANN 近似最近邻检索] doc_vecs model.encode(docs, normalize_embeddingsTrue) # 3. 查询编码 相似度检索 query 如何找开源 embedding 模型 query_vec model.encode([query], normalize_embeddingsTrue)[0] scores doc_vecs query_vec # 归一化后点积等价于余弦相似度 best_idx int(np.argmax(scores)) print(f最相关片段: {docs[best_idx]}) # 4. 将检索结果交给 LLM 生成回答RAG 的生成阶段需接入 LLM API实操要点归一化编码时开启normalize_embeddingsTrue之后点积即可直接作为余弦相似度避免重复计算范数批量编码对大量文档使用model.encode(list)批量处理利用 GPU 提高吞吐超长文本超过模型最大序列长度时先按 Chunking 文档的策略切分再逐块编码并分别索引生产落地检索规模增长后把向量迁移到 Chroma、Qdrant 或 Faiss 等向量数据库按 Indexing Embeddings 的说明组织索引与元数据。模型分发与托管生态从工程视角看Hugging Face 上预训练模型的分发还依赖一套配套基础设施理解它们有助于排查加载问题Hugging Face Hubhugging-face-hub模型、数据集与演示的统一托管平台提供模型卡文档、版本控制与 Web 端部署能力Hugging Face Inference SDK / APIhugging-face-inference-sdk以 HTTP 方式调用托管模型适合无需本地部署的场景本地/远程服务器连接若需自托管模型服务可参考 Connect to Local Server 与 Connect to Remote Server 两篇文档。结语与进阶阅读在 developer-roadmap 的 AI Engineer 路线图中Models on Hugging Face是 Embedding 能力链上承上启下的一环上游承接 Embedding Models 的概念定义下游衔接语义检索、向量数据库与 RAG 的工程实现。掌握从 Hub 发现模型、用transformers/sentence-transformers编码、按相似度检索这一整套流程后即可直接进入更进阶的专题例如对比 OpenAI Embeddings API、Gemini Embedding 等商业方案或深入研究 Sentence Transformers 的模型微调与领域适配。赞分享文档教程知识库【免费下载链接】developer-roadmapInteractive roadmaps, guides and other educational content to help developers grow in their careers.项目地址https://gitcode.com/GitHub_Trending/de/developer-roadmap点击查看免费下载相关推荐高效文档转换利器MarkItDown 实用指南与完整教程高效文档转换利器MarkItDown 实用指南与完整教程 还在为不同格式的文档转换而烦恼吗面对PDF、Word、Excel、PPT等多种格式的文档你是否需人工智能AI 应用MCP 服务RAG 语义检索基石向量嵌入Embedding原理、模型训练与选型实战RAG 语义检索基石向量嵌入Embedding原理、模型训练与选型实战 导读 向量嵌入Embedding是 RAG检索增强生成系统中“语义检索”环教程人工智能大模型RAG3个核心价值Hermes Agent如何重塑AI智能代理开发体验3个核心价值Hermes Agent如何重塑AI智能代理开发体验 在当今AI应用开发领域开发者面临着工具碎片化、集成复杂度高、技能复用困难等核心挑战。HerAI Agent人工智能AI 应用工具调用Agent 记忆交互助手RAG任务调度MCP 服务上一篇终极指南用OpenAPI规范高效记录API调用日志的10个技巧下一篇如何深度拆解BepInEx与HarmonyX的补丁机制创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表