微信扫码
添加专属顾问
我要投稿
向量模型是RAG系统中实现有效信息检索和生成的关键技术之一,它们使得系统能够处理复杂的语言理解任务,并生成更加准确和相关的输出。
向量模型将文本转换为向量形式,便于在高维空间中进行快速的相似性检索,这是RAG系统中检索相关信息的基石。通过向量化,模型能够评估不同文本之间的语义相似度,即使在词汇不完全匹配的情况下也能找到语义相关的文档。向量模型帮助系统捕捉输入查询的上下文信息,这对于理解用户意图并检索最相关的信息至关重要。
本篇文章将为大家介绍在langchain中使用自己向量模型的方法,帮助大家扫清障碍快速搭建RAG和Agent流程。
环境依赖
pip install torch langchain sentence_transformers
模型选择
# 榜单地址https://huggingface.co/spaces/mteb/leaderboard
本文采用bge-m3模型作为例子,其是向量维数为1024维,支持的最大长度为8192,是一个支持多语言的模型,目前效果还算比较好。后面会专门写一篇文章介绍向量模型如何选择和评测。以下是bge-m3的一些信息:
示例代码
import torchfrom typing import Any, Listfrom pydantic import Extrafrom langchain.embeddings.base import Embeddingsfrom sentence_transformers import SentenceTransformerdevice = 'cpu'class CustomEmbedding(Embeddings):client: Any#: :meta private:tokenizer: Anycontext_sequence_length: int = 512query_sequence_length: int = 512model_name: str = ''"""Model name to use."""def __init__(self, **kwargs: Any):"""Initialize the sentence_transformer."""# super().__init__(**kwargs)self.client = SentenceTransformer('BAAI/bge-m3',device=device,trust_remote_code=True)self.context_sequence_length = 512self.query_sequence_length = 512class Config:extra = Extra.forbiddef mean_pooling(model_output, attention_mask):# First element of model_output contains all token embeddingstoken_embeddings = model_output[0]input_mask_expanded = attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float()return torch.sum(token_embeddings * input_mask_expanded, 1) / \torch.clamp(input_mask_expanded.sum(1), min=1e-9)def embed_documents(self, texts: List[str]) -> List[List[float]]:with torch.no_grad():embeddings = self.client.encode(texts)embeddings = embeddings.astype('float32')return embeddings.tolist()def embed_query(self, text: str) -> List[float]:return self.embed_documents([text])[0]# 使用测试model = CustomEmbedding()emb = model.embed_query("张三")print(len(emb))
正确运行后,输出的结果是1024,即代表query被向量化后的维数为1024维;可以用这个模型替换上篇文章中的OpenAIEmbeddings.
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-12-10
最新力作:一招提升RAG检索精度20%
2025-12-10
Apple 入局 RAG:深度解析 CLaRa 框架,如何实现 128x 文档语义压缩?
2025-12-09
客服、代码、法律场景适配:Milvus Ngram Index如何百倍优化LIKE查询| Milvus Week
2025-12-09
一键把碎片变成有料笔记:NoteGen,一款跨平台的 Markdown 笔记应用
2025-12-07
Embedding模型选型思路:相似度高不再代表检索准确(文末附实战指南)
2025-12-06
Palantir Ontology 助力AIP Agent落地工具介绍:Object Query
2025-12-05
把AI记忆做好,是一个价值6千亿美元的市场
2025-12-05
我错了,RAG还没完!AI记忆的结合会成为下一个技术风口
2025-10-04
2025-10-11
2025-09-30
2025-10-12
2025-12-04
2025-11-04
2025-10-31
2025-11-13
2025-10-12
2025-12-03
2025-12-10
2025-11-23
2025-11-20
2025-11-19
2025-11-04
2025-10-04
2025-09-30
2025-09-10