0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

LlamaIndex:面向QA系統(tǒng)的全新文檔摘要索引

深度學(xué)習(xí)自然語言處理 ? 來源:ChallengeHub ? 2023-05-12 09:57 ? 次閱讀

在這篇博文中,我們介紹了一種全新的 LlamaIndex 數(shù)據(jù)結(jié)構(gòu):文檔摘要索引。我們描述了與傳統(tǒng)語義搜索相比,它如何幫助提供更好的檢索性能,并通過一個(gè)示例進(jìn)行了介紹。

1

背景

大型語言模型 (LLM) 的核心場景之一是對(duì)用戶自己的數(shù)據(jù)進(jìn)行問答。為此,我們將 LLM 與“檢索”模型配對(duì),該模型可以對(duì)知識(shí)語料庫執(zhí)行信息檢索,并使用 LLM 對(duì)檢索到的文本執(zhí)行響應(yīng)合成。這個(gè)整體框架稱為檢索增強(qiáng)生成。

今天大多數(shù)構(gòu)建 LLM 支持的 QA 系統(tǒng)的用戶傾向于執(zhí)行以下某種形式的操作:

  1. 獲取源文檔,將每個(gè)文檔拆分為文本塊
  2. 將文本塊存儲(chǔ)在向量數(shù)據(jù)庫中
  3. 在查詢期間,通過嵌入相似性和/或關(guān)鍵字過濾器來檢索文本塊。
  4. 執(zhí)行響應(yīng)并匯總答案

由于各種原因,這種方法提供了有限的檢索性能。

2

現(xiàn)有方法的局限性

使用文本塊進(jìn)行嵌入檢索有一些限制。

  • 文本塊缺乏全局上下文。通常,問題需要的上下文超出了特定塊中索引的內(nèi)容。
  • 仔細(xì)調(diào)整 top-k / 相似度分?jǐn)?shù)閾值。假設(shè)值太小,你會(huì)錯(cuò)過上下文。假設(shè)值值太大,并且成本/延遲可能會(huì)隨著更多不相關(guān)的上下文而增加,噪音增加。
  • 嵌入并不總是為問題選擇最相關(guān)的上下文。嵌入本質(zhì)上是在文本和上下文之間分別確定的。

添加關(guān)鍵字過濾器是增強(qiáng)檢索結(jié)果的一種方法。但這也帶來了一系列挑戰(zhàn)。我們需要手動(dòng)或通過 NLP 關(guān)鍵字提取/主題標(biāo)記模型為每個(gè)文檔充分確定合適的關(guān)鍵字。此外,我們還需要從查詢中充分推斷出正確的關(guān)鍵字。

3

文檔摘要索引

e2c969b6-f062-11ed-90ce-dac502259ad0.png



在LlamaIndex中提出了一個(gè)新索引,它將為每個(gè)文檔提取/索引非結(jié)構(gòu)化文本摘要。該索引可以幫助提高檢索性能,超越現(xiàn)有的檢索方法。它有助于索引比單個(gè)文本塊更多的信息,并且比關(guān)鍵字標(biāo)簽具有更多的語義。它還允許更靈活的檢索形式:我們可以同時(shí)進(jìn)行 LLM 檢索和基于嵌入的檢索。

4

怎么運(yùn)行的

在構(gòu)建期間,我們提取每個(gè)文檔,并使用 LLM 從每個(gè)文檔中提取摘要。我們還將文檔拆分為文本塊(節(jié)點(diǎn))。摘要和節(jié)點(diǎn)都存儲(chǔ)在我們的文檔存儲(chǔ)抽象中。我們維護(hù)從摘要到源文檔/節(jié)點(diǎn)的映射。

在查詢期間,我們使用以下方法根據(jù)摘要檢索相關(guān)文檔以進(jìn)行查詢:

  • 基于 LLM 的檢索:我們向 LLM 提供文檔摘要集,并要求 LLM 確定哪些文檔是相關(guān)的+它們的相關(guān)性分?jǐn)?shù)。
  • 基于嵌入的檢索:我們根據(jù)摘要嵌入相似性(使用 top-k 截止值)檢索相關(guān)文檔。

請(qǐng)注意,這種檢索文檔摘要的方法(即使使用基于嵌入的方法)不同于基于嵌入的文本塊檢索。文檔摘要索引的檢索類檢索任何選定文檔的所有節(jié)點(diǎn),而不是返回節(jié)點(diǎn)級(jí)別的相關(guān)塊。

存儲(chǔ)文檔的摘要還可以實(shí)現(xiàn)基于 LLM 的檢索。我們可以先讓 LLM 檢查簡明的文檔摘要,看看它是否與查詢相關(guān),而不是一開始就將整個(gè)文檔提供給 LLM。這利用了 LLM 的推理能力,它比基于嵌入的查找更先進(jìn),但避免了將整個(gè)文檔提供給 LLM 的成本/延遲

5

想法

帶有摘要的文檔檢索可以被認(rèn)為是語義搜索和所有文檔的強(qiáng)力摘要之間的“中間地帶”。我們根據(jù)與給定查詢的摘要相關(guān)性查找文檔,然后返回與檢索到的文檔對(duì)應(yīng)的所有節(jié)點(diǎn)。

我們?yōu)槭裁匆@樣做?通過在文檔級(jí)別檢索上下文,這種檢索方法為用戶提供了比文本塊上的 top-k 更多的上下文。但是,它也是一種比主題建模更靈活/自動(dòng)化的方法;不再擔(dān)心自己的文本是否有正確的關(guān)鍵字標(biāo)簽!

6

例子

讓我們來看一個(gè)展示文檔摘要索引的示例,其中包含關(guān)于不同城市的維基百科文章。

本指南的其余部分展示了相關(guān)的代碼片段。您可以在此處找到完整的演練(這是筆記本鏈接)。

我們可以構(gòu)建GPTDocumentSummaryIndex一組文檔,并傳入一個(gè)ResponseSynthesizer對(duì)象來合成文檔的摘要。

from llama_index import(
SimpleDirectoryReader,
LLMPredictor,
ServiceContext,
ResponseSynthesizer
)
from llama_index.indices.document_summary import GPTDocumentSummaryIndex
from langchain.chat_models import ChatOpenAI

#load docs,define service context
...

#build the index
response_synthesizer=ResponseSynthesizer.from_args(response_mode="tree_summarize",use_async=True)
doc_summary_index=GPTDocumentSummaryIndex.from_documents(
city_docs,
service_context=service_context,
response_synthesizer=response_synthesizer
)

建立索引后,我們可以獲得任何給定文檔的摘要:

summary=doc_summary_index.get_document_summary("Boston")

接下來,我們來看一個(gè)基于 LLM 的索引檢索示例。

from llama_index.indices.document_summary import DocumentSummaryIndexRetriever

retriever=DocumentSummaryIndexRetriever(
doc_summary_index,
#choice_select_prompt=choice_select_prompt,
#choice_batch_size=choice_batch_size,
#format_node_batch_fn=format_node_batch_fn,
#parse_choice_select_answer_fn=parse_choice_select_answer_fn,
#service_context=service_context
)
retrieved_nodes=retriever.retrieve("What are the sports teams in Toronto?")
print(retrieved_nodes[0].score)
print(retrieved_nodes[0].node.get_text())The retriever will retrieve asetof relevant nodesfora given index.`

請(qǐng)注意,除了文檔文本之外,LLM 還返回相關(guān)性分?jǐn)?shù):

8.0
Toronto((listen)t?-RON-toh;locally[t???????]or[?t?????])is the capital city of the Canadian province of Ontario.With a recorded population of 2,794,356in2021,it is the most populous cityinCanada...

高級(jí)api

query_engine=doc_summary_index.as_query_engine(
response_mode="tree_summarize",use_async=True
)
response=query_engine.query("What are the sports teams in Toronto?")
print(response)

底層api

#use retriever as part of a query engine
from llama_index.query_engine import RetrieverQueryEngine

#configure response synthesizer
response_synthesizer=ResponseSynthesizer.from_args()

#assemble query engine
query_engine=RetrieverQueryEngine(
retriever=retriever,
response_synthesizer=response_synthesizer,
)

#query
response=query_engine.query("What are the sports teams in Toronto?")
print(response)

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4671

    瀏覽量

    67770
  • 語言模型
    +關(guān)注

    關(guān)注

    0

    文章

    487

    瀏覽量

    10201
  • nlp
    nlp
    +關(guān)注

    關(guān)注

    1

    文章

    481

    瀏覽量

    21935

原文標(biāo)題:LlamaIndex :面向QA 系統(tǒng)的全新文檔摘要索引

文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    新文檔控件軟件!

    我們通過對(duì)在線文檔編輯的各種解決方案進(jìn)行分析,列出了以下幾種方案: 基于WebOFFICE API這是一種新興起來的網(wǎng)頁上在線編輯瀏覽Office文檔的方式,目前全世界只有
    發(fā)表于 02-11 16:52

    TouchGFX 4.15是否可以使用有效的鏈接更新文檔?

    是否可以使用有效的鏈接更新文檔。另一種方法是刪除超鏈接。這不會(huì)真正有幫助,但它會(huì)減少惡化。
    發(fā)表于 01-13 07:56

    請(qǐng)問能提供下K210 datasheet與standloneSDK最新文檔嗎?

    請(qǐng)問能提供下K210 datasheet(包含寄存器的那個(gè))與standloneSDK最新文檔(官網(wǎng)下的文檔與github上的源碼有些不一樣)嗎?
    發(fā)表于 09-13 06:59

    基于詞頻統(tǒng)計(jì)的多文檔自動(dòng)摘要生成方案

    文檔自動(dòng)摘要技術(shù)可以向用戶提供一個(gè)簡潔、全面的摘要信息,因此研究多文檔自動(dòng)摘要技術(shù)具有很重要的意義。本文提出了一種上下文敏感的基于詞頻統(tǒng)計(jì)
    發(fā)表于 12-18 16:58 ?12次下載

    電位器整定的定時(shí)器專用電路QA640896/QA640892

    電位器整定的定時(shí)器專用電路QA640896/QA640892B 摘要QA640896和QA640892B是臺(tái)灣宏太科技研制的定時(shí)器專用i
    發(fā)表于 06-03 15:36 ?29次下載

    基于知識(shí)圖譜的QA系統(tǒng)研究

    QA系統(tǒng)用于回答人們以自然語言形式提出的問題,其在互聯(lián)網(wǎng)、通信及醫(yī)療等領(lǐng)域獲得顯著的成功。其中,IBM研發(fā)的Watson系統(tǒng)就在與人類的答題比賽中獲勝并首次獲得100萬美金獎(jiǎng)勵(lì);蘋果的Siri
    發(fā)表于 10-10 14:59 ?0次下載
    基于知識(shí)圖譜的<b class='flag-5'>QA</b><b class='flag-5'>系統(tǒng)</b>研究

    探討面向駕駛員信息及娛樂系統(tǒng)全新嵌入式MPU產(chǎn)品解決方案

    探討面向駕駛員信息及娛樂系統(tǒng)全新嵌入式MPU產(chǎn)品解決方案
    發(fā)表于 10-31 14:01 ?10次下載
    探討<b class='flag-5'>面向</b>駕駛員信息及娛樂<b class='flag-5'>系統(tǒng)</b>的<b class='flag-5'>全新</b>嵌入式MPU產(chǎn)品解決方案

    基于HBase行鍵面向海量交通數(shù)據(jù)的HBase時(shí)空索引

    針對(duì)HBase無法直接建立時(shí)空索引所帶來的交通數(shù)據(jù)查詢性能問題,基于HBase行鍵設(shè)計(jì)了面向海量交通數(shù)據(jù)的HBase時(shí)空索引。首先利用Geohash降維方法將二維空間位置數(shù)據(jù)轉(zhuǎn)化為一維編碼,再與時(shí)間
    發(fā)表于 12-06 15:23 ?0次下載
    基于HBase行鍵<b class='flag-5'>面向</b>海量交通數(shù)據(jù)的HBase時(shí)空<b class='flag-5'>索引</b>

    基于網(wǎng)頁排名算法面向論文索引排名的啟發(fā)式方法

    為了提高學(xué)術(shù)論文檢索的精準(zhǔn)性,進(jìn)而為學(xué)術(shù)研究提供便利,提出了針對(duì)學(xué)術(shù)論文檢索問題的排名策略。首先,介紹了基于網(wǎng)頁排名算法面向論文索引排名的啟發(fā)式方法,其中利用Hash索引技術(shù)有效地減少了稀疏矩陣計(jì)算
    發(fā)表于 12-30 17:00 ?0次下載

    基于布谷鳥搜索算法與多目標(biāo)函數(shù)的多文檔摘要方法

    為最大化生成摘要的信息量,提出一種基于布谷鳥搜索(CS)算法與多目標(biāo)函數(shù)的多文檔摘要方法。對(duì)多文檔數(shù)據(jù)進(jìn)行預(yù)處理,通過句子分割、分詞、移除停用詞和詞干化將
    發(fā)表于 03-30 11:44 ?11次下載
    基于布谷鳥搜索算法與多目標(biāo)函數(shù)的多<b class='flag-5'>文檔</b><b class='flag-5'>摘要</b>方法

    VectorCAST/QA如何在LiteOS-A內(nèi)核上實(shí)現(xiàn)系統(tǒng)白盒測試

    本文將通過演示實(shí)例介紹VectorCAST/QA如何在LiteOS-A內(nèi)核上實(shí)現(xiàn)系統(tǒng)白盒測試,獲取被測程序的代碼覆蓋信息。具體實(shí)現(xiàn)在支持sudo超級(jí)用戶模式的Ubuntu 18.04(或以上)版本中
    的頭像 發(fā)表于 06-26 16:21 ?9124次閱讀
    VectorCAST/<b class='flag-5'>QA</b>如何在LiteOS-A內(nèi)核上實(shí)現(xiàn)<b class='flag-5'>系統(tǒng)</b>白盒測試

    面向關(guān)系數(shù)據(jù)庫的智能索引調(diào)優(yōu)方法

    面向關(guān)系數(shù)據(jù)庫的智能索引調(diào)優(yōu)方法 ? 來源:《軟件學(xué)報(bào)》?,作者邱 濤等 ? 摘 要:數(shù)據(jù)庫索引是關(guān)系數(shù)據(jù)庫系統(tǒng)實(shí)現(xiàn)快速查詢的有效方式之一.智能索引
    的頭像 發(fā)表于 02-21 17:31 ?1247次閱讀
    <b class='flag-5'>面向</b>關(guān)系數(shù)據(jù)庫的智能<b class='flag-5'>索引</b>調(diào)優(yōu)方法

    摘要模型理解或捕獲輸入文本的要點(diǎn)

    輸入文本的要點(diǎn); ? (2)模型過度依賴語言模型,生成流暢但不充分的單詞。 ? 在本文研究中,提出了一個(gè)忠實(shí)增強(qiáng)摘要模型(FES),旨在解決這兩個(gè)問題,提高抽象摘要的忠實(shí)度。對(duì)于第一個(gè)問題,本文使用問答(QA)來檢查編碼器是否完
    的頭像 發(fā)表于 11-01 11:37 ?918次閱讀

    什么是LlamaIndexLlamaIndex數(shù)據(jù)框架的特點(diǎn)和功能

    LlamaIndex是一個(gè)數(shù)據(jù)框架,用于讓基于LLM的應(yīng)用程序攝取、結(jié)構(gòu)化和訪問私有或領(lǐng)域特定的數(shù)據(jù)。它提供Python和Typescript版本。
    的頭像 發(fā)表于 01-05 11:08 ?8248次閱讀
    什么是<b class='flag-5'>LlamaIndex</b>?<b class='flag-5'>LlamaIndex</b>數(shù)據(jù)框架的特點(diǎn)和功能

    微軟計(jì)劃在搜索引擎Bing中引入AI摘要功能

    近期,科技界傳來新動(dòng)向,微軟緊隨百度與谷歌的步伐,宣布計(jì)劃在其搜索引擎Bing中引入先進(jìn)的AI摘要功能,旨在為用戶帶來更加智能、豐富的搜索體驗(yàn)。
    的頭像 發(fā)表于 07-26 14:23 ?370次閱讀