Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RAG应用中如何使用qihoo360/360Zhinao-1.8B-Reranking,可以给个例子吗? #17

Open
shizidushu opened this issue Jun 15, 2024 · 3 comments

Comments

@shizidushu
Copy link

qihoo360/360Zhinao-1.8B-Reranking看起来很不错,但是不知道RAG应用中如何使用它。

RAG中有个场景是给定查询(query)和上下文文档节点(docs),使用重排序模型对上下文节点进行排序。不过,从 https://huggingface.co/qihoo360/360Zhinao-1.8B-Reranking 上的例子看,qihoo360/360Zhinao-1.8B-Reranking是用于处理问答对的,并不适用。

比较好奇,qihoo360/360Zhinao-1.8B-Reranking在RAG的应用场景是怎样的,如果有个demo代码就好了

@Yusifu
Copy link
Collaborator

Yusifu commented Jun 17, 2024

您好,感谢您的提问,这个确实是一个问题。刷榜和业务应用确实存在一些gap。

文档和答案不同之处在于,数据分布不同,序列长度更长,即使文档大部分在说其他事情,但只要有一句话回答了用户问题,就认为文档相关。对模型的抗噪能力和鲁棒性提出了更高的要求。

qihoo360/360Zhinao-1.8B-Reranking的训练数据只使用了榜单对应的四个数据集,Marco,T2reranking,cmedqav1和cmedqav2,由于Marco和T2reranking两个数据集是使用全网文档池的段落作为候选段落,因此对文档类分布有一定判别能力。根据这四个数据集的论文,数据集的负例都是先使用一个基础版本的排序器(比如bm25等),在答案池(cmedqav1和cmedqav2)或者全网文档池(Marco和T2reranking)得到topN的答案,因此这个topN个负例可认为有关键词匹配但语义不相关,模型会从这些负例中学到一些噪音数据的判别能力,具有一定鲁棒性。谨慎猜测可以试一下文档排序。

在rag使用过程中,建议将文档切分成段落,或者为文档抽取摘要,使用qihoo360/360Zhinao-1.8B-Reranking模型判断最后的<问题-段落>或<问题-摘要>的相关性。

如果您对文档排序的准确率要求很高,建议在业务数据上进行微调,qihoo360/360Zhinao-1.8B-Reranking支持4096的序列长度,能够比榜单bert类模型处理更长的序列。

精排和向量召回不同,向量召回只能把长文档的丰富语义压缩到一个向量中。精排可做的事情有很多,个人建议先抽摘要,使用qihoo360/360Zhinao-1.8B-Reranking判断<问题-摘要>的相关性。

@shizidushu
Copy link
Author

@Yusifu 感谢你的回复。还有点具体的细节要请教下,https://huggingface.co/qihoo360/360Zhinao-1.8B-Reranking 上的推理脚本是先调用process函数处理用户输入input。这个process好像是专用处理QA对的,判断<问题-摘要>的相关性(RAG)时是直接调用这个函数,还是说需要修改这个process函数?如果需要修改,应该如何修改?

@Yusifu
Copy link
Collaborator

Yusifu commented Jun 24, 2024

直接调用process函数即可

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants