微信扫码
添加专属顾问
我要投稿
向量模型是RAG系统中实现有效信息检索和生成的关键技术之一,它们使得系统能够处理复杂的语言理解任务,并生成更加准确和相关的输出。
向量模型将文本转换为向量形式,便于在高维空间中进行快速的相似性检索,这是RAG系统中检索相关信息的基石。通过向量化,模型能够评估不同文本之间的语义相似度,即使在词汇不完全匹配的情况下也能找到语义相关的文档。向量模型帮助系统捕捉输入查询的上下文信息,这对于理解用户意图并检索最相关的信息至关重要。
本篇文章将为大家介绍在langchain中使用自己向量模型的方法,帮助大家扫清障碍快速搭建RAG和Agent流程。
环境依赖
pip install torch langchain sentence_transformers
模型选择
# 榜单地址https://huggingface.co/spaces/mteb/leaderboard
本文采用bge-m3模型作为例子,其是向量维数为1024维,支持的最大长度为8192,是一个支持多语言的模型,目前效果还算比较好。后面会专门写一篇文章介绍向量模型如何选择和评测。以下是bge-m3的一些信息:
示例代码
import torch
from typing import Any, List
from pydantic import Extra
from langchain.embeddings.base import Embeddings
from sentence_transformers import SentenceTransformer
device = 'cpu'
class CustomEmbedding(Embeddings):
client: Any#: :meta private:
tokenizer: Any
context_sequence_length: int = 512
query_sequence_length: int = 512
model_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 = 512
self.query_sequence_length = 512
class Config:
extra = Extra.forbid
def mean_pooling(model_output, attention_mask):
# First element of model_output contains all token embeddings
token_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-04-30
聊聊AI智能体框架MetaGPT下的RAG实践
2025-04-30
如何用大模型+RAG给宠物做一个AI健康助手(干货分享)?
2025-04-30
HiRAG:基于层级知识索引和检索的高精度RAG
2025-04-29
教程|通义Qwen 3 +Milvus,混合推理模型才是优化RAG成本的最佳范式
2025-04-29
RAG开发框架LangChain与LlamaIndex对比解析:谁更适合你的AI应用?
2025-04-29
RAG性能暴增20%!清华等推出“以笔记为中心”的深度检索增强生成框架,复杂问答效果飙升
2025-04-29
超神了,ChatWiki 支持GraphRAG,让 AI 具备垂直深度推理能力!
2025-04-29
AI 产品思维:我如何把一个 AI 应用从基础 RAG 升级到 multi-agent 架构
2024-10-27
2024-09-04
2024-07-18
2024-05-05
2024-06-20
2024-06-13
2024-07-09
2024-07-09
2024-05-19
2024-07-07
2025-04-30
2025-04-29
2025-04-29
2025-04-26
2025-04-25
2025-04-22
2025-04-22
2025-04-20