Open ninehills opened 9 months ago
微调效果不佳的原因是 bge 模型本身就在 T2Reranking 数据集上训练,重复训练没有突出提升是合理的。
在实际项目中,在行业专业知识上微调,有极大的效果提升。
@ninehills 您好,请问:
这种情况可以用HyDE 方法。
使用一个快速模型(如gpt-3.5-turbo或者自托管的10B以内模型),对query进行直接回答(可以指令要求简短回答)。
然后对回答进行embedding ,用回答来检索文档。
这个模型如果在行业知识上post-pretain或者sft就更好了。
On Fri, Apr 26, 2024 at 15:57 liyunhan @.***> wrote:
@ninehills https://github.com/ninehills 您好,请问:
- 行业知识问答中,用户问题口语化严重,但是知识库专业名词偏多,这种情况BM25和BGE选择哪个更好?
- 如果微调的话,数据是不是也要准备很多口语化的“问题”
— Reply to this email directly, view it on GitHub https://github.com/ninehills/blog/issues/104#issuecomment-2078837686, or unsubscribe https://github.com/notifications/unsubscribe-auth/AACB7WQWQ6W72LLOOLODVVTY7ICHXAVCNFSM6AAAAAA64WF6PWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANZYHAZTONRYGY . You are receiving this because you were mentioned.Message ID: @.***>
这种情况可以用HyDE 方法。 使用一个快速模型(如gpt-3.5-turbo或者自托管的10B以内模型),对query进行直接回答(可以指令要求简短回答)。 然后对回答进行embedding ,用回答来检索文档。 这个模型如果在行业知识上post-pretain或者sft就更好了。 … On Fri, Apr 26, 2024 at 15:57 liyunhan @.> wrote: @ninehills https://github.com/ninehills 您好,请问: 1. 行业知识问答中,用户问题口语化严重,但是知识库专业名词偏多,这种情况BM25和BGE选择哪个更好? 2. 如果微调的话,数据是不是也要准备很多口语化的“问题” — Reply to this email directly, view it on GitHub <#104 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AACB7WQWQ6W72LLOOLODVVTY7ICHXAVCNFSM6AAAAAA64WF6PWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANZYHAZTONRYGY . You are receiving this because you were mentioned.Message ID: @.>
快速模型仅在行业知识上post-pretrain也可以?这样不是会丢失对齐能力吗
这个回答并不是用来直接提供的,而是用来检索的。
On Fri, Apr 26, 2024 at 16:53 liyunhan @.***> wrote:
这种情况可以用HyDE 方法。 使用一个快速模型(如gpt-3.5-turbo或者自托管的10B以内模型),对query进行直接回答(可以指令要求简短回答)。 然后对回答进行embedding ,用回答来检索文档。 这个模型如果在行业知识上post-pretain或者sft就更好了。 … <#m-5074319437563760008> On Fri, Apr 26, 2024 at 15:57 liyunhan @.> wrote: @ninehills https://github.com/ninehills https://github.com/ninehills https://github.com/ninehills 您好,请问: 1. 行业知识问答中,用户问题口语化严重,但是知识库专业名词偏多,这种情况BM25和BGE选择哪个更好? 2. 如果微调的话,数据是不是也要准备很多口语化的“问题” — Reply to this email directly, view it on GitHub <#104 (comment) https://github.com/ninehills/blog/issues/104#issuecomment-2078837686>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AACB7WQWQ6W72LLOOLODVVTY7ICHXAVCNFSM6AAAAAA64WF6PWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANZYHAZTONRYGY https://github.com/notifications/unsubscribe-auth/AACB7WQWQ6W72LLOOLODVVTY7ICHXAVCNFSM6AAAAAA64WF6PWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANZYHAZTONRYGY . You are receiving this because you were mentioned.Message ID: @.>
快速模型仅在行业知识上post-pretrain也可以?这样不是会丢失对齐能力吗
— Reply to this email directly, view it on GitHub https://github.com/ninehills/blog/issues/104#issuecomment-2078940706, or unsubscribe https://github.com/notifications/unsubscribe-auth/AACB7WSPUPGJ6GM32SGMSZTY7IIZTAVCNFSM6AAAAAA64WF6PWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANZYHE2DANZQGY . You are receiving this because you were mentioned.Message ID: @.***>
@ninehills 谢谢您,还想请教您在检索中怎么先做一次信息过滤呢?比如很多无关的内容我希望直接过滤掉,缩小检索范围、提升检索精度
为检验 Embedding 模型在 RAG 应用中的性能,我们引入 C-MTEB 评测用来评估 Embedding 模型的性能。
已有的 Embedding 模型的 C-MTEB 分数在 MTEB Leaderboard 上可以通过选择
Chinese
选项卡查看。而针对有明确数据集的场景,我们也可以复用 C-MTEB 的评估方法,评估 Embedding 模型在特定数据集上的性能,从而为后续微调提供参考。
C-MTEB 评估任务
C-MTEB 有多种任务,其中和 RAG 能力相关是 Reranking 和 Retrieval 任务,其数据集格式如下:
Reranking 任务的数据集格式为:
目前通用场景的 Reranking 数据集主要是 T2Reranking。
在评测分数中,我们主要关心
map
分数,这是因为任务不涉及排序,而是看是否命中 positive 。而 Retrieval 任务的数据集以 T2Retrieval 为例,分为三个部分:
在评测分数中,我们主要关心
ndcg@10
分数,是检验 top10 检索结果中排序是否一致的指标。此外由于 Retrieval 数据集比较难构造,所以一般自定义数据集都是用 Reranking 数据集。Reranking 数据集的格式还和 FlagEmbedding fine-tune 所需的数据格式相同,方便用于微调后的评估。
自定义模型的通用任务评测
选择 T2Reranking 进行评测,评测目标是文心千帆上的 Embedding-V1 模型。
参见 Colab Notebook。
取 1000 条测试数据(总数据的 1/6,为了降低 token 使用),评测 map 得分为 66.54。超过了 Leaderboard 上的 SOTA 分数 66.46 分。(不过并不是全部数据,这个分数仅供参考,如果是全部数据,得分可能会低于 SOTA)
自定义数据集微调和评测
使用 T2Reranking 数据集拆分出训练集和测试集,对 BAAI/bge-small-zh-v1.5 模型进行微调和测试。
参见 Colab Notebook。
可以看到微调效果不尽如人意(第一个 checkpoint 就提升了 3% 的效果,然后后续无明显提升)。这可能是因为数据集的质量不高,导致模型无法学到有效的信息。
社区相关讨论:https://github.com/FlagOpen/FlagEmbedding/issues/179
微调资源占用:small 模型,4090 显存占用 20G。