最新、最详细的bce-embedding-base_v1相关信息,请移步:
EmbeddingModel无需“精心设计”的指令,即可高效召回有用片段;召回”;2. 使用bce-reranker-base_v1对片段进行重排序,最终得到Top 5-10片段以实现“精准”。)BCEmbedding技术博客(Technical Blog):为RAG而生-BCEmbedding技术报告

Bilingual and Crosslingual Embedding(BCEmbedding)由网易有道开发,包含EmbeddingModel和RerankerModel。EmbeddingModel专注于生成语义向量,在语义搜索和问答中发挥关键作用;RerankerModel则擅长优化搜索结果和排序任务。
BCEmbedding是有道检索增强生成(RAG)应用的核心基础,尤其在QAnything[github]中表现突出。QAnything作为开源项目,已广泛集成到有道的各类产品中,如有道速读和有道翻译。
BCEmbedding以其卓越的双语和跨语言能力为特色,能有效弥合中英文语言差异,实现:
BCEmbedding是由网易有道开发的双语和跨语种语义表征算法模型库,其中包含EmbeddingModel和RerankerModel两类基础模型。EmbeddingModel专门用于生成语义向量,在语义搜索和问答中起着关键作用,而RerankerModel擅长优化语义搜索结果和语义相关顺序精排。
BCEmbedding作为有道的检索增强生成式应用(RAG)的基石,特别是在QAnything[github]中发挥着重要作用。QAnything作为一个网易有道开源项目,在有道许多产品中有很好的应用实践,比如有道速读和有道翻译。
BCEmbedding以其出色的双语和跨语种能力而著称,在语义检索中消除中英语言之间的差异,从而实现:
现有的嵌入模型在双语和跨语种场景下往往面临性能挑战,尤其在中文、英文及其跨语种任务中。BCEmbedding借助有道翻译引擎的优势,在单语、双语和跨语种场景下均展现出卓越性能。
EmbeddingModel支持中文(ch)和英文(en)(更多语种支持即将上线),而RerankerModel支持中文(ch)、英文(en)、日文(ja)和韩文(ko)。
现有的单个语义表征模型在双语和跨语种场景中常常表现不佳,特别是在中文、英文及其跨语种任务中。BCEmbedding充分利用有道翻译引擎的优势,实现只需一个模型就可以在单语、双语和跨语种场景中表现出卓越的性能。
EmbeddingModel支持中文和英文(之后会支持更多语种);RerankerModel支持中文,英文,日文和韩文。
卓越的双语与跨语种能力:依托有道翻译引擎,在中文、英文及其中英跨语种检索任务中表现突出,更多语种支持即将推出。
RAG优化设计:专为各类RAG任务量身打造,包括翻译、摘要和问答,确保精准的查询理解。详见 LlamaIndex中的RAG评测。
高效精准的检索流程:EmbeddingModel采用双编码器架构,在第一阶段实现高效检索;RerankerModel则运用交叉编码器,在第二阶段提升精度并进行深度语义分析。
广泛的领域适应性:通过多样化数据集训练,在不同领域均能保持优异性能。
用户友好的设计:无需指令前缀,适用于多任务场景,无需为每项任务单独指定查询指令。
有意义的重排序分数:RerankerModel提供具有实际意义的相关性分数,有助于提升结果质量并优化大语言模型性能。
经过生产验证:已在有道多款产品中成功部署并验证。
双语和跨语种能力:基于有道翻译引擎的强大能力,我们的BCEmbedding具备强大的中英双语和跨语种语义表征能力。
RAG适配:面向RAG做了针对性优化,可以适配大多数相关任务,比如翻译,摘要,问答等。此外,针对问题理解(query understanding)也做了针对优化,详见 基于LlamaIndex的RAG评测指标。
高效且精确的语义检索:EmbeddingModel采用双编码器,可以在第一阶段实现高效的语义检索。RerankerModel采用交叉编码器,可以在第二阶段实现更高精度的语义顺序精排。
更好的领域泛化性:为了在更多场景实现更好的效果,我们收集了多种多样的领域数据。
用户友好:语义检索时不需要特殊指令前缀。也就是,你不需要为各种任务绞尽脑汁设计指令前缀。
有意义的重排序分数:RerankerModel可以提供有意义的语义相关性分数(不仅仅是排序),可以用于过滤无意义文本片段,提高大模型生成效果。
产品化检验:BCEmbedding已经被有道众多真实产品检验。
2024-01-03: 模型发布 - bce-embedding-base_v1 和 bce-reranker-base_v1 已开放使用。
2024-01-03: 评测数据集 [CrosslingualMultiDomainsDataset] - 用于评估 RAG 性能,可结合 LlamaIndex 使用。
2024-01-03: 评测数据集 [详情] - 用于评估跨语种语义表征性能,可结合 MTEB 使用。
| 模型名称 | 模型类型 | 支持语言 | 参数规模 | 权重下载 |
|---|---|---|---|---|
| bce-embedding-base_v1 | EmbeddingModel | 中文、英文 | 279M | 下载 |
| bce-reranker-base_v1 | RerankerModel | 中文、英文、日文、韩文 | 279M | 下载 |
首先,创建并激活 conda 环境。
conda create --name bce python=3.10 -y
conda activate bce然后安装 BCEmbedding 以进行最小化安装:
pip install BCEmbedding==0.1.1或者从源代码安装:
git clone git@github.com:netease-youdao/BCEmbedding.git
cd BCEmbedding
pip install -v -e .from openmind import AutoTokenizer, AutoModel, is_torch_npu_available
from openmind_hub import snapshot_download
import torch.nn.functional as F
from torch import Tensor
import openmind
import torch
import argparse
import time
# Mean Pooling - Take attention mask into account for correct averaging
def mean_pooling(model_output, attention_mask):
token_embeddings = model_output[0] # First element of model_output contains all token embeddings
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 parse_args():
parser = argparse.ArgumentParser()
parser.add_argument(
"--model_name_or_path",
type=str,
help="Path to model",
default="jeffding/bce-embedding-base_v1-openmind",
)
args = parser.parse_args()
return args
def main():
args = parse_args()
model_path = args.model_name_or_path
if is_torch_npu_available():
device = "npu:0"
else:
device = "cpu"
# Load model from HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained(model_path,trust_remote_code=True)
model = AutoModel.from_pretrained(model_path, trust_remote_code=True).to(device)
start_time = time.time()
sentences = ['如何更换花呗绑定银行卡', 'How to replace the Huabei bundled bank card']
# Tokenize sentences
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt').to(device)
# Compute token embeddings
with torch.no_grad():
model_output = model(**encoded_input)
# Perform pooling. In this case, mean pooling.
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
print("Sentence embeddings:")
print(sentence_embeddings)
end_time = time.time()
print(f"硬件环境:{device},推理执行时间:{end_time - start_time}秒")
if __name__ == "__main__":
main()BCEmbedding使用EmbeddingModel,默认采用cls 池化器。
from BCEmbedding import EmbeddingModel
# list of sentences
sentences = ['sentence_0', 'sentence_1', ...]
# init embedding model
model = EmbeddingModel(model_name_or_path="maidalun1020/bce-embedding-base_v1")
# extract embeddings
embeddings = model.encode(sentences)使用 RerankerModel 计算相关分数并重新排序:
from BCEmbedding import RerankerModel
# your query and corresponding passages
query = 'input_query'
passages = ['passage_0', 'passage_1', ...]
# construct sentence pairs
sentence_pairs = [[query, passage] for passage in passages]
# init reranker model
model = RerankerModel(model_name_or_path="maidalun1020/bce-reranker-base_v1")
# method 0: calculate scores of sentence pairs
scores = model.compute_score(sentence_pairs)
# method 1: rerank passages
rerank_results = model.rerank(query, passages)注意:
RerankerModel.rerank 方法中,我们提供了一种在生产环境中使用的高级预处理方式,用于在“passages”很长时构建 sentence_pairs。transformers对于 EmbeddingModel:
from transformers import AutoModel, AutoTokenizer
# list of sentences
sentences = ['sentence_0', 'sentence_1', ...]
# init model and tokenizer
tokenizer = AutoTokenizer.from_pretrained('maidalun1020/bce-embedding-base_v1')
model = AutoModel.from_pretrained('maidalun1020/bce-embedding-base_v1')
device = 'cuda' # if no GPU, set "cpu"
model.to(device)
# get inputs
inputs = tokenizer(sentences, padding=True, truncation=True, max_length=512, return_tensors="pt")
inputs_on_device = {k: v.to(self.device) for k, v in inputs.items()}
# get embeddings
outputs = model(**inputs_on_device, return_dict=True)
embeddings = outputs.last_hidden_state[:, 0] # cls pooler
embeddings = embeddings / embeddings.norm(dim=1, keepdim=True) # normalize对于 RerankerModel:
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
# init model and tokenizer
tokenizer = AutoTokenizer.from_pretrained('maidalun1020/bce-reranker-base_v1')
model = AutoModelForSequenceClassification.from_pretrained('maidalun1020/bce-reranker-base_v1')
device = 'cuda' # if no GPU, set "cpu"
model.to(device)
# get inputs
inputs = tokenizer(sentence_pairs, padding=True, truncation=True, max_length=512, return_tensors="pt")
inputs_on_device = {k: v.to(device) for k, v in inputs.items()}
# calculate scores
scores = model(**inputs_on_device, return_dict=True).logits.view(-1,).float()
scores = torch.sigmoid(scores)sentence_transformers对于 EmbeddingModel:
from sentence_transformers import SentenceTransformer
# list of sentences
sentences = ['sentence_0', 'sentence_1', ...]
# init embedding model
## New update for sentence-trnasformers. So clean up your "`SENTENCE_TRANSFORMERS_HOME`/maidalun1020_bce-embedding-base_v1" or "~/.cache/torch/sentence_transformers/maidalun1020_bce-embedding-base_v1" first for downloading new version.
model = SentenceTransformer("maidalun1020/bce-embedding-base_v1")
# extract embeddings
embeddings = model.encode(sentences, normalize_embeddings=True)对于 RerankerModel:
from sentence_transformers import CrossEncoder
# init reranker model
model = CrossEncoder('maidalun1020/bce-reranker-base_v1', max_length=512)
# calculate scores of sentence pairs
scores = model.predict(sentence_pairs)langchain 中使用from langchain.embeddings import HuggingFaceEmbeddings
from langchain_community.vectorstores import FAISS
from langchain_community.vectorstores.utils import DistanceStrategy
query = 'apples'
passages = [
'I like apples',
'I like oranges',
'Apples and oranges are fruits'
]
# init embedding model
model_name = 'maidalun1020/bce-embedding-base_v1'
model_kwargs = {'device': 'cuda'}
encode_kwargs = {'batch_size': 64, 'normalize_embeddings': True, 'show_progress_bar': False}
embed_model = HuggingFaceEmbeddings(
model_name=model_name,
model_kwargs=model_kwargs,
encode_kwargs=encode_kwargs
)
# example #1. extract embeddings
query_embedding = embed_model.embed_query(query)
passages_embeddings = embed_model.embed_documents(passages)
# example #2. langchain retriever example
faiss_vectorstore = FAISS.from_texts(passages, embed_model, distance_strategy=DistanceStrategy.MAX_INNER_PRODUCT)
retriever = faiss_vectorstore.as_retriever(search_type="similarity", search_kwargs={"score_threshold": 0.5, "k": 3})
related_passages = retriever.get_relevant_documents(query)llama_index 中使用from llama_index.embeddings import HuggingFaceEmbedding
from llama_index import VectorStoreIndex, ServiceContext, SimpleDirectoryReader
from llama_index.node_parser import SimpleNodeParser
from llama_index.llms import OpenAI
query = 'apples'
passages = [
'I like apples',
'I like oranges',
'Apples and oranges are fruits'
]
# init embedding model
model_args = {'model_name': 'maidalun1020/bce-embedding-base_v1', 'max_length': 512, 'embed_batch_size': 64, 'device': 'cuda'}
embed_model = HuggingFaceEmbedding(**model_args)
# example #1. extract embeddings
query_embedding = embed_model.get_query_embedding(query)
passages_embeddings = embed_model.get_text_embedding_batch(passages)
# example #2. rag example
llm = OpenAI(model='gpt-3.5-turbo-0613', api_key=os.environ.get('OPENAI_API_KEY'), api_base=os.environ.get('OPENAI_BASE_URL'))
service_context = ServiceContext.from_defaults(llm=llm, embed_model=embed_model)
documents = SimpleDirectoryReader(input_files=["BCEmbedding/tools/eval_rag/eval_pdfs/Comp_en_llama2.pdf"]).load_data()
node_parser = SimpleNodeParser.from_defaults(chunk_size=512)
nodes = node_parser.get_nodes_from_documents(documents[0:36])
index = VectorStoreIndex(nodes, service_context=service_context)
query_engine = index.as_query_engine()
response = query_engine.query("What is llama?")我们基于MTEB和C_MTEB,提供embedding和reranker模型的语义表征评测工具。
我们基于MTEB和C_MTEB,提供embedding和reranker模型的语义表征评测工具。
只需运行以下命令,即可在双语和跨语种场景(例如["en", "zh", "en-zh", "zh-en"])下评估your_embedding_model(如maidalun1020/bce-embedding-base_v1)。
运行下面命令评测your_embedding_model(比如,maidalun1020/bce-embedding-base_v1)。评测任务将会在双语和跨语种(比如,["en", "zh", "en-zh", "zh-en"])模式下评测:
python BCEmbedding/tools/eval_mteb/eval_embedding_mteb.py --model_name_or_path maidalun1020/bce-embedding-base_v1 --pooler cls总评测任务包含 "Retrieval"(检索)、"STS"(语义文本相似度)、"PairClassification"(句子对分类)、"Classification"(分类)、"Reranking"(重排序) 和 "Clustering"(聚类) 六大类任务的 114 个数据集。
评测包含 "Retrieval", "STS", "PairClassification", "Classification", "Reranking"和"Clustering" 这六大类任务的 114个数据集。
注意:
pooler)进行评测。
mean 池化:"jina-embeddings-v2-base-en"、"m3e-base"、"m3e-large"、"e5-large-v2"、"multilingual-e5-base"、"multilingual-e5-large" 和 "gte-large"。cls 池化:其他模型。trust_remote_code。python BCEmbedding/tools/eval_mteb/eval_embedding_mteb.py --model_name_or_path {moka-ai/m3e-base | moka-ai/m3e-large} --pooler mean
python BCEmbedding/tools/eval_mteb/eval_embedding_mteb.py --model_name_or_path jinaai/jina-embeddings-v2-base-en --pooler mean --trust_remote_code注意:
pooler。"jina-embeddings-v2-base-en"、"m3e-base"、"m3e-large"、"e5-large-v2"、"multilingual-e5-base"、"multilingual-e5-large"和"gte-large"的pooler采用mean,其他模型的pooler采用cls。
trust_remote_code。运行以下命令在双语和跨语言设置(例如["en", "zh", "en-zh", "zh-en"])下评测your_reranker_model(例如"maidalun1020/bce-reranker-base_v1")。
运行下面命令评测your_reranker_model(比如,maidalun1020/bce-reranker-base_v1)。评测任务将会在 双语种和跨语种(比如,["en", "zh", "en-zh", "zh-en"])模式下评测:
python BCEmbedding/tools/eval_mteb/eval_reranker_mteb.py --model_name_or_path maidalun1020/bce-reranker-base_v1评测任务包含 "Reranking" 相关的 12个数据集。
评测包含 "Reranking" 任务的 12个数据集。
我们提供了一键脚本,可将 embedding 和 reranker 模型的评测结果汇总为 Embedding 模型评测汇总 与 Reranker 模型评测汇总。
我们提供了embedding和reranker模型的指标可视化一键脚本,输出一个markdown文件,详见Embedding模型指标汇总和Reranker模型指标汇总。
python BCEmbedding/evaluation/mteb/summarize_eval_results.py --results_dir {your_embedding_results_dir | your_reranker_results_dir}LlamaIndex是一个知名的基于大语言模型(LLM)的应用数据框架,尤其在检索增强生成(RAG)领域表现突出。近期,LlamaIndex博客对RAG流程中主流的嵌入(embedding)和重排序(reranker)模型进行了评测,引发了广泛关注。现在,我们将遵循其评测流程来评估我们的BCEmbedding。
LlamaIndex是一个著名的大模型应用的开源工具,在RAG中很受欢迎。最近,LlamaIndex博客对市面上常用的embedding和reranker模型进行RAG流程的评测,吸引广泛关注。下面我们按照该评测流程验证BCEmbedding在RAG中的效果。
首先,安装LlamaIndex:
pip install llama-index==0.9.22命中率(Hit Rate):
命中率计算的是在检索的前k个文档中找到正确答案的查询所占的比例。简单来说,它反映了我们的系统在前几次猜测中答对的频率。该指标越大越好。
平均倒数排名(Mean Reciprocal Rank,MRR):
对于每个查询,MRR通过查看最高排名的相关文档的排名来评估系统的准确性。具体来说,它是在所有查询中这些排名的倒数的平均值。因此,如果第一个相关文档是排名最靠前的结果,倒数排名就是1;如果是第二个,倒数排名就是1/2,依此类推。该指标越大越好。
为了公平地将我们的BCEmbedding与其他嵌入和重排序模型进行比较,我们提供了一键式脚本以复现LlamaIndex博客中的结果,其中包括我们的BCEmbedding:
为了公平起见,运行下面脚本,复现LlamaIndex博客的结果,将BCEmbedding与其他embedding和reranker模型进行对比分析:
# There should be two GPUs available at least.
CUDA_VISIBLE_DEVICES=0,1 python BCEmbedding/tools/eval_rag/eval_llamaindex_reproduce.py然后,通过以下方式总结评估结果:
python BCEmbedding/tools/eval_rag/summarize_eval_results.py --results_dir results/rag_reproduce_results从LlamaIndex博客复现的结果可在***RAG评估复现总结中查看,其中包含一些明显的结论***:
在WithoutReranker设置下,我们的bce-embedding-base_v1性能优于所有其他嵌入模型。
在固定嵌入模型的情况下,我们的bce-reranker-base_v1实现了最佳性能。
bce-embedding-base_v1与bce-reranker-base_v1的组合达到了SOTA水平。
输出的指标汇总详见***LlamaIndex RAG评测结果复现***。从该复现结果中,可以看出:
WithoutReranker设置下(竖排对比),bce-embedding-base_v1比其他embedding模型效果都要好。bce-reranker-base_v1比其他reranker模型效果都要好。bce-embedding-base_v1和bce-reranker-base_v1组合,表现SOTA。LlamaIndex博客中的评估是单语种、小数据量且特定领域的(仅包含“llama2”论文)。为了评估广泛的领域适应性、双语及跨语言能力,我们参照该博客构建了一个多领域评估数据集(包括“计算机科学”、“物理学”、“生物学”、“经济学”、“数学”和“量化金融”),命名为CrosslingualMultiDomainsDataset,通过OpenAI的gpt-4-1106-preview确保高质量。
在上述的LlamaIndex博客的评测数据只用了“llama2”这一篇文章,该评测是单语种,小数据量,特定领域的。为了兼容更真实更广的用户使用场景,评测算法模型的领域泛化性,双语和跨语种能力,我们按照该博客的方法构建了一个多领域(计算机科学,物理学,生物学,经济学,数学,量化金融等)的双语种、跨语种评测数据,CrosslingualMultiDomainsDataset。为了保证构建数据的高质量,我们采用OpenAI的gpt-4-1106-preview。
首先,运行以下命令来评估最受欢迎且功能强大的嵌入和重排序模型:
# There should be two GPUs available at least.
CUDA_VISIBLE_DEVICES=0,1 python BCEmbedding/tools/eval_rag/eval_llamaindex_multiple_domains.py然后,运行以下脚本以汇总评估结果:
python BCEmbedding/tools/eval_rag/summarize_eval_results.py --results_dir results/rag_results多领域评估摘要可参见 多领域场景。
| 模型 | 维度 | 池化方式 | 指令要求 | 检索 (47) | STS (19) | 句子对分类 (5) | 分类 (21) | 重排序 (12) | 聚类 (15) | 平均 (119) |
|---|---|---|---|---|---|---|---|---|---|---|
| bge-base-en-v1.5 | 768 | cls | 需要 | 37.14 | 55.06 | 75.45 | 59.73 | 43.00 | 37.74 | 47.19 |
| bge-base-zh-v1.5 | 768 | cls | 需要 | 47.63 | 63.72 | 77.40 | 63.38 | 54.95 | 32.56 | 53.62 |
| bge-large-en-v1.5 | 1024 | cls | 需要 | 37.18 | 54.09 | 75.00 | 59.24 | 42.47 | 37.32 | 46.80 |
| bge-large-zh-v1.5 | 1024 | cls | 需要 | 47.58 | 64.73 | 79.14 | 64.19 | 55.98 | 33.26 | 54.23 |
| e5-large-v2 | 1024 | mean | 需要 | 35.98 | 55.23 | 75.28 | 59.53 | 42.12 | 36.51 | 46.52 |
| gte-large | 1024 | mean | 不需要 | 36.68 | 55.22 | 74.29 | 57.73 | 42.44 | 38.51 | 46.67 |
| gte-large-zh | 1024 | cls | 不需要 | 41.15 | 64.62 | 77.58 | 62.04 | 55.62 | 33.03 | 51.51 |
| jina-embeddings-v2-base-en | 768 | mean | 不需要 | 31.58 | 54.28 | 74.84 | 58.42 | 41.16 | 34.67 | 44.29 |
| m3e-base | 768 | mean | 不需要 | 46.29 | 63.93 | 71.84 | 64.08 | 52.38 | 37.84 | 53.54 |
| m3e-large | 1024 | mean | 不需要 | 34.85 | 59.74 | 67.69 | 60.07 | 48.99 | 31.62 | 46.78 |
| multilingual-e5-base | 768 | mean | 需要 | 54.73 | 65.49 | 76.97 | 69.72 | 55.01 | 38.44 | 58.34 |
| multilingual-e5-large | 1024 | mean | 需要 | 56.76 | 66.79 | 78.80 | 71.61 | 56.49 | 43.09 | 60.50 |
| bce-embedding-base_v1 | 768 | cls | 不需要 | 57.60 | 65.73 | 74.96 | 69.00 | 57.29 | 38.95 | 59.43 |
注:
我们的 bce-embedding-base_v1 在具有可比模型大小的其他开源嵌入模型中表现更优。
在 ["en", "zh", "en-zh", "zh-en"] 设置下,包含 "Retrieval"、"STS"、"PairClassification"、"Classification"、"Reranking" 和 "Clustering" 的 114 个数据集。
我们发布的跨语言评估数据集属于 Retrieval 任务。
更多评估细节请查看 嵌入模型评估摘要。
要点:
Retrieval任务。| 模型 | 重排序 (12) | 平均 (12) |
|---|---|---|
| bge-reranker-base | 59.04 | 59.04 |
| bge-reranker-large | 60.86 | 60.86 |
| bce-reranker-base_v1 | 61.29 | 61.29 |
注:
我们的 bce-reranker-base_v1 优于其他开源重排序模型。
在 ["en", "zh", "en-zh", "zh-en"] 设置下,包含 "Reranking" 的 12 个数据集。
更多评估细节请查看 重排序模型评估摘要。
要点:

注意:
评测在 ["en", "zh", "en-zh", "zh-en"] 设置下进行。
在 WithoutReranker 设置中,我们的 bce-embedding-base_v1 性能优于所有其他嵌入模型。
当固定嵌入模型时,我们的 bce-reranker-base_v1 实现了最佳性能。
bce-embedding-base_v1 与 bce-reranker-base_v1 的组合达到了 SOTA 水平。
要点:
["en", "zh", "en-zh", "zh-en"]设置下。WithoutReranker设置下(竖排对比),bce-embedding-base_v1优于其他Embedding模型,包括开源和闭源。bce-reranker-base_v1比其他reranker模型效果都要好,包括开源和闭源。bce-embedding-base_v1和bce-reranker-base_v1组合,表现SOTA。对于那些希望获得轻松体验,无需在自己的系统上下载和配置模型的用户,BCEmbedding 可通过有道 API 直接使用。此选项提供了一种简化高效的方式,能将 BCEmbedding 集成到您的项目中,省去了手动设置和维护的复杂性。详细的操作指南和全面的 API 文档可在 有道 BCEmbedding API 查看。您将在此找到所有必要的指导,以便轻松地在各种使用场景中实现 BCEmbedding,确保集成过程顺利有效,从而获得最佳结果。
对于那些更喜欢直接调用api的用户,有道提供方便的BCEmbedding调用api。该方式是一种简化和高效的方式,将BCEmbedding集成到您的项目中,避开了手动设置和系统维护的复杂性。更详细的api调用接口说明详见有道BCEmbedding API。
欢迎扫描下方二维码,加入微信交流群。
欢迎大家扫码加入官方微信交流群。

如果您在研究或项目中使用了 BCEmbedding,欢迎引用并为其点亮 star:
如果在您的研究或任何项目中使用本工作,烦请按照下方进行引用,并打个小星星~
@misc{youdao_bcembedding_2023,
title={BCEmbedding: Bilingual and Crosslingual Embedding for RAG},
author={NetEase Youdao, Inc.},
year={2023},
howpublished={\url{https://github.com/netease-youdao/BCEmbedding}}
}BCEmbedding 基于 Apache 2.0 许可证 进行许可。