精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

MDQA 知識圖譜提示用于多文檔問答

發布于 2025-5-12 00:35
瀏覽
0收藏

論文閱讀

該論文提出了一種知識圖譜提示(KGP)方法,以構建正確的上下文來提示LLMs進行MD-QA,該方法包括一個圖構建模塊和一個圖遍歷模塊。在圖構建方面,創建了一個跨越多文檔的知識圖譜(KG),邊表示段落或文檔結構之間的語義/詞匯相似性。在圖遍歷方面,我們設計了一個基于LLMs的圖遍歷代理,該代理在節點間導航并收集支持性段落,以幫助LLMs進行MD-QA。所構建的圖作為全局規則器,調節段落之間的過渡空間并減少檢索延遲。同時,圖遍歷代理充當一個本地導航器,收集相關上下文以逐步接近問題并保證檢索質量。

我們平常做RAG文本召回的時候,也不會只針對一個文檔做召回,本質上也是多文檔的召回。該文章在傳統的RAG召回的基礎之上,增加了文章、段落節點。在每個段落之間添加了邊,從而實現一種遞歸的文本召回(找到一個與問題相似的段落節點后,在該段落節點的鄰接的節點,也進行相似查找)。如下圖右側所示,一篇文章上面所有內容,包括表格、段落等都掛在到一個文章節點上。(以前我也有過這樣的想法,也做了文章結構的知識圖譜,但沒有找到可以講故事的地方)。下圖右側的段落節點之間的邊,代表這兩個節點很相似。

段落之間用相似度構建邊,做成可視化,呈現給用戶一種直觀的感覺是可以的。但是他們把這種加入到召回文本中,讓大模型去回答,我個人認為這里不一定能夠提升效果。因為他們對文本召回的檢索器進行了微調,所以模型的效果肯定好,他們應該要做一個段落臨接節點的消融實驗,證明在段落節點之間添加相似邊是有效的。

MDQA 知識圖譜提示用于多文檔問答-AI.x社區

實驗部分:

MDQA 知識圖譜提示用于多文檔問答-AI.x社區

在這篇文章的源碼中,可以學到數據集的構建,KNN、TF-IDF、BM25等這些檢索器的使用。

該論文沒有給出召回率方面的評估結果,直接給出最終的結果。他們評估大模型回答問題答案的效果,采用的是大模型打分的方法,提示詞如下:

def prompt_eval():
    eval_prompt = """You are an expert professor specialized in grading whether the prediction to the question is correct or not according to the real answer.
    ==================
    For example:
    ==================
    Question: What company owns the property of Marvel Comics?
    Answer: The Walt Disney Company
    Prediction: The Walt Disney Company
    Return: 1
    ==================
    Question: Which constituent college of the University of Oxford endows four professorial fellowships for sciences including chemistry and pure mathematics?
    Answer: Magdalen College
    Prediction: Magdalen College.
    Return: 1
    ==================
    Question: Which year was Marvel started?
    Answer: 1939
    Prediction: 1200
    Return: 0
    ==================
    You are grading the following question:
    Question: {question}
    Answer: {answer}
    Prediction: {prediction}
    If the prediction is correct according to answer, return 1. Otherwise, return 0.
    Return: your reply can only be one number '0' or '1'
    """

    return eval_prompt

If the prediction is correct according to answer, return 1. Otherwise, return 0.

把大模型生成的答案與真實的答案一起提交給評估的模型,如果預測的結果是對的返回1,預測結果不對返回0。

評估結果的測試腳本 ??Pipeline/evaluation/eval.ipynb??:

MDQA 知識圖譜提示用于多文檔問答-AI.x社區

代碼解析

圖譜構建 

??Data-Collect/graph_construct.py??

def knn_graph(i_d, k_knn, embs, strategy='cos'):
    idx, d = i_d

    emb = embs[idx]

    # build a knn Graph
    if strategy == 'cos':
        sim = cosine_similarity(emb, emb)

    elif strategy == 'dp':
        sim = np.matmul(emb, emb.transpose(1, 0))

    # topk
    top_idx = np.argsort(-sim, axis=1)[:, 1:k_knn + 1]

    tail_nodes = np.arange(top_idx.shape[0]).repeat(k_knn) # flatten
    head_nodes = top_idx.reshape(-1)
    edges = [(node1, node2) for node1, node2 in zip(tail_nodes, head_nodes)]

    G = nx.DiGraph()
    G.add_edges_from(edges)

    return idx, G
上述代碼實現了,兩個節點根據它倆之間向量相似度構建邊。

檢索器微調 

MDQA 知識圖譜提示用于多文檔問答-AI.x社區

主要關注 橋接問題,因為比較問題不需要關注順序,先召回哪一個文本都行。針對橋接問題首先需要能夠對Q召回S1,然后再對 Q+S1 能夠召回S2。相對傳統的檢索器微調需要增加Q+S1能夠學會召回S2的過程。所以這一點,在下述的數據集構造中多了??q1_c1_enc???,在損失值的計算中多了 ??loss_fct(scores_2, target_2)??。

數據集:

MDQA 知識圖譜提示用于多文檔問答-AI.x社區

  • q_enc: 問題的嵌入向量
  • q_c1: 問題+第一個文本的嵌入向量
  • c1_enc、c2_enc:真實的第一個文本與第二個文本
  • n1_enc、n2_enc:從負樣本中隨機篩選出的兩個負樣本

損失函數:

def mp_loss(model, batch):
    embs = model(batch)
    loss_fct = CrossEntropyLoss(ignore_index = -1)

    c_embs = torch.cat([embs["c1_emb"], embs["c2_emb"]], dim = 0) # 2B x d
    n_embs = torch.cat([embs["n1_emb"].unsqueeze(1), embs["n2_emb"].unsqueeze(1)], dim = 1) # B*2*M*h

    scores_1 = torch.mm(embs["q_emb"], c_embs.t()) # B x 2B
    n_scores_1 = torch.bmm(embs["q_emb"].unsqueeze(1), n_embs.permute(0, 2, 1)).squeeze(1) # B x 2B
    scores_2 = torch.mm(embs["q_c1_emb"], c_embs.t()) # B x 2B
    n_scores_2 = torch.bmm(embs["q_c1_emb"].unsqueeze(1), n_embs.permute(0, 2, 1)).squeeze(1) # B x 2B

    # mask the 1st hop
    bsize = embs["q_emb"].size(0)
    scores_1_mask = torch.cat([torch.zeros(bsize, bsize), torch.eye(bsize)], dim=1).to(embs["q_emb"].device)
    scores_1 = scores_1.float().masked_fill(scores_1_mask.bool(), float('-inf')).type_as(scores_1)
    scores_1 = torch.cat([scores_1, n_scores_1], dim=1)
    scores_2 = torch.cat([scores_2, n_scores_2], dim=1)

    target_1 = torch.arange(embs["q_emb"].size(0)).to(embs["q_emb"].device)
    target_2 = torch.arange(embs["q_emb"].size(0)).to(embs["q_emb"].device) + embs["q_emb"].size(0)

    loss = loss_fct(scores_1, target_1) + loss_fct(scores_2, target_2)

    return loss
  • loss_fct(scores_1, target_1): 模型學會通過 Q 召回S1;
  • loss_fct(scores_2, target_2):模型學會通過 Q+S1 能夠召回S2;

上述的損失函數寫的挺復雜的,如果第一次看到這種檢索器的損失函數,應該會有很多同學看不懂。

關于檢索器微調損失值:這里的損失函數是 CrossEntropyLoss 與分類挺像的,把問題的向量與相關文本做乘法,得到的是問題的向量與相關文本的相似度的值。兩個向量做乘法得到的是這兩個向量相似度。 這個損失函數的就是讓正確文本對應的相似度的值足夠大,損失值才會小。

如果BGE檢索器的微調還不熟悉的話,也不用硬看上述代碼,時間充裕的話,可以先看懂BGE檢索器微調。transformers二次開發——(定義自己的數據加載器 模型 訓練器)bge模型微調流程 這是一個B站的視頻講解的BGE微調的,但是該視頻有一點遺憾的地方,在關鍵的損失值計算部分,該UP主講解錯,后來他也在評論區進行了回應。如果大家想深入了解BGE微調,進入 https://github.com/FlagOpen/FlagEmbedding 倉庫,找到23年10月的版本(新版本代碼太多了,舊版本代碼很簡潔),一步一步debug,后面自然就會懂。

為了防止我以后忘記,簡單寫幾句:

??scores_1 = torch.mm(embs["q_emb"], c_embs.t())??  把問題的向量與所有候選文本的向量做一個乘法。

??scores_1_mask = torch.cat([torch.zeros(bsize, bsize), torch.eye(bsize)], dim=1).to(embs["q_emb"].device)??? 這里使用了mask,把??c2_emd?? 給遮罩掉。(在看懂代碼前,我就想到了要遮罩c2_emb,然后發現他果然做了遮罩)

因為通過 q_emb 學會召回 c1_emb。通過 q_c1_emb 才應該學會召回c2_emb。

對于scores_1的損失函數而言,正確的 label 給了c1_emb,c2_emb自然就是錯誤。c2_emb會成為負樣本,這是不允許的,這樣會把 q_emb 與 c2_emb 的相似程度給拉遠了,這樣不行,最好的做法還是把 c2_emb 給遮罩掉。

對于 target_2 ??torch.arange(embs["q_emb"].size(0)).to(embs["q_emb"].device) + embs["q_emb"].size(0)?? 在label數值加的embs["q_emb"].size(0)是batch_size。

??score_1??的shape是 (batch_size, 2 x batch_size) 針對最后一個維度有2 x batch_size而言,前面一個batch_size是score_1,后面一個batch_size是score_2,所有target_2 的值相比 target_1 要再加 batch_size。

檢索器使用 

??KG-LLM-MDQA\Pipeline\retriever.py?? 大家可以看一下這個腳本中,在做向量召回的時候,使用的召回方法絕大多數都是TF-IDF,那這個言外之意就是前面檢索器的微調效果不好。那豈不是前面微調了半天的檢索器,白微調了。論文的實驗結果中,效果比較好的KGP_T5方法使用的檢索器 ??llm_retriever_KG_T5?? 也是用的 TF-IDF。

class KG_retriever(object):
    def __init__(self, k):
        self.k = k

    def retrieve(self, data, G):
        corpus = [c for _, c in data['title_chunks']]
        candidates_idx = list(range(len(corpus)))

        seed = data['question']
        retrieve_idxs = []

        prev_length = 0
        count = 0
        retrieve_num = [10, 5, 5, 5, 3, 2, 2, 2, 2, 2, 2]
        while len(retrieve_idxs) < self.k:
            idxs = tf_idf(seed, candidates_idx, corpus, k = retrieve_num[count], visited = retrieve_idxs)
            retrieve_idxs.extend(idxs[:max(0, self.k - len(retrieve_idxs))])

            candidates_idx = set(chain(*[list(G.neighbors(node)) for node in idxs]))
            candidates_idx = list(candidates_idx.difference(retrieve_idxs))

            if len(retrieve_idxs) == prev_length:
                break
            else:
                prev_length = len(retrieve_idxs)

            count += 1

        return [corpus[idx] for idx in retrieve_idxs], None, None, None

candidates_idx 候選的節點,利用 tf_idf 算法從候選節點中,找出新的候選節點。visited 表示已經訪問過的節點,已經訪問過的節點不再加入到新的候選節點中。如果新的候選節點為空,則停止節點召回。類似廣度優先搜索,一層一層地往下搜索。retrieve_num 表示每一層要篩選的節點數量,第一層多取一點,下面的幾層少選一點。

大模型檢索微調 

MDQA 知識圖譜提示用于多文檔問答-AI.x社區

MDQA 知識圖譜提示用于多文檔問答-AI.x社區

通過閱讀上述的提示詞,在微調大模型讓其學會根據問題生成相關支撐文本,再用生成的支撐文本做文本檢索召回。

論文名:Knowledge Graph Prompting for Multi-Document Question Answering

論文地址:https://arxiv.org/abs/2308.11730

源碼:https://github.com/YuWVandy/KG-LLM-MDQA

本文轉載自????AI悠閑區????,作者:jieshenai


收藏
回復
舉報
回復
相關推薦
国产精品久久久久久户外露出 | 91精品国产乱码久久久张津瑜| 久久丁香四色| 亚洲成人av一区二区| 国产伦精品一区二区| 亚洲天堂男人av| 国产美女精品视频国产| 欧美久久99| 亚洲毛片在线看| 想看黄色一级片| 国产传媒在线| 国产精品电影一区二区三区| 国产日韩欧美二区| 在线观看中文字幕网站| 亚洲网站视频| yellow中文字幕久久| 久久精品一卡二卡| 亚洲成人av观看| 亚洲一级片在线观看| 亚洲高清123| 黄色av免费观看| 久久丁香综合五月国产三级网站| 7777kkkk成人观看| 超碰手机在线观看| 怕怕欧美视频免费大全| 精品国产第一区二区三区观看体验| 北条麻妃av高潮尖叫在线观看| 五月花成人网| 综合久久综合久久| 日本不卡一区二区三区在线观看 | 亚洲欧美日韩精品久久亚洲区| 久国产精品视频| 久久sese| 欧美日韩在线免费观看| www.亚洲视频.com| 免费av网站在线看| 国产欧美日韩亚州综合| 精品高清视频| 刘玥91精选国产在线观看| 国内精品视频666| 国产精品露脸av在线| 69国产精品视频免费观看| 一区在线视频| 久久久久久久久久亚洲| 日韩欧美中文字幕视频| 性欧美欧美巨大69| 日韩中文字幕av| 国产传媒视频在线| 不卡在线一区二区| 中文字幕日韩欧美| 国产无遮挡在线观看| 精品国产91| 一色桃子一区二区| 欧美日韩生活片| 日韩大片在线播放| 一本色道久久加勒比精品| 一卡二卡三卡视频| 激情图片在线观看高清国产| 一区二区三区四区视频精品免费 | 国产精品v一区二区三区| 色妞久久福利网| 亚洲熟女毛茸茸| 欧美a级成人淫片免费看| 色先锋资源久久综合5566| 国产aaaaaaaaa| 国产精品久久久乱弄| 久久精品99无色码中文字幕| 黄色一级大片在线免费观看| 在线精品国产| 97在线视频免费播放| 日韩不卡视频在线| 久久久成人网| 国产精品视频区1| 国产乱人乱偷精品视频| 国产福利一区二区三区| 国产精品亚洲不卡a| 天天干免费视频| 久久精品亚洲国产奇米99| 麻豆亚洲一区| 在线视频三区| 一卡二卡三卡日韩欧美| 久久国产欧美精品| 九一在线视频| 国产精品一区二区果冻传媒| 电影午夜精品一区二区三区| 五月激情丁香婷婷| 久久aⅴ国产欧美74aaa| 亚洲综合色激情五月| 色综合视频在线| 国产欧美日韩在线| 2021国产视频| 中文字幕这里只有精品| 欧美精品一级二级| 大尺度做爰床戏呻吟舒畅| 国产欧美日韩视频在线| 久久国产精品亚洲| 亚洲久久在线观看| 国产自产高清不卡| 免费在线成人av| av网站在线免费看推荐| 狠狠躁夜夜躁人人爽天天天天97 | 麻豆一区产品精品蜜桃的特点| 亚洲二区精品| 国产在线播放91| 天堂av电影在线观看| 亚洲欧洲成人精品av97| 无码人妻h动漫| 久久视频社区| 在线观看欧美日韩| 国产精品111| 精品一区二区三区的国产在线播放| 国产精品久久亚洲7777| 网友自拍视频在线| 欧美色另类天堂2015| 欧美性猛交乱大交| 精品久久久久久久久久久下田| 久久99久久99精品免观看粉嫩| 91视频在线视频| 成人免费视频视频在线观看免费| 亚洲最大免费| 成人日韩精品| 日韩av在线免费观看| 青娱乐国产在线| 九九热在线视频观看这里只有精品| 久草精品电影| av福利导福航大全在线| 欧美一区二区在线观看| jizzjizzjizz国产| 久久精品人人| 久久偷看各类wc女厕嘘嘘偷窃| 在线看女人毛片| 欧美二区乱c少妇| 特级西西人体高清大胆| 久久综合网络一区二区| 久久99精品久久久久久秒播放器 | 欧美日韩国产区| 亚洲精品成人在线播放| 日韩一级毛片| 国产精品普通话| 国产高清免费av在线| 日韩欧美一区二区在线| 醉酒壮男gay强迫野外xx| 亚洲国内欧美| 国产综合欧美在线看| 黄色污污视频在线观看| 精品国产一区二区三区不卡| 欧美卡一卡二卡三| 国产成人午夜精品影院观看视频 | 欧美日韩在线电影| 亚洲av成人无码久久精品 | 中文字幕第22页| 国产精品久久天天影视| 成人免费网站在线| 在线观看免费视频你懂的| 欧美一区二区三区在线观看 | 永久免费av在线| 欧美午夜片在线看| 任你操精品视频| 久久国产精品99久久久久久老狼 | 日韩一区二区精品| 手机在线免费看片| 国产成a人无v码亚洲福利| 精品一区二区三区无码视频| 国产福利资源一区| 性日韩欧美在线视频| 欧洲免费在线视频| 欧美私人免费视频| 91香蕉视频在线播放| 国产成人精品亚洲777人妖| 大西瓜av在线| 免费欧美一区| 国产欧美欧洲在线观看| a级片国产精品自在拍在线播放| 日韩欧美二区三区| 日韩美女黄色片| 国产人妖乱国产精品人妖| 国产美女视频免费看| 好看不卡的中文字幕| 免费成人看片网址| 亚州欧美在线| 国外成人性视频| 天天av综合网| 欧美浪妇xxxx高跟鞋交| 国产一级淫片a| 欧美激情综合网| 亚洲妇女无套内射精| 亚洲影院在线| 中文字幕一区二区三区5566| 国产调教精品| 国产精品老女人精品视频| 午夜伦理大片视频在线观看| 亚洲欧美国产精品专区久久| 中文字幕一区二区三区免费看| 樱桃视频在线观看一区| 男生裸体视频网站| 极品少妇一区二区| 国产素人在线观看| 欧美超碰在线| 蜜桃精品久久久久久久免费影院| 伊人久久精品| 欧美在线亚洲一区| 成人免费网站在线观看视频| 亚洲免费一在线| 超碰在线人人干| 欧洲av在线精品| 日本在线小视频| 中文字幕综合网| 9.1成人看片免费版| 国产美女精品一区二区三区| 国产激情在线观看视频| 国内在线观看一区二区三区| 亚洲午夜精品一区二区| 亚洲精品亚洲人成在线| 99在线观看| 日韩三级一区| 国产精品91一区| 理论不卡电影大全神| 欧美乱人伦中文字幕在线| 国产乱理伦片a级在线观看| 亚洲成人1234| 国产黄频在线观看| 欧美日韩在线电影| 亚洲永久精品一区| 色综合色狠狠综合色| 精品无码av在线| 亚洲男人都懂的| 日本 欧美 国产| 欧美激情在线看| 伊人网伊人影院| 久久夜色精品国产欧美乱极品| 国偷自产av一区二区三区麻豆| 麻豆精品久久久| 激情婷婷综合网| 久久夜色精品| 欧美日韩一区二区在线免费观看| 亚洲日本视频| 国产精品国产亚洲精品看不卡 | 男女午夜激情视频| 99国产精品99久久久久久粉嫩| 无颜之月在线看| 欧美va亚洲va日韩∨a综合色| 中文字幕av导航| 婷婷久久综合| 国产精品夜夜夜爽张柏芝| 久久人人88| 色综合网色综合| 久久先锋影音| av在线com| 国产精品va| 欧美激情亚洲天堂| 欧美伊人影院| 日本福利视频一区| 一本色道精品久久一区二区三区 | 久久精品一区二区三区中文字幕 | 国产成人无码精品久在线观看| 亚洲国产精品视频| 日韩激情在线播放| 黑人巨大精品欧美一区二区一视频| 日韩免费不卡视频| 欧美日韩在线第一页| 超碰在线免费97| 欧美卡1卡2卡| 亚洲av永久无码国产精品久久| 日韩精品一区二区三区四区视频| 成人免费视频国产| 日韩精品一区二区视频| 国产午夜视频在线观看| 中文字幕一精品亚洲无线一区| 免费观看在线黄色网| 久久99久久99精品中文字幕| 超碰在线97国产| 55夜色66夜色国产精品视频| 另类中文字幕国产精品| 成人中文字幕在线观看| caoporn成人| 欧美一级二级三级| 亚洲精品91| 九色自拍视频在线观看| 日韩av一区二区在线影视| 欧美性猛交xxxx乱大交91| 成人综合激情网| 性欧美精品中出| 亚洲视频每日更新| 日韩成人免费观看| 欧美午夜寂寞影院| 亚洲av少妇一区二区在线观看| 国产视频综合在线| 黄色网在线免费看| 91福利视频在线观看| 少妇精品视频在线观看| 国产乱码精品一区二区三区不卡| 欧美猛男同性videos| 特色特色大片在线| 亚洲影视在线| 性感美女一区二区三区| 国产色一区二区| 中文字幕第28页| 欧美视频精品在线| 午夜福利一区二区三区| 精品国产一区二区三区久久狼5月| 999福利在线视频| 91欧美精品成人综合在线观看| 日韩av网站在线免费观看| 亚洲v国产v| 亚洲男女自偷自拍| 天天爽夜夜爽视频| 国产精品色一区二区三区| 亚洲激情视频一区| 在线观看91av| 国产视频精品久久| 91精品国产91久久久久久吃药| avtt久久| 亚洲一区二区在| 日日夜夜免费精品| 亚洲av成人无码一二三在线观看| 国产精品久久久久久福利一牛影视| 国产情侣自拍av| 精品美女一区二区三区| 日本在线看片免费人成视1000| 欧美有码在线视频| 成人av综合网| 日韩精品免费一区| 精品一区二区精品| 国产传媒视频在线| 欧美视频在线一区二区三区| 欧美美乳在线| 欧美一级片免费在线| 动漫av一区| 激情成人开心网| 国产美女在线观看一区| 一二三四在线观看视频| 欧美性受xxxx黑人xyx| 秋霞av在线| 欧美综合第一页| 伊人久久大香线蕉无限次| 1024av视频| 久久综合视频网| 国产又大又黄视频| 亚洲欧美一区二区三区久久| 咪咪网在线视频| 久久久久久国产精品免费免费| 亚洲激情不卡| 亚洲av无码一区二区三区网址| 精品动漫一区二区| 十九岁完整版在线观看好看云免费| 亚州av一区二区| 天堂在线精品| 国产精品97在线| 国产亚洲一区二区三区在线观看| 69xxxx国产| 色婷婷av一区二区三区久久| 青青在线精品| 蜜臀av性久久久久蜜臀av| 国产成人精品在线看| 日本三级午夜理伦三级三| 亚洲精品成人久久久| 欧美办公室脚交xxxx| 欧美一区二区综合| 免费日本视频一区| 永久免费看mv网站入口| 日韩一区二区三区视频在线| 少妇视频在线| 久久久久久艹| 男女性色大片免费观看一区二区 | 天天免费综合色| 可以在线观看的av| 国产日韩精品一区二区| 欧美在线网址| 日本japanese极品少妇| 91成人免费网站| 超碰在线caoporn| 好吊色欧美一区二区三区四区| 亚洲欧美日韩精品一区二区| 女人十八毛片嫩草av| 91精品国产一区二区| 182在线视频观看| 日本免费高清一区| 久久精品国产精品亚洲红杏| 久久久国产精品黄毛片| 亚洲图片欧美日产| 日本久久伊人| 国产a视频免费观看| 亚洲人午夜精品天堂一二香蕉| 日本加勒比一区| 国产精品青青在线观看爽香蕉 | 亚洲视频在线观看一区二区三区| 中文字幕亚洲成人| 女人18毛片水真多18精品| 国产精品jizz在线观看麻豆| 亚洲综合婷婷| 在线观看福利片| 欧美一区二区免费| 都市激情综合| 蜜桃视频一区二区在线观看| 久久久久久久久久电影| 精品久久无码中文字幕| 国产成人久久久精品一区| 欧美精品一卡| 91成人精品一区二区| 亚洲国产精久久久久久久|