你的BGE模型用对了吗?

众所周知Embedding模型可以将任何文本映射到低维密集向量,该向量可用于检索、分类、聚类或语义搜索等任务,也可以用于LLM的矢量数据库。

智源研究院开源的BGE(BAAI general embedding)模型已经屠榜多时了,且有力推动了知识库检索、聚类、分类等多种下游场景的发展。尤其是在大模型可快速落地的RAG(Retrieval Augmented Generation检索增强生成)场景,用好它显得尤为重要。但不同于其他类似的通用embedding模型,如果有些注意事项被忽视了,可能会使最终效果打些折扣。以下是实际应用BGE时应注意的3个要点。

1、embedding模型也需要指令了?

如果需要搜索与查询相关的段落,建议在查询中添加指令。项目官网建议在RAG场景,对短查询加上指令来获得其向量表示。通俗解释就是:在使用一个“短查询/问题”从知识库中查取相关的长文本时,建议给短查询加上指令。加粗提示:决定是否要加指令的最好办法是在具体任务下比较加和不加的表现。在所有场景下,都没有必要对文档、段落等长文本添加指令。代码示例如下:

from sentence_transformers import SentenceTransformer
queries = ['query_1', 'query_2']
passages = ["文档1", "文档2"]
instruction = "为这个句子生成表示以用于检索相关文章:"

model = SentenceTransformer('BAAI/bge-large-zh-v1.5&#

你可能感兴趣的:(LLM,RAG,BGE,embedding,知识库,语言模型)