netease-youdao / BCEmbedding

Netease Youdao's open-source embedding and reranker models for RAG products.
Apache License 2.0
1.35k stars 90 forks source link

embedding model最长只512的输入长度吗 #23

Closed zyh3826 closed 6 months ago

zyh3826 commented 6 months ago

您好,请问 BCE的Embedding model只支持512的输入长度吗,如果超长文本,比如10k长度咋办

shenlei1020 commented 6 months ago

embedding只支持512 tokens长度文本。 超长文本切片成不超过512的文本块

zyh3826 commented 6 months ago

embedding只支持512 tokens长度文本。 超长文本切片成不超过512的文本块

谢谢解答,我也是想到了这个方案

zyh3826 commented 6 months ago

@shenlei1020 还有个问题请教,这里代码是不是写的有点问题,按照报错解释query长度不能超过400的话应该是小于100吧

shenlei1020 commented 6 months ago

我看着没啥问题,你再看看

zyh3826 commented 6 months ago

我看着没啥问题,你再看看

我还是没想通,根据代码max_passage_inputs_length = max_length - len(query_inputs['input_ids']) - 1不应该是len(query_inputs['input_ids'])越大这个值越小吗,比如query长500,值为11,query长400,值为111,query长300,值为211,那么下一句assert max_passage_inputs_length > 100, "Your query is too long! Please make sure your query less than 400 tokens!"不应该是小于100吗,query应该是要短一点给后面拼接留空间吧,还是我理解有误

shenlei1020 commented 6 months ago

你看看assert和if的区别,感觉对assert和if搞混了

zyh3826 commented 6 months ago

你看看assert和if的区别,感觉对assert和if搞混了 还真是哈哈

zyh3826 commented 6 months ago

rerank的时候注意到是按照batch size进行推理,如果构造的sentence_pairs不能整除batch size呢,代码里好像没看到这个处理, https://github.com/netease-youdao/BCEmbedding/blob/master/BCEmbedding/models/reranker.py#L127

shenlei1020 commented 6 months ago

这个无所谓,python的基础,你测试一下就知道了