赛题名称:大模型RAG智能问答挑战赛 赛题类型:自然语言处理、大模型 赛题任务:利用检索到的信息,结合问题本身,生成准确、全面、权威的回答。
报名链接:https://challenge.xfyun.cn/topic/info?type=RAG-quiz&option=ssgy&ch=dw24_AtTCK9
赛题背景
RAG(检索增强生成)是一种结合了检索模型和生成模型的技术,它通过检索大量外部知识来辅助文本生成,从而提高大型语言模型(LLMs)的准确度和可靠性。
RAG特别适合于需要不断更新知识的知识密集型场景或特定领域应用,它通过引入外部信息源,有效缓解了大语言模型在领域知识缺乏、信息准确性问题以及生成虚假内容等方面的挑战。本次挑战赛旨在探索RAG技术的极限,鼓励开发者、研究人员和爱好者利用RAG技术解决实际问题,推动人工智能领域的进步。
赛题任务
赛题需要参赛选手设计并实现一个RAG模型,该模型能够从给定的问题出发,检索知识库中的相关信息。利用检索到的信息,结合问题本身,生成准确、全面、权威的回答。
数据说明
数据集包括一些未标注的文本,需要参赛者使用RAG技术中的检索增强方法来找到相关信息,并生成答案。这要求参赛者不仅要有强大的检索能力,还要能够生成准确、连贯且符合上下文的文本。
测试集为模拟生成的用户提问,需要参赛选手结合提问和语料完成回答。需注意,在问题中存在部分问题无法回答,需要选手设计合适的策略进行拒绝回答的逻辑。
corpus.txt.zip:语料库,每行为一篇新闻 test_question.csv:测试提问
评审规则
对于测试提问的回答,采用字符重合比例进行评价,分数最高为1。
Baseline 思路
赛题是一个典型的 RAG 比赛,因此只需要参考检索、重排序、问答的思路就可以完成。核心代码如下:
文本特征编码
import pandas as pd
import numpy as np
import os
os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
from sentence_transformers import SentenceTransformer
sentences_1 = ["样例数据-1", "样例数据-2"]
model = SentenceTransformer('BAAI/bge-small-zh-v1.5')
embeddings_1 = model.encode(sentences_1, normalize_embeddings=True, show_progress_bar=True)
corpus = open('corpus.txt').readlines()
query = pd.read_csv('test_question.csv')['question'].values
query_feat = model.encode(query, normalize_embeddings=True, show_progress_bar=True)
corpus_feat = model.encode(corpus, normalize_embeddings=True, show_progress_bar=True)
文本问答
from tqdm import tqdm
test_answer = []
for q, qtext in tqdm(zip(query_feat, query)):
top1_content = corpus[np.dot(q, corpus_feat.T).argsort()[-1]]
prompt_text = f'''请结合下面的资料,回答给定的问题:
提问:{qtext}
相关资料:{top1_content}
'''
try:
answer = glm4air(prompt_text)
answer = answer.replace('\n', '')
test_answer.append(answer)
except:
test_answer.append('无法回答。')
完整代码见:
https://github.com/datawhalechina/competition-baseline/tree/master/competition/%E7%A7%91%E5%A4%A7%E8%AE%AF%E9%A3%9EAI%E5%BC%80%E5%8F%91%E8%80%85%E5%A4%A7%E8%B5%9B2024
# 学习大模型 & 讨论Kaggle #
每天大模型、算法竞赛、干货资讯