微信扫码
与创始人交个朋友
我要投稿
向量模型是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-02-05
RAG+LlamaParse:引领PDF解析与检索新时代!
2025-02-05
打造RAG智能助手:实时数据检索的终极指南!惊呆你的需求,如何一步到位?
2025-02-05
RAG知识库中文档包含表格数据如何处理?
2025-02-05
产品思维的角度来讲,Deep Research本质是Co-RAG
2025-02-04
你的RAG系统真的达标了吗?生产环境RAG成功的7大关键指标
2025-02-01
35页综述:Agentic RAG七大架构首次曝光!
2025-01-28
Model2Vec加速RAG:模型小15倍,速度快500倍:
2025-01-27
穿过幻觉荒野,大模型RAG越野赛
2024-07-18
2024-09-04
2024-05-05
2024-06-20
2024-10-27
2024-07-09
2024-07-09
2024-06-13
2024-05-19
2024-07-07
2025-02-05
2025-02-05
2025-01-24
2025-01-24
2025-01-20
2025-01-18
2025-01-18
2025-01-18