开源目的
给RAG社区一个可以直接拿来用,尽可能不需要用户finetune的中英双语和跨语种二阶段检索模型库,包含EmbeddingModel
和RerankerModel
。
- 只需一个模型:
EmbeddingModel
覆盖 中英双语和中英跨语种 检索任务,尤其是其跨语种能力。RerankerModel
支持 中英日韩 四个语种及其跨语种。 - 只需一个模型: 覆盖常见业务落地领域(针对众多常见rag场景已做优化),比如:教育、医疗、法律、金融、科研论文、客服(FAQ)、书籍、百科、通用QA等场景。用户不需要在上述特定领域finetune,直接可以用。
- 方便集成:
EmbeddingModel
和RerankerModel
提供了LlamaIndex和LangChain 集成接口 ,用户可非常方便集成进现有产品中。 - 其他特性:
RerankerModel
支持 长passage(超过512 tokens,不超过32k tokens)rerank;RerankerModel
可以给出有意义 相关性分数 ,帮助 过滤低质量召回;EmbeddingModel
不需要“精心设计”instruction ,尽可能召回有用片段。
典型案例
- RAG应用项目:QAnything, HuixiangDou, ChatPDF.
- 高效推理引擎:ChatLLM.cpp, Xinference, mindnlp(支持华为显卡).
🌐 双语和跨语种优势
现有的单个语义表征模型在双语和跨语种场景中常常表现不佳,特别是在中文、英文及其跨语种任务中。BCEmbedding
充分利用有道翻译引擎的优势,实现只需一个模型就可以在单语、双语和跨语种场景中表现出卓越的性能。
EmbeddingModel
支持中文和英文(之后会支持更多语种);RerankerModel
支持中文,英文,日文和韩文。
💡 主要特点
- 双语和跨语种能力:基于有道翻译引擎的强大能力,
BCEmbedding
实现强大的中英双语和跨语种语义表征能力。 - RAG适配:面向RAG做针对性优化,可适配大多数相关任务,比如翻译,摘要,问答等。此外,针对 问题理解(query understanding) 也做了针对优化。详见 基于LlamaIndex的RAG评测指标。
- 高效且精确的语义检索:
EmbeddingModel
采用双编码器,可以在第一阶段实现高效的语义检索。RerankerModel
采用交叉编码器,可以在第二阶段实现更高精度的语义顺序精排。 - 更好的领域泛化性:为了在更多场景实现更好的效果,我们收集了多种多样的领域数据。
- 用户友好:语义检索时不需要特殊指令前缀。也就是,你不需要为各种任务绞尽脑汁设计指令前缀。
- 有意义的重排序分数:
RerankerModel
可以提供有意义的语义相关性分数(不仅仅是排序),可以用于过滤无意义文本片段,提高大模型生成效果。 - 产品化检验:
BCEmbedding
已经被有道众多产品检验。
传送门:
- BCEmbedding GitHub:集成业务逻辑和LlamaIndex、LangChain接口,可拿来即用。
- bce-embedding-base_v1:bce的embedding模型下载链接。
- bce-reranker-base_v1:bce的reranker模型下载链接。
bce-为RAG而生
QAnything和BCEmbedding简介
QAnything[github]是网易有道检索增强生成式应用(RAG)开源项目,在有道众多商业产品实践中已积累丰富的经验,比如有道速读和有道翻译。QAnything是一个支持任意格式文件或数据库的本地知识库问答系统,可获得准确、快速、靠谱的问答体验。QAnything支持断网离线使用,可私有化。
BCEmbedding是网易有道研发的两阶段检索算法库,作为QAnything的基石发挥着重要作用。作为RAG技术路线中最为重要和基础的一环,二阶段检索器一般由召回和精排这两个模块组成。本文将详细讲述有道BCEmbedding二阶段检索算法设计和实践过程,为RAG社区的语义检索优化提供思路。
背景介绍
检索增强生成(Retrieval-Augmented Generation, RAG)
开放域问答(Open domain question answering,ODQA)是自然语言处理(NLP)一个长期存在的任务,也是实际生产生活中经常遇到的需求。ODQA的任务目标是根据大规模语料(知识库)中的相关信息,以自然语言的形式来对用户的问题进行回答,而不是仅仅将相关文本片段罗列出来[1][2]。如图一所示[1],ODQA技术原型一般包含两个主要模块:检索器(Retriever)和阅读器(Reader)。其中,Retriever模块的作用是根据用户的query在大规模语料中检索到相关候选片段,这些片段包含回答用户问题所需的信息。目前,常用的Retriever有稀疏表示检索(比如,TF-IDF[6]和BM25