Files
2026-07-13 12:37:02 +08:00

31 lines
1.3 KiB
Python

# !/usr/bin/env python3
# -*- coding: utf-8 -*-
# @author: CS_木成河
# @time: 2024/10/31 14:33
# @blog: https://blog.csdn.net/weixin_47936614
from langchain_core.embeddings import Embeddings
from sentence_transformers import SentenceTransformer
class RagTextEmbeddings(Embeddings):
def __init__(self, embed_model_path: str, **kwargs):
self.batch_size = kwargs['batch_size']
self.device = kwargs['device']
self.embed_model = SentenceTransformer(embed_model_path, trust_remote_code=True, device=self.device)
def embed_documents(self, texts: list[str]) -> list[list[float]]:
docs_embeddings = self.embed_model.encode(texts,
task="retrieval.passage",
batch_size=self.batch_size,
device=self.device,
show_progress_bar=True)
return docs_embeddings.tolist()
def embed_query(self, text: str) -> list[float]:
query_embeddings = self.embed_model.encode([text],
task="retrieval.query",
device=self.device)
return query_embeddings.tolist()[0]